Added FreeBSD portmaster package_method
Fix filestat test pass condition.

Pass when all conditions are met, not when any condition is met.
Redmine #2691: missing group name spec for some platforms in test

The 10_files/02_maintain/205.cf has a test_perms body which sets the
owner and group of the test file by "root" user and a group name,
then the rest of the test run compares the UID and GID numbers to
verify the test. The group names are defined for either linux or freebsd,
but no other platforms.

In the absence of a specification, the file created by the test takes the
default group of the process owner, which for root is "sys" GID 3 on
HP-UX 11.11, causing the test to show "0 3" instead of "0 0" and thus
failing.

This commit adds correct GID 0 group names for hpux, solaris, netbsd,
openbsd, darwin, aix, and cray platforms.

The "sys" group for Cray:
   http://docs.cray.com/books/S-2311-22/html-S-2311-22/z1055890212.html

The "system" group for AIX:
   http://publib.boulder.ibm.com/tividd/td/user_admin/GC32-0661-01/en_US/HTML/admusref34.htm

I was unable to find documentation for unix_sv, sco, qnx, dragonfly, or
vmware platforms.

With this update, the test now passes on HP-UX:

mphp1# ./testall --agent=/var/cfengine/bin/cf-agent 10_files/02_maintain/205.cf
======================================================================
Testsuite started at May 21:19:06
----------------------------------------------------------------------
Total tests: 1

./10_files/02_maintain/205.cf Pass

======================================================================
Testsuite finished at May 21:19:24 (18 seconds)

Passed tests: 1
Failed tests: 0
Failed to crash tests: 0
Skipped tests: 0
mphp1# uname -a
HP-UX mphp1 B.11.11 U 9000/785 2007997283 unlimited-user license
mphp1#
Redmine #2693: some 10_files tests check for unpromised gid numbers

Some platforms, such as HP-UX, do not have root in group 0 by default.
Certain tests expect a string showing mode, nlinks, uid, gid, and size
to show a uid and gid of zero for the test file, but without promising
the GID the file defaults to root's primary group. On HP-UX this is 3,
causing the test to fail.

The tests have been updated to promise the same mode, uid, and gid that
are expected in the "expect" string for the test file that is created.
Redmine #2702: add missing uid/gid name mapping for hpux & aix

Tests 01_vars/02_functions/001.cf and 002.cf fail on HP-UX and AIX
because the hard classes don't cover the uid and gid mappings for
those platforms. This commit adds the necessary information to
allow the tests to pass on those two platforms.

HP-UX information was gathered from and tested on my own HP-UX
system, and for AIX see the following links for sample passwd
and group files:

http://pic.dhe.ibm.com/infocenter/aix/v6r1/index.jsp?topic=%2Fcom.ibm.aix.security%2Fdoc%2Fsecurity%2Fpasswords_etc_passwd_file.htm

http://www.rootunix.org/AIX/migrate.txt
Redmine #2704: fix canonify issue with negative signed chars

On HP-UX 11.11, the "isalnum()" call expects a range of values from
-1 to 255. However the range of a signed char is -127 to 127, and
when an out-of-range negative number is passed to isalnum() on this
platform, the results in the case of the Yen symbol in acceptance
test 01_vars/02_functions/007.cf, with a signed char value of -91,
isalnum() returns "2" which is taken to mean that the Yen symbol
is alphanumeric.

By casting to "unsigned char" before the cast to "int" for the call,
the "-91" value is converted to a valid character set value of 165,
which is properly handled by isalnum() and thus allows the test to
pass.
Fix race condition and file permissions in file editing.

Previously the original was removed and then the edited file was
renamed, leaving a small timeframe where the file did not exist, which
can lead to bad situations. Fixed by leaving the file in place until
rename is called, which is atomic on all POSIX platforms.

Also make sure all permissions, including ACLs and SELinux security
contexts, are preserved when making a copy of the original file.

Fixes issue 2545.
Merge pull request #698 from kacfengine/fileCopyRaceFix

Fix race condition and file permissions in file editing.
Check extended attributes supported status also when setting them.

This should not be necessary, since we already checked when getting
them. However, fakeroot seems to return this occasionally when running
tests, so better to check both times.

Addition to issue 2545.
Remove redundant SELinux code.

This is covered in the CopyFilePermissionsDisk() function, and should
have been part of commit a3f1a964ad5e079f8a.

Addition to issue 2545.
Merge pull request #699 from kacfengine/fakerootFix

Fakeroot fix
Merge pull request #681 from mvpel/redmine_2704

Redmine #2704: fix canonify issue with negative signed chars
Merge pull request #679 from mvpel/redmine_2702

Redmine #2702: add missing uid/gid name mapping for hpux & aix
Merge pull request #677 from mvpel/redmine_2693

Redmine #2693: some 10_files tests check for unpromised gid numbers
Merge pull request #656 from kacfengine/filestatTest

Fix filestat test pass condition.
rename uniq() to unique() everywhere
Merge pull request #703 from tzz/tzz/uniq-rename-to-unique

rename uniq() to unique() everywhere
Ensure policy validated marker files are generated.

Close #2659, #2694
Change 'This promise has already been verified' message from verbose to debug
NULL-proof ScopeGet

This arised when function regarray was calling ScopeGet with a NULL pointer,
resulting in a segfault. We have as a rule agreed that this is an error on
the caller side, but since we are getting close to the release, I don't want
to risk additional segfaults due to careless callers. Either way, ScopeGet is
marked for deprecation.