* src/ls.c (gobble_file): Don't call getfilecon unless print_scontext.
authorJim Meyering <jim@meyering.net>
Sat, 13 Jan 2007 17:22:46 +0000 (18:22 +0100)
committerJim Meyering <jim@meyering.net>
Thu, 29 Mar 2007 19:37:05 +0000 (21:37 +0200)
Upon failed getfilecon, accept not just ENOTSUP, but also ENODATA.

ChangeLog-selinux
src/ls.c

index 79a2304..2ef22ce 100644 (file)
@@ -1,5 +1,8 @@
 2007-01-13  Jim Meyering  <jim@meyering.net>
 
+       * src/ls.c (gobble_file): Don't call getfilecon unless print_scontext.
+       Upon failed getfilecon, accept not just ENOTSUP, but also ENODATA.
+
        * src/c99-to-c89.diff: Adjust offsets.
 
        * AUTHORS: Add chcon.
index f8727a2..b33146c 100644 (file)
--- a/src/ls.c
+++ b/src/ls.c
@@ -2596,6 +2596,8 @@ gobble_file (char const *name, enum filetype type, ino_t inode,
                                     )))))
 
     {
+      /* FIXME-c99: move this decl "down", once ls.c stabilizes.  */
+      bool file_has_security_context = false;
       /* Absolute name of this file.  */
       char *absolute_name;
       bool do_deref;
@@ -2645,8 +2647,7 @@ gobble_file (char const *name, enum filetype type, ino_t inode,
          break;
        }
 
-      bool file_has_security_context = false;
-      if (err == 0 && (format == long_format || print_scontext))
+      if (err == 0 && print_scontext)
        {
          int attr_len = (do_deref
                          ?  getfilecon (absolute_name, &f->scontext)
@@ -2658,7 +2659,7 @@ gobble_file (char const *name, enum filetype type, ino_t inode,
             ls fail just because the file (even a command line argument)
             isn't on the right type of file system.  I.e., a getfilecon
             failure isn't in the same class as a stat failure.  */
-         if (err && errno == ENOTSUP)
+         if (err && (errno == ENOTSUP || errno == ENODATA))
            err = 0;
        }