xfs
[Top] [All Lists]

[PATCH 18/19] mkfs: add optional 'reason' for illegal_option

To: xfs@xxxxxxxxxxx
Subject: [PATCH 18/19] mkfs: add optional 'reason' for illegal_option
From: Jan Tulak <jtulak@xxxxxxxxxx>
Date: Thu, 21 Apr 2016 11:39:52 +0200
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1461231593-31294-1-git-send-email-jtulak@xxxxxxxxxx>
References: <1461231593-31294-1-git-send-email-jtulak@xxxxxxxxxx>
Allow us to tell the user what exactly is wrong with the specified options.
For example, that the value is too small, instead of just generic "bad option."

Signed-off-by: Jan Tulak <jtulak@xxxxxxxxxx>

---
CHANGES:
* code format (space)
* add translation _() to strings
---
 mkfs/xfs_mkfs.c | 27 ++++++++++++++++++---------
 1 file changed, 18 insertions(+), 9 deletions(-)

diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c
index a35c4a5..c4cd5ba 100644
--- a/mkfs/xfs_mkfs.c
+++ b/mkfs/xfs_mkfs.c
@@ -1546,11 +1546,18 @@ static __attribute__((noreturn)) void
 illegal_option(
        const char      *value,
        struct opt_params       *opts,
-       int             index)
+       int             index,
+       const char *reason)
 {
-       fprintf(stderr,
-               _("Illegal value %s for -%c %s option\n"),
-               value, opts->name, opts->subopts[index]);
+       if (reason == NULL){
+               fprintf(stderr,
+                       _("Illegal value %s for -%c %s option\n"),
+                       value, opts->name, opts->subopts[index]);
+       } else {
+               fprintf(stderr,
+                       _("Illegal value %s for -%c %s option: %s\n"),
+                       value, opts->name, opts->subopts[index], reason);
+       }
        usage();
 }
 
@@ -1642,16 +1649,18 @@ getnum(
 
                c = strtoll(str, &str_end, 0);
                if (c == 0 && str_end == str)
-                       illegal_option(str, opts, index);
+                       illegal_option(str, opts, index, NULL);
                if (*str_end != '\0')
-                       illegal_option(str, opts, index);
+                       illegal_option(str, opts, index, NULL);
        }
 
        /* Validity check the result. */
-       if (c < sp->minval || c > sp->maxval)
-               illegal_option(str, opts, index);
+       if (c < sp->minval)
+               illegal_option(str, opts, index, _("value is too small"));
+       else if (c > sp->maxval)
+               illegal_option(str, opts, index, _("value is too large"));
        if (sp->is_power_2 && !ispow2(c))
-               illegal_option(str, opts, index);
+               illegal_option(str, opts, index, _("value must be a power of 
2"));
        return c;
 }
 
-- 
2.5.0

<Prev in Thread] Current Thread [Next in Thread>