Add a missing license banner and fix a typo in Makefile comment.
Introduce a new helper: readlink_proc_pid_fd().

This helper will be used also by CARE.
Initial import of CARE v2.0.

This is a complete rewrite of CARE.
care: Fix how the prefix used in the archive is computed.

Before this patch, the full pathname was used as a prefix:

    $ care -o /tmp/foo.tar true
    $ tar -tf /tmp/foo.tar
    [...]
    /tmp/foo/rootfs/bin/
    /tmp/foo/rootfs/bin/true
    /tmp/foo/rootfs/lib64/
    /tmp/foo/rootfs/lib64/ld-linux-x86-64.so.2
    /tmp/foo/rootfs/lib64/ld-2.3.4.so
    [...]
    /tmp/foo/re-execute.sh
    /tmp/foo/README.txt
    /tmp/foo/proot

Now:

    $ care -o /tmp/foo.tar true
    $ tar -tf /tmp/foo.tar
    [...]
    foo/rootfs/bin/
    foo/rootfs/bin/true
    foo/rootfs/lib64/
    foo/rootfs/lib64/ld-linux-x86-64.so.2
    foo/rootfs/lib64/ld-2.3.4.so
    [...]
    foo/re-execute.sh
    foo/README.txt
    foo/proot

Reported-by: Antoine MOYNAULT <antoine.moynault@st.com>
care: Attach the archive destructor once it is fully created.

This avoids a lot of pointless messages emitted by the finalization
code.  Before ("test" does not exist):

    care error: can't open archive '/test/foo.tar': Failed to open '/test/foo.tar'
     warning: can't archive 're-execute.sh'
     warning: can't archive 'README.txt'
     warning: can't archive 'proot'
     info: ----------------------------------------------------------------------
     info: If the execution didn't go as expected: search for "conceal" in `care -h`.
     info: CARE output: /test/foo.tar
    care warning: can't initialize the care extension
    fatal error: see `care --help` or `man care`.

Now:

    care error: can't open archive '/test/foo.tar': Failed to open '/test/foo.tar'
    care warning: can't initialize the care extension
    fatal error: see `care --help` or `man care`.
Make ptrace/seccomp even more portable on Ubuntu.

The seccomp-filter feature was merged into the Ubuntu kernel before
being accepted upstream (resp. Linux 3.2 & Linux 3.5).  At that time,
PTRACE_EVENT_SECCOMP was defined to 8 on Ubuntu, but it was defined to
7 by upstream.  Today, we have to support both values at the same time
because PRoot might be built with the old value but ran on a kernel
that supports only the new one, or vice versa.

Reported-by:  Maxence Dalmais (Maxired) maxired@gmail.com
Prepare release v3.2.1.
Merge tag 'v3.2.1' into next
Remove use of *at syscalls, for the sake of portability.

*at syscalls require Linux >= 2.6.16 and Glibc >= 2.4, whereas PRoot
is supposed to work on any Linux 2.6 systems.
care: Preserve argument quoting when re-executing an alternate command.

Assuming a CARE archive was created this way:

    $ care echo 'A    test'
    [...]
    A    test
    [...]

Argument quoting is preserved when re-executing it as-is:

    $ ./re-execute.sh
    A    test

However, it was not the case when specifying an alternate command:

    $ ./re-execute.sh echo 'Another    test'
    Another test

This commit fixes this bug:

    $ ./re-execute.sh echo 'Another    test'
    Another    test

Fix-suggested-by: Christophe GUILLON <christophe.guillon@st.com>
Fix CARE user manual.
Fix CARE user manual.
care: Use "gnutar" format instead of "pax_restricted".

The previous format used to emit warnings about UTF-8 characters in
path names:

    care warning: can't write header for '/tmp/cédric': Can't translate pathname 'care-131122143632/rootfs/tmp/cédric' to UTF-8
fake_id0: improve (r|e|s)(u|g)id support

The extension is now tracking (real, effective and saved) user and group ids.

This commit allows to run samba4 configure succefully:

Before
  $ proot -w samba-4.1.0 -0 /bin/sh configure
  [...]
  Checking whether Linux should use 32-bit credential calls                                       : not found
  Checking whether we can use Linux thread-specific credentials                                   : not found
  [...]
  Checking whether setuidx is available : samba-4.1.0/source3/wscript:997: error: the configuration failed (see 'samba-4.1.0/bin/config.log')

After
  $ proot -w samba-4.1.0 -0 /bin/sh configure
  [...]
  Checking whether Linux should use 32-bit credential calls                                       : not found
  Checking whether we can use Linux thread-specific credentials                                   : ok
  [...]
  'configure' finished successfully
care: use "cpio" format by default instead of "tar" format.

Technically, "tar" format does not support non-ordered archive.  For
examples, it is possible to create a tar archive that can't be fully
extractable:

    $ mkdir a
    $ touch foo
    $ chmod -w a
    $ tar -cf test.tar a foo

    $ chmod +w a
    $ touch a/b
    $ chmod -w a
    tar -rf test.tar a/b

    $ tar -tf test.tar
    a/
    foo
    a/b

    $ tar -xf test.tar
    tar: a/b: Cannot open: Permission denied
    tar: Exiting with failure status due to previous errors

Sadly, such "tar" archive can't be re-ordered in-place with libarchive:

    The library is inherently stream-oriented; readers serially iterate
    through the archive, writers serially add things to the archive.  In
    particular, note that there is currently no built-in support for
    random access nor for in-place modification.

    -- man 3 libarchive
care: Make licences banner customizable at build time.

This banner must contain all licenses from all libraries when building
care statically (the default).
care: Import first draft of the CLI stylesheet.
Search the initial command in "." if it contains at least one '/'.

This makes PRoot command lookup compatible with other shells (bash,
tcsh, ...).

Before:

    $ proot -w / bin/echo OK
    proot warning: 'bin/echo' not found (root = /, cwd = /, $PATH=[...])
    proot info: to execute a local program, use the './' prefix, for example: ./bin/echo
    fatal error: see `proot --help` or `man proot`.

Now:

    $ proot -w / bin/echo OK
    OK

Reported-by: Antoine MOYNAULT <antoine.moynault@st.com>
care: Minor changes on final hint messages.

The "-m" option for cpio is retains previous file modification times when
creating files.
kompat: Replace fcntl(F_DUPFD_CLOEXEC) with fcntl(F_DUPFD) only if required.

The check against the actual kernel version was missing in the enter stage.