Michael Felt wrote:
But to have a name like that, I must be too old fashioned -
where is the win?
It's so that execlp ("FOO") acts like the shell command FOO, or, more
precisely, so that the attached C program works like '[ -d / ]' at the
shell level. POSIX requires that all standard utilities (except for a
very short list) must work the same way from a C program as from the
shell. See the last sentence of:
http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap01.html#tag_17_06
'[' is not on the list of exceptions, so coreutils arranges for it to be
an executable, as POSIX requires.
AIX does not
permit files in an installp package are refused when they include certain
special characters
It may be simpler to just omit '[' from your installp package (I assume
that's some downstream thing). I doubt whether anybody but POSIX nerds
will care. AIX itself doesn't seem to be POSIX-conforming here, as the
attached C program fails on AIX. (If *you* are a POSIX nerd please feel
free to file a bug report with IBM....)
#include <unistd.h>
#include <stdio.h>
int
main (void)
{
execlp ("[", "[", "-d", "/", "]", (char *) 0);
perror ("execlp");
return 1;
}