diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | doc/ChangeLog | 5 | ||||
-rw-r--r-- | doc/coreutils.texi | 3 | ||||
-rw-r--r-- | src/ls.c | 25 |
4 files changed, 29 insertions, 12 deletions
@@ -1,5 +1,13 @@ 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> diff --git a/doc/ChangeLog b/doc/ChangeLog index 22490068d..97d4ca1cc 100644 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,8 @@ +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 diff --git a/doc/coreutils.texi b/doc/coreutils.texi index dacac7df9..64accb03c 100644 --- a/doc/coreutils.texi +++ b/doc/coreutils.texi @@ -5795,7 +5795,8 @@ uniquely identifies each file within a particular file system.) 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} @@ -3832,7 +3832,7 @@ static void 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 */ @@ -3847,7 +3847,17 @@ print_color_indicator (const char *name, mode_t mode, int linkok, } 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; @@ -3872,16 +3882,9 @@ print_color_indicator (const char *name, mode_t mode, int linkok, 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; } } |