diff mbox series

nfs4_getfacl: Add new option -c/--omit-header to not display comment header.

Message ID 20190326135740.16558-1-kdsouza@redhat.com (mailing list archive)
State New, archived
Headers show
Series nfs4_getfacl: Add new option -c/--omit-header to not display comment header. | expand

Commit Message

Kenneth Dsouza March 26, 2019, 1:57 p.m. UTC
With this patch the filename will not be printed.

    $ nfs4_getfacl /test/
    # file: /test/
    A::OWNER@:rwaDxtTcCy
    A::GROUP@:rwaDxtcy
    A::EVERYONE@:rwaDxtcy

    $ nfs4_getfacl -c /test/

    A::OWNER@:rwaDxtTcCy
    A::GROUP@:rwaDxtcy
    A::EVERYONE@:rwaDxtcy

Signed-off-by: Kenneth D'souza <kdsouza@redhat.com>
---
 man/man1/nfs4_getfacl.1     |  6 ++++++
 nfs4_getfacl/nfs4_getfacl.c | 13 ++++++++++---
 2 files changed, 16 insertions(+), 3 deletions(-)

Comments

J. Bruce Fields April 9, 2019, 8:34 p.m. UTC | #1
Thanks, applying with some fixes:

On Tue, Mar 26, 2019 at 07:27:40PM +0530, Kenneth D'souza wrote:
> With this patch the filename will not be printed.
> 
>     $ nfs4_getfacl /test/
>     # file: /test/
>     A::OWNER@:rwaDxtTcCy
>     A::GROUP@:rwaDxtcy
>     A::EVERYONE@:rwaDxtcy
> 
>     $ nfs4_getfacl -c /test/
> 
>     A::OWNER@:rwaDxtTcCy
>     A::GROUP@:rwaDxtcy
>     A::EVERYONE@:rwaDxtcy

I don't see any reason for that blank line, I've removed it.

> @@ -115,7 +119,10 @@ static void print_acl_from_path(const char *fpath)
>  	struct nfs4_acl *acl;
>  	acl = nfs4_acl_for_path(fpath);
>  	if (acl != NULL) {
> +		if(ignore_comment == 0)
>  		printf("\n# file: %s\n", fpath);

This needs to be indented.

> +		else
> +			printf("\n");

I've removed the "else" clause.

And fixed a couple minor whitespace issues.

--b.

>  		nfs4_print_acl(stdout, acl);
>  		nfs4_free_acl(acl);
>  	}
> @@ -125,7 +132,7 @@ static void usage(int label)
>  {
>  	if (label)
>  		fprintf(stderr, "%s %s -- get NFSv4 file or directory access control lists.\n", execname, VERSION);
> -	fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n", execname);
> +	fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n  -c, --omit-header\tDo not display the comment header (Do not print filename)\n", execname);
>  }
>  
>  static void more_help()
> -- 
> 2.20.1
Kenneth Dsouza April 10, 2019, 9:37 a.m. UTC | #2
On Wed, Apr 10, 2019 at 2:04 AM J. Bruce Fields <bfields@fieldses.org> wrote:
>
> Thanks, applying with some fixes:
>
> On Tue, Mar 26, 2019 at 07:27:40PM +0530, Kenneth D'souza wrote:
> > With this patch the filename will not be printed.
> >
> >     $ nfs4_getfacl /test/
> >     # file: /test/
> >     A::OWNER@:rwaDxtTcCy
> >     A::GROUP@:rwaDxtcy
> >     A::EVERYONE@:rwaDxtcy
> >
> >     $ nfs4_getfacl -c /test/
> >
> >     A::OWNER@:rwaDxtTcCy
> >     A::GROUP@:rwaDxtcy
> >     A::EVERYONE@:rwaDxtcy
>
> I don't see any reason for that blank line, I've removed it.
>
I added the blank line so we print acl for each file on a new line
when -c is used.
# nfs4_getfacl -Rc /test

A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A::EVERYONE@:rwaDxtcy

A::OWNER@:rwatTcCy
A::GROUP@:tcy
A::EVERYONE@:tcy

A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A::EVERYONE@:rxtcy


> > @@ -115,7 +119,10 @@ static void print_acl_from_path(const char *fpath)
> >       struct nfs4_acl *acl;
> >       acl = nfs4_acl_for_path(fpath);
> >       if (acl != NULL) {
> > +             if(ignore_comment == 0)
> >               printf("\n# file: %s\n", fpath);
>
> This needs to be indented.
>
> > +             else
> > +                     printf("\n");
>
> I've removed the "else" clause.
>
> And fixed a couple minor whitespace issues.
>
> --b.
>
> >               nfs4_print_acl(stdout, acl);
> >               nfs4_free_acl(acl);
> >       }
> > @@ -125,7 +132,7 @@ static void usage(int label)
> >  {
> >       if (label)
> >               fprintf(stderr, "%s %s -- get NFSv4 file or directory access control lists.\n", execname, VERSION);
> > -     fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n", execname);
> > +     fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n  -c, --omit-header\tDo not display the comment header (Do not print filename)\n", execname);
> >  }
> >
> >  static void more_help()
> > --
> > 2.20.1
J. Bruce Fields April 10, 2019, 1:26 p.m. UTC | #3
On Wed, Apr 10, 2019 at 03:07:11PM +0530, Kenneth Dsouza wrote:
> On Wed, Apr 10, 2019 at 2:04 AM J. Bruce Fields <bfields@fieldses.org> wrote:
> >
> > Thanks, applying with some fixes:
> >
> > On Tue, Mar 26, 2019 at 07:27:40PM +0530, Kenneth D'souza wrote:
> > > With this patch the filename will not be printed.
> > >
> > >     $ nfs4_getfacl /test/
> > >     # file: /test/
> > >     A::OWNER@:rwaDxtTcCy
> > >     A::GROUP@:rwaDxtcy
> > >     A::EVERYONE@:rwaDxtcy
> > >
> > >     $ nfs4_getfacl -c /test/
> > >
> > >     A::OWNER@:rwaDxtTcCy
> > >     A::GROUP@:rwaDxtcy
> > >     A::EVERYONE@:rwaDxtcy
> >
> > I don't see any reason for that blank line, I've removed it.
> >
> I added the blank line so we print acl for each file on a new line
> when -c is used.

OK, it does make sense to have a blank line between multiple ACLs.

Again I'd rather adopt the same behavior has getfacl/setfacl whenever we
can.  Looks like getfacl just appends a blank line regardless of whether
-c is used or whether the are multiple ACLs:

	[bfields@patate ~]$ getfacl .
	# file: .
	# owner: bfields
	# group: bfields
	user::rwx
	group::--x
	other::--x
	
	[bfields@patate ~]$

I've added that to print_acl_from_path().

--b.

> # nfs4_getfacl -Rc /test
> 
> A::OWNER@:rwaDxtTcCy
> A::GROUP@:rwaDxtcy
> A::EVERYONE@:rwaDxtcy
> 
> A::OWNER@:rwatTcCy
> A::GROUP@:tcy
> A::EVERYONE@:tcy
> 
> A::OWNER@:rwaDxtTcCy
> A::GROUP@:rxtcy
> A::EVERYONE@:rxtcy
> 
> 
> > > @@ -115,7 +119,10 @@ static void print_acl_from_path(const char *fpath)
> > >       struct nfs4_acl *acl;
> > >       acl = nfs4_acl_for_path(fpath);
> > >       if (acl != NULL) {
> > > +             if(ignore_comment == 0)
> > >               printf("\n# file: %s\n", fpath);
> >
> > This needs to be indented.
> >
> > > +             else
> > > +                     printf("\n");
> >
> > I've removed the "else" clause.
> >
> > And fixed a couple minor whitespace issues.
> >
> > --b.
> >
> > >               nfs4_print_acl(stdout, acl);
> > >               nfs4_free_acl(acl);
> > >       }
> > > @@ -125,7 +132,7 @@ static void usage(int label)
> > >  {
> > >       if (label)
> > >               fprintf(stderr, "%s %s -- get NFSv4 file or directory access control lists.\n", execname, VERSION);
> > > -     fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n", execname);
> > > +     fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n  -c, --omit-header\tDo not display the comment header (Do not print filename)\n", execname);
> > >  }
> > >
> > >  static void more_help()
> > > --
> > > 2.20.1
Kenneth Dsouza April 10, 2019, 1:33 p.m. UTC | #4
Thanks! Should we also add the below entries similar to getfacl?

$ nfs4_getfacl /test/
# file: /test/
# owner: test
# group: test
A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A::EVERYONE@:rwaDxtcy

On Wed, Apr 10, 2019 at 6:56 PM J. Bruce Fields <bfields@fieldses.org> wrote:
>
> On Wed, Apr 10, 2019 at 03:07:11PM +0530, Kenneth Dsouza wrote:
> > On Wed, Apr 10, 2019 at 2:04 AM J. Bruce Fields <bfields@fieldses.org> wrote:
> > >
> > > Thanks, applying with some fixes:
> > >
> > > On Tue, Mar 26, 2019 at 07:27:40PM +0530, Kenneth D'souza wrote:
> > > > With this patch the filename will not be printed.
> > > >
> > > >     $ nfs4_getfacl /test/
> > > >     # file: /test/
> > > >     A::OWNER@:rwaDxtTcCy
> > > >     A::GROUP@:rwaDxtcy
> > > >     A::EVERYONE@:rwaDxtcy
> > > >
> > > >     $ nfs4_getfacl -c /test/
> > > >
> > > >     A::OWNER@:rwaDxtTcCy
> > > >     A::GROUP@:rwaDxtcy
> > > >     A::EVERYONE@:rwaDxtcy
> > >
> > > I don't see any reason for that blank line, I've removed it.
> > >
> > I added the blank line so we print acl for each file on a new line
> > when -c is used.
>
> OK, it does make sense to have a blank line between multiple ACLs.
>
> Again I'd rather adopt the same behavior has getfacl/setfacl whenever we
> can.  Looks like getfacl just appends a blank line regardless of whether
> -c is used or whether the are multiple ACLs:
>
>         [bfields@patate ~]$ getfacl .
>         # file: .
>         # owner: bfields
>         # group: bfields
>         user::rwx
>         group::--x
>         other::--x
>
>         [bfields@patate ~]$
>
> I've added that to print_acl_from_path().
>
> --b.
>
> > # nfs4_getfacl -Rc /test
> >
> > A::OWNER@:rwaDxtTcCy
> > A::GROUP@:rwaDxtcy
> > A::EVERYONE@:rwaDxtcy
> >
> > A::OWNER@:rwatTcCy
> > A::GROUP@:tcy
> > A::EVERYONE@:tcy
> >
> > A::OWNER@:rwaDxtTcCy
> > A::GROUP@:rxtcy
> > A::EVERYONE@:rxtcy
> >
> >
> > > > @@ -115,7 +119,10 @@ static void print_acl_from_path(const char *fpath)
> > > >       struct nfs4_acl *acl;
> > > >       acl = nfs4_acl_for_path(fpath);
> > > >       if (acl != NULL) {
> > > > +             if(ignore_comment == 0)
> > > >               printf("\n# file: %s\n", fpath);
> > >
> > > This needs to be indented.
> > >
> > > > +             else
> > > > +                     printf("\n");
> > >
> > > I've removed the "else" clause.
> > >
> > > And fixed a couple minor whitespace issues.
> > >
> > > --b.
> > >
> > > >               nfs4_print_acl(stdout, acl);
> > > >               nfs4_free_acl(acl);
> > > >       }
> > > > @@ -125,7 +132,7 @@ static void usage(int label)
> > > >  {
> > > >       if (label)
> > > >               fprintf(stderr, "%s %s -- get NFSv4 file or directory access control lists.\n", execname, VERSION);
> > > > -     fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n", execname);
> > > > +     fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n  -c, --omit-header\tDo not display the comment header (Do not print filename)\n", execname);
> > > >  }
> > > >
> > > >  static void more_help()
> > > > --
> > > > 2.20.1
diff mbox series

Patch

diff --git a/man/man1/nfs4_getfacl.1 b/man/man1/nfs4_getfacl.1
index 83067c9..001723e 100644
--- a/man/man1/nfs4_getfacl.1
+++ b/man/man1/nfs4_getfacl.1
@@ -28,6 +28,12 @@  flag is specified,
 .B nfs4_getfacl
 will list the NFSv4 ACLs of all files and directories recursively.
 
+If the
+.BR -c / --omit-header
+flag is specified,
+.B nfs4_getfacl 
+will not display the comment header (Do not print filename).
+
 The output format for an NFSv4 file ACL, e.g., is:
 .RS
 .nf
diff --git a/nfs4_getfacl/nfs4_getfacl.c b/nfs4_getfacl/nfs4_getfacl.c
index 5a9c911..8194e6f 100644
--- a/nfs4_getfacl/nfs4_getfacl.c
+++ b/nfs4_getfacl/nfs4_getfacl.c
@@ -46,6 +46,7 @@  static void usage(int);
 static void more_help();
 static char *execname;
 static void print_acl_from_path();
+static int ignore_comment = 0;
 
 static int recursive(const char *fpath, const struct stat *sb, int tflag, struct FTW *ftwbuf)
 {
@@ -57,6 +58,7 @@  static struct option long_options[] = {
         {"more-help",    0, 0, 'H' },
         {"help",         0, 0, 'h' },
         {"recursive",     0, 0, 'R' },
+	{"omit-header", 0, 0, 'c'},
         { NULL,          0, 0, 0,  },
 };
 
@@ -73,7 +75,7 @@  int main(int argc, char **argv)
 		goto out;
 	}
 
-	while ((opt = getopt_long(argc, argv, "HR?h", long_options, NULL)) != -1) {
+	while ((opt = getopt_long(argc, argv, "HR?hc", long_options, NULL)) != -1) {
 		switch(opt) {
 			case 'H':
 				more_help();
@@ -83,7 +85,9 @@  int main(int argc, char **argv)
 			case 'R':
 				do_recursive = 1;
 				break;
-
+			case 'c':
+				ignore_comment = 1; /* Do not display the comment header */
+				break;
 			default:
 				usage(1);
 				res = 0;
@@ -115,7 +119,10 @@  static void print_acl_from_path(const char *fpath)
 	struct nfs4_acl *acl;
 	acl = nfs4_acl_for_path(fpath);
 	if (acl != NULL) {
+		if(ignore_comment == 0)
 		printf("\n# file: %s\n", fpath);
+		else
+			printf("\n");
 		nfs4_print_acl(stdout, acl);
 		nfs4_free_acl(acl);
 	}
@@ -125,7 +132,7 @@  static void usage(int label)
 {
 	if (label)
 		fprintf(stderr, "%s %s -- get NFSv4 file or directory access control lists.\n", execname, VERSION);
-	fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n", execname);
+	fprintf(stderr, "Usage: %s [-R] file ...\n  -H, --more-help\tdisplay ACL format information\n  -?, -h, --help\tdisplay this help text\n  -R --recursive\trecurse into subdirectories\n  -c, --omit-header\tDo not display the comment header (Do not print filename)\n", execname);
 }
 
 static void more_help()