coreutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[coreutils] [PATCHv2] stat: print SELinux context when available


From: Eric Blake
Subject: [coreutils] [PATCHv2] stat: print SELinux context when available
Date: Fri, 1 Oct 2010 11:59:47 -0600

* src/stat.c (default_format): Include context when present.
* NEWS: Update blurb explaining the replacement for -Z.
---

Definitely nicer than the first attempt, but still controversial on
whether we want to do this at all.  I'm 70:30 for (I use Fedora's stat
-Z regularly, and would hate to make Fedora have to maintain it's -Z
patch in perpetuity).

 NEWS       |    5 ++++-
 src/stat.c |   45 +++++++++++++++++++++++++++++++++++++++++++--
 2 files changed, 47 insertions(+), 3 deletions(-)

diff --git a/NEWS b/NEWS
index dd8a18b..719ac9c 100644
--- a/NEWS
+++ b/NEWS
@@ -75,7 +75,10 @@ GNU coreutils NEWS                                    -*- 
outline -*-

   stat no longer accepts the --context (-Z) option.  Initially it was
   merely accepted and ignored, for compatibility.  Starting two years
-  ago, with coreutils-7.0, its use evoked a warning.
+  ago, with coreutils-7.0, its use evoked a warning.  Printing the
+  SELinux context can be done with the %C format directive, and the
+  default output when no format is specified now automatically
+  includes %C when context information is available.

   stat now outputs the full sub-second resolution for the atime,
   mtime, and ctime values since the Epoch, when using the %X, %Y, and
diff --git a/src/stat.c b/src/stat.c
index 4e3ec12..2275089 100644
--- a/src/stat.c
+++ b/src/stat.c
@@ -1074,7 +1074,12 @@ default_format (bool fs, bool terse, bool device)
   if (fs)
     {
       if (terse)
-        format = xstrdup ("%n %i %l %t %s %S %b %f %a %c %d\n");
+        {
+          if (0 < is_selinux_enabled ())
+            format = xstrdup ("%n %i %l %t %s %S %b %f %a %c %d %C\n");
+          else
+            format = xstrdup ("%n %i %l %t %s %S %b %f %a %c %d\n");
+        }
       else
         {
           /* TRANSLATORS: This string uses format specifiers from
@@ -1086,12 +1091,30 @@ Block size: %-10s Fundamental block size: %S\n\
 Blocks: Total: %-10b Free: %-10f Available: %a\n\
 Inodes: Total: %-10c Free: %d\n\
 "));
+
+          if (0 < is_selinux_enabled ())
+            {
+              /* TRANSLATORS: This string uses format specifiers from
+                 'stat --help' with --file-system, and NOT from printf.  */
+              char *temp = format;
+              format = xasprintf ("%s%s", format, _("
+Context: %C\n\
+"));
+              free (temp);
+            }
         }
     }
   else /* ! fs */
     {
       if (terse)
-        format = xstrdup ("%n %s %b %f %u %g %D %i %h %t %T %X %Y %Z %W %o\n");
+        {
+          if (0 < is_selinux_enabled ())
+            format = xstrdup ("%n %s %b %f %u %g %D %i %h %t %T"
+                              " %X %Y %Z %W %o\n");
+          else
+            format = xstrdup ("%n %s %b %f %u %g %D %i %h %t %T"
+                              " %X %Y %Z %W %o %C\n");
+        }
       else
         {
           char *temp;
@@ -1126,6 +1149,24 @@ Device: %Dh/%dd\tInode: %-10i  Links: %h\n\
              'stat --help' without --file-system, and NOT from printf.  */
           format = xasprintf ("%s%s", format, _("\
 Access: (%04a/%10.10A)  Uid: (%5u/%8U)   Gid: (%5g/%8G)\n\
+"));
+          free (temp);
+
+          if (0 < is_selinux_enabled ())
+            {
+              temp = format;
+              /* TRANSLATORS: This string uses format specifiers from
+                 'stat --help' without --file-system, and NOT from printf.  */
+              format = xasprintf ("%s%s", format, _("\
+Context: %C\n\
+"));
+              free (temp);
+            }
+
+          temp = format;
+          /* TRANSLATORS: This string uses format specifiers from
+             'stat --help' without --file-system, and NOT from printf.  */
+          format = xasprintf ("%s%s", format, _("\
 Access: %x\n\
 Modify: %y\n\
 Change: %z\n\
-- 
1.7.2.3




reply via email to

[Prev in Thread] Current Thread [Next in Thread]