stat: Allow -f %Sf to display the file flags symbolically.
I have changed the patch slightly to show '-' if there are no flags just like ls -ldo does. PR: 124349 Submitted by: Ighighi MFC after: 1 week
This commit is contained in:
parent
ed7806879b
commit
24d9be57ae
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=207153
@ -29,7 +29,7 @@
|
||||
.\"
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.Dd April 27, 2007
|
||||
.Dd April 24, 2010
|
||||
.Dt STAT 1
|
||||
.Os
|
||||
.Sh NAME
|
||||
@ -232,6 +232,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
|
||||
|
@ -182,6 +182,9 @@ int format1(const struct stat *, /* stat info */
|
||||
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;
|
||||
@ -333,6 +336,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)
|
||||
{
|
||||
@ -725,8 +747,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;
|
||||
|
Loading…
Reference in New Issue
Block a user