stat: print SELinux context when available

* src/stat.c (default_format): Include context when present.
* NEWS: Update blurb explaining the replacement for -Z.
This commit is contained in:
Eric Blake 2010-10-01 11:54:34 -06:00
parent 2c14ec962a
commit 7a5ecae996
2 changed files with 47 additions and 3 deletions

5
NEWS
View File

@ -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

View File

@ -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\