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.  -

Reply via email to