than having the code test for all of the other types first.
Hoist the set-uid/gid-testing code "up" into this new block.
Classify any other type of file (e.g., S_TYPEISSHM, etc.) as
C_ORPHAN, not as C_FILE.
* doc/coreutils.texi (What information is listed): Mention that missing
pieces of information are marked with "?". From Paul Eggert.
2006-07-26 Jim Meyering <jim@meyering.net>
+ * src/ls.c (print_color_indicator): Test for S_IFREG first, rather
+ than having the code test for all of the other types first.
+ Hoist the set-uid/gid-testing code "up" into this new block.
+ Classify any other type of file (e.g., S_TYPEISSHM, etc.) as
+ C_ORPHAN, not as C_FILE.
+
+2006-07-26 Jim Meyering <jim@meyering.net>
+
Checking in a change from Paul.
2006-07-25 Paul Eggert <eggert@cs.ucla.edu>
+2006-07-26 Jim Meyering <jim@meyering.net>
+
+ * coreutils.texi (What information is listed): Mention that missing
+ pieces of information are marked with "?". From Paul Eggert.
+
2006-07-25 Paul Eggert <eggert@cs.ucla.edu>
* perm.texi (Directory Setuid and Setgid): Explain that this is a
In addition to the name of each file, print the file type, file mode bits,
number of hard links, owner name, group name, size, and
timestamp (@pxref{Formatting file timestamps}), normally
-the modification time.
+the modification time. Print question marks for information that
+cannot be determined.
Normally the size is printed as a byte count without punctuation, but
this can be overridden (@pxref{Block size}). For example, @option{-h}
print_color_indicator (const char *name, mode_t mode, int linkok,
bool stat_ok, enum filetype filetype)
{
- int type = C_FILE;
+ int type;
struct color_ext_type *ext; /* Color extension */
size_t len; /* Length of name */
}
else
{
- if (S_ISDIR (mode))
+ if (S_ISREG (mode))
+ {
+ type = C_FILE;
+ if ((mode & S_ISUID) != 0)
+ type = C_SETUID;
+ else if ((mode & S_ISGID) != 0)
+ type = C_SETGID;
+ else if ((mode & S_IXUGO) != 0)
+ type = C_EXEC;
+ }
+ else if (S_ISDIR (mode))
{
if ((mode & S_ISVTX) && (mode & S_IWOTH))
type = C_STICKY_OTHER_WRITABLE;
else if (S_ISDOOR (mode))
type = C_DOOR;
else
- type = C_ORPHAN;
-
- if (type == C_FILE)
{
- if ((mode & S_ISUID) != 0)
- type = C_SETUID;
- else if ((mode & S_ISGID) != 0)
- type = C_SETGID;
- else if ((mode & S_IXUGO) != 0)
- type = C_EXEC;
+ /* Classify a file of some other type as C_ORPHAN. */
+ type = C_ORPHAN;
}
}