svn commit: r207636 - stable/7/usr.bin/stat
Jilles Tjoelker
jilles at FreeBSD.org
Tue May 4 21:56:16 UTC 2010
Author: jilles
Date: Tue May 4 21:56:16 2010
New Revision: 207636
URL: http://svn.freebsd.org/changeset/base/207636
Log:
MFC r207153: stat: Allow -f %Sf to display the file flags symbolically.
PR: 124349
Modified:
stable/7/usr.bin/stat/stat.1
stable/7/usr.bin/stat/stat.c
Directory Properties:
stable/7/usr.bin/stat/ (props changed)
Modified: stable/7/usr.bin/stat/stat.1
==============================================================================
--- stable/7/usr.bin/stat/stat.1 Tue May 4 21:23:59 2010 (r207635)
+++ stable/7/usr.bin/stat/stat.1 Tue May 4 21:56:16 2010 (r207636)
@@ -36,7 +36,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd April 27, 2007
+.Dd April 24, 2010
.Dt STAT 1
.Os
.Sh NAME
@@ -239,6 +239,11 @@ Display date in
format.
.It Cm dr
Display actual device name.
+.It Cm f
+Display the flags of
+.Ar file
+as in
+.Nm ls Fl lTdo .
.It Cm gu
Display group or user name.
.It Cm p
Modified: stable/7/usr.bin/stat/stat.c
==============================================================================
--- stable/7/usr.bin/stat/stat.c Tue May 4 21:23:59 2010 (r207635)
+++ stable/7/usr.bin/stat/stat.c Tue May 4 21:56:16 2010 (r207636)
@@ -187,6 +187,9 @@ int format1(const struct stat *, /* stat
char *, size_t, /* a place to put the output */
int, int, int, int, /* the parsed format */
int, int);
+#if HAVE_STRUCT_STAT_ST_FLAGS
+char *xfflagstostr(unsigned long);
+#endif
char *timefmt;
int linkfail;
@@ -329,6 +332,25 @@ main(int argc, char *argv[])
return (am_readlink ? linkfail : errs);
}
+#if HAVE_STRUCT_STAT_ST_FLAGS
+/*
+ * fflagstostr() wrapper that leaks only once
+ */
+char *
+xfflagstostr(unsigned long fflags)
+{
+ static char *str = NULL;
+
+ if (str != NULL)
+ free(str);
+
+ str = fflagstostr(fflags);
+ if (str == NULL)
+ err(1, "fflagstostr");
+ return (str);
+}
+#endif /* HAVE_STRUCT_STAT_ST_FLAGS */
+
void
usage(const char *synopsis)
{
@@ -721,8 +743,11 @@ format1(const struct stat *st,
case SHOW_st_flags:
small = (sizeof(st->st_flags) == 4);
data = st->st_flags;
- sdata = NULL;
- formats = FMTF_DECIMAL | FMTF_OCTAL | FMTF_UNSIGNED | FMTF_HEX;
+ sdata = xfflagstostr(st->st_flags);
+ if (*sdata == '\0')
+ sdata = "-";
+ formats = FMTF_DECIMAL | FMTF_OCTAL | FMTF_UNSIGNED | FMTF_HEX |
+ FMTF_STRING;
if (ofmt == 0)
ofmt = FMTF_UNSIGNED;
break;
More information about the svn-src-stable-7
mailing list