diff mbox series

getcifsacl: Improve help usage and add -h option.

Message ID 20190221050925.17643-1-kdsouza@redhat.com
State New
Headers show
Series getcifsacl: Improve help usage and add -h option. | expand

Commit Message

Kenneth Dsouza Feb. 21, 2019, 5:09 a.m. UTC
Call getcifsacl_usage only for -h and default case.
For others error out with appropriate message.

Signed-off-by: Kenneth D'souza <kdsouza@redhat.com>
---
 getcifsacl.c | 30 ++++++++++++++++++++----------
 1 file changed, 20 insertions(+), 10 deletions(-)

Comments

Pavel Shilovsky March 9, 2019, 12:37 a.m. UTC | #1
ср, 20 февр. 2019 г. в 21:09, Kenneth D'souza <kdsouza@redhat.com>:
>
> Call getcifsacl_usage only for -h and default case.
> For others error out with appropriate message.
>
> Signed-off-by: Kenneth D'souza <kdsouza@redhat.com>
> ---
>  getcifsacl.c | 30 ++++++++++++++++++++----------
>  1 file changed, 20 insertions(+), 10 deletions(-)
>
> diff --git a/getcifsacl.c b/getcifsacl.c
> index 7f6e673..850a252 100644
> --- a/getcifsacl.c
> +++ b/getcifsacl.c
> @@ -40,6 +40,7 @@
>
>  static void *plugin_handle;
>  static bool plugin_loaded;
> +static char *execname;
>
>  static void
>  print_each_ace_mask(uint32_t mask)
> @@ -331,6 +332,8 @@ getcifsacl_usage(const char *prog)
>                 prog);
>         fprintf(stderr, "Usage: %s [option] <file_name>\n", prog);
>         fprintf(stderr, "Valid options:\n");
> +       fprintf(stderr, "\t-h   Display this help text\n");
> +       fprintf(stderr, "\n");
>         fprintf(stderr, "\t-v   Version of the program\n");
>         fprintf(stderr, "\n");
>         fprintf(stderr, "\t-r   Display raw values of the ACE fields\n");
> @@ -345,8 +348,15 @@ main(const int argc, char *const argv[])
>         ssize_t attrlen;
>         size_t bufsize = BUFSIZE;
>         char *filename, *attrval;
> +       execname = basename(argv[0]);
> +
> +        if (argc < 2) {
> +                fprintf(stderr, "%s: you must specify a filename.\n", execname);
> +                printf("Try `getcifsacl -h' for more information.\n");
> +                goto out;
> +        }
>
> -       while ((c = getopt_long(argc, argv, "r:v", NULL, NULL)) != -1) {
> +       while ((c = getopt_long(argc, argv, "rhv", NULL, NULL)) != -1) {
>                 switch (c) {
>                 case 'v':
>                         printf("Version: %s\n", VERSION);
> @@ -355,18 +365,18 @@ main(const int argc, char *const argv[])
>                         raw = true;
>                         break;
>                 default:
> -                       break;
> +                       getcifsacl_usage(execname);
> +                        goto out;
> +
>                 }
>         }
>
> -       if (raw && argc == 3)
> -               filename = argv[2];
> -       else if (argc == 2)
> -               filename = argv[1];
> -       else {
> -               getcifsacl_usage(basename(argv[0]));
> -               goto out;
> -       }
> +        if (optind >= argc) {
> +               printf("you must specify a filename after options.\n");
> +               printf("Usage: getcifsacl [option] <file_name>\n");
> +                goto out;
> +        } else
> +              filename= argv[optind];
>
>         if (!raw && !plugin_loaded) {
>                 ret = init_plugin(&plugin_handle);
> --
> 2.20.1
>

fixed code style and merged, thanks.

--
Best regards,
Pavel Shilovsky
diff mbox series

Patch

diff --git a/getcifsacl.c b/getcifsacl.c
index 7f6e673..850a252 100644
--- a/getcifsacl.c
+++ b/getcifsacl.c
@@ -40,6 +40,7 @@ 
 
 static void *plugin_handle;
 static bool plugin_loaded;
+static char *execname;
 
 static void
 print_each_ace_mask(uint32_t mask)
@@ -331,6 +332,8 @@  getcifsacl_usage(const char *prog)
 		prog);
 	fprintf(stderr, "Usage: %s [option] <file_name>\n", prog);
 	fprintf(stderr, "Valid options:\n");
+	fprintf(stderr, "\t-h	Display this help text\n");
+	fprintf(stderr, "\n");
 	fprintf(stderr, "\t-v	Version of the program\n");
 	fprintf(stderr, "\n");
 	fprintf(stderr, "\t-r	Display raw values of the ACE fields\n");
@@ -345,8 +348,15 @@  main(const int argc, char *const argv[])
 	ssize_t attrlen;
 	size_t bufsize = BUFSIZE;
 	char *filename, *attrval;
+	execname = basename(argv[0]);
+
+        if (argc < 2) {
+                fprintf(stderr, "%s: you must specify a filename.\n", execname);
+                printf("Try `getcifsacl -h' for more information.\n");
+                goto out;
+        }
 
-	while ((c = getopt_long(argc, argv, "r:v", NULL, NULL)) != -1) {
+	while ((c = getopt_long(argc, argv, "rhv", NULL, NULL)) != -1) {
 		switch (c) {
 		case 'v':
 			printf("Version: %s\n", VERSION);
@@ -355,18 +365,18 @@  main(const int argc, char *const argv[])
 			raw = true;
 			break;
 		default:
-			break;
+			getcifsacl_usage(execname);
+                        goto out;
+
 		}
 	}
 
-	if (raw && argc == 3)
-		filename = argv[2];
-	else if (argc == 2)
-		filename = argv[1];
-	else {
-		getcifsacl_usage(basename(argv[0]));
-		goto out;
-	}
+        if (optind >= argc) {
+               printf("you must specify a filename after options.\n");
+               printf("Usage: getcifsacl [option] <file_name>\n");
+                goto out;
+        } else
+              filename= argv[optind];
 
 	if (!raw && !plugin_loaded) {
 		ret = init_plugin(&plugin_handle);