+ /* On some BSD platforms the mode bits of a symlink are
+ * undefined. Also it tends not to be possible to reset a
+ * symlink's mtime, so we have to ignore it too. */
+ if (S_ISLNK(buf.st_mode)) {
+ buf.st_mode &= ~0777;
+ buf.st_mtime = (time_t)0;
+ buf.st_uid = buf.st_gid = 0;
+ strcpy(linkbuf, " -> ");
+ readlink(fname, linkbuf+4, sizeof(linkbuf) - 4);
+ } else {
+ linkbuf[0] = 0;
+ }