I have found a problem with lib/error.c that I found in the fileutils-4.0
package when using GNU 'ls' under AIX 4.3.
The block of code causing the problem is...
#if defined HAVE_STRERROR_R || defined _LIBC
char errbuf[1024];
fprintf (stderr, ": %s", __strerror_r (errnum, errbuf, sizeof errbuf));
#else
fprintf (stderr, ": %s", strerror (errnum));
#endif
Although strerror_r exists under AIX it does not return a pointer to the
buffer passed to it, so if I give 'ls' a non-existent object, for example, I
just get the program name and object name, but no message.
The fix is simply to split the line...
char errbuf[1024];
__strerror_r (errnum, errbuf, sizeof errbuf);
fprintf (stderr, ": %s", errbuf);
It might also be an idea to mention in the README that on some systems (such as
Linux) piping 'ls' through 'more -f' may allow colour to be used without escape
sequences having new-lines inconsiderately put in the middle of them, as this
as far from obvious. Under AIX 'more' does not cope at all.
Ta.
- KSL. -