From: Dave Chinner <dchinner@xxxxxxxxxx> Move all the error and helper functions like conflict() to the top of the file so we can get rid of the forward declarations. Signed-Off-By: Dave Chinner <dchinner@xxxxxxxxxx> --- mkfs/xfs_mkfs.c | 324 +++++++++++++++++++++++++++----------------------------- 1 file changed, 157 insertions(+), 167 deletions(-) diff --git a/mkfs/xfs_mkfs.c b/mkfs/xfs_mkfs.c index 9d087bc068a7..c01dc11882d9 100644 --- a/mkfs/xfs_mkfs.c +++ b/mkfs/xfs_mkfs.c @@ -21,16 +21,6 @@ #include "xfs_multidisk.h" #include "libxcmd.h" -/* - * Prototypes for internal functions. - */ -static void conflict(char opt, const char *tab[], int oldidx, int newidx); -static void illegal(const char *value, const char *opt); -static __attribute__((noreturn)) void usage (void); -static __attribute__((noreturn)) void reqval(char opt, const char *tab[], int idx); -static void respec(char opt, const char *tab[], int idx); -static void unknown(char opt, char *s); -static int ispow2(unsigned int i); /* * XXX: The configured block and sector sizes are defined as global variables so @@ -896,6 +886,163 @@ struct mkfs_default_params { */ #define WHACK_SIZE (128 * 1024) +static void __attribute__((noreturn)) +usage( void ) +{ + fprintf(stderr, _("Usage: %s\n\ +/* blocksize */ [-b log=n|size=num]\n\ +/* metadata */ [-m crc=0|1,finobt=0|1,uuid=xxx,rmapbt=0|1,reflink=0|1]\n\ +/* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num,\n\ + (sunit=value,swidth=value|su=num,sw=num|noalign),\n\ + sectlog=n|sectsize=num\n\ +/* force overwrite */ [-f]\n\ +/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,\n\ + projid32bit=0|1,sparse=0|1]\n\ +/* no discard */ [-K]\n\ +/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\ + sunit=value|su=num,sectlog=n|sectsize=num,\n\ + lazy-count=0|1]\n\ +/* label */ [-L label (maximum 12 characters)]\n\ +/* naming */ [-n log=n|size=num,version=2|ci,ftype=0|1]\n\ +/* no-op info only */ [-N]\n\ +/* prototype file */ [-p fname]\n\ +/* quiet */ [-q]\n\ +/* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx]\n\ +/* sectorsize */ [-s log=n|size=num]\n\ +/* version */ [-V]\n\ + devicename\n\ +<devicename> is required unless -d name=xxx is given.\n\ +<num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB),\n\ + xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB).\n\ +<value> is xxx (512 byte blocks).\n"), + progname); + exit(1); +} + +static void +conflict( + char opt, + const char *tab[], + int oldidx, + int newidx) +{ + fprintf(stderr, _("Cannot specify both -%c %s and -%c %s\n"), + opt, tab[oldidx], opt, tab[newidx]); + usage(); +} + + +static void +illegal( + const char *value, + const char *opt) +{ + fprintf(stderr, _("Illegal value %s for -%s option\n"), value, opt); + usage(); +} + +static int +ispow2( + unsigned int i) +{ + return (i & (i - 1)) == 0; +} + +static void __attribute__((noreturn)) +reqval( + char opt, + const char *tab[], + int idx) +{ + fprintf(stderr, _("-%c %s option requires a value\n"), opt, tab[idx]); + usage(); +} + +static void +respec( + char opt, + const char *tab[], + int idx) +{ + fprintf(stderr, "-%c ", opt); + if (tab) + fprintf(stderr, "%s ", tab[idx]); + fprintf(stderr, _("option respecified\n")); + usage(); +} + +static void +unknown( + char opt, + char *s) +{ + fprintf(stderr, _("unknown option -%c %s\n"), opt, s); + usage(); +} + +long long +cvtnum( + unsigned int blksize, + unsigned int sectsize, + const char *s) +{ + long long i; + char *sp; + int c; + + i = strtoll(s, &sp, 0); + if (i == 0 && sp == s) + return -1LL; + if (*sp == '\0') + return i; + + if (sp[1] != '\0') + return -1LL; + + if (*sp == 'b') { + if (!blksize) { + fprintf(stderr, +_("Blocksize must be provided prior to using 'b' suffix.\n")); + usage(); + } else { + return i * blksize; + } + } + if (*sp == 's') { + if (!sectsize) { + fprintf(stderr, +_("Sectorsize must be specified prior to using 's' suffix.\n")); + usage(); + } else { + return i * sectsize; + } + } + + c = tolower(*sp); + switch (c) { + case 'e': + i *= 1024LL; + /* fall through */ + case 'p': + i *= 1024LL; + /* fall through */ + case 't': + i *= 1024LL; + /* fall through */ + case 'g': + i *= 1024LL; + /* fall through */ + case 'm': + i *= 1024LL; + /* fall through */ + case 'k': + return i * 1024LL; + default: + break; + } + return -1LL; +} + static void check_device_type( const char *name, @@ -3920,160 +4067,3 @@ main( return 0; } - -static void -conflict( - char opt, - const char *tab[], - int oldidx, - int newidx) -{ - fprintf(stderr, _("Cannot specify both -%c %s and -%c %s\n"), - opt, tab[oldidx], opt, tab[newidx]); - usage(); -} - - -static void -illegal( - const char *value, - const char *opt) -{ - fprintf(stderr, _("Illegal value %s for -%s option\n"), value, opt); - usage(); -} - -static int -ispow2( - unsigned int i) -{ - return (i & (i - 1)) == 0; -} - -static void __attribute__((noreturn)) -reqval( - char opt, - const char *tab[], - int idx) -{ - fprintf(stderr, _("-%c %s option requires a value\n"), opt, tab[idx]); - usage(); -} - -static void -respec( - char opt, - const char *tab[], - int idx) -{ - fprintf(stderr, "-%c ", opt); - if (tab) - fprintf(stderr, "%s ", tab[idx]); - fprintf(stderr, _("option respecified\n")); - usage(); -} - -static void -unknown( - char opt, - char *s) -{ - fprintf(stderr, _("unknown option -%c %s\n"), opt, s); - usage(); -} - -long long -cvtnum( - unsigned int blksize, - unsigned int sectsize, - const char *s) -{ - long long i; - char *sp; - int c; - - i = strtoll(s, &sp, 0); - if (i == 0 && sp == s) - return -1LL; - if (*sp == '\0') - return i; - - if (sp[1] != '\0') - return -1LL; - - if (*sp == 'b') { - if (!blksize) { - fprintf(stderr, -_("Blocksize must be provided prior to using 'b' suffix.\n")); - usage(); - } else { - return i * blksize; - } - } - if (*sp == 's') { - if (!sectsize) { - fprintf(stderr, -_("Sectorsize must be specified prior to using 's' suffix.\n")); - usage(); - } else { - return i * sectsize; - } - } - - c = tolower(*sp); - switch (c) { - case 'e': - i *= 1024LL; - /* fall through */ - case 'p': - i *= 1024LL; - /* fall through */ - case 't': - i *= 1024LL; - /* fall through */ - case 'g': - i *= 1024LL; - /* fall through */ - case 'm': - i *= 1024LL; - /* fall through */ - case 'k': - return i * 1024LL; - default: - break; - } - return -1LL; -} - -static void __attribute__((noreturn)) -usage( void ) -{ - fprintf(stderr, _("Usage: %s\n\ -/* blocksize */ [-b log=n|size=num]\n\ -/* metadata */ [-m crc=0|1,finobt=0|1,uuid=xxx,rmapbt=0|1,reflink=0|1]\n\ -/* data subvol */ [-d agcount=n,agsize=n,file,name=xxx,size=num,\n\ - (sunit=value,swidth=value|su=num,sw=num|noalign),\n\ - sectlog=n|sectsize=num\n\ -/* force overwrite */ [-f]\n\ -/* inode size */ [-i log=n|perblock=n|size=num,maxpct=n,attr=0|1|2,\n\ - projid32bit=0|1,sparse=0|1]\n\ -/* no discard */ [-K]\n\ -/* log subvol */ [-l agnum=n,internal,size=num,logdev=xxx,version=n\n\ - sunit=value|su=num,sectlog=n|sectsize=num,\n\ - lazy-count=0|1]\n\ -/* label */ [-L label (maximum 12 characters)]\n\ -/* naming */ [-n log=n|size=num,version=2|ci,ftype=0|1]\n\ -/* no-op info only */ [-N]\n\ -/* prototype file */ [-p fname]\n\ -/* quiet */ [-q]\n\ -/* realtime subvol */ [-r extsize=num,size=num,rtdev=xxx]\n\ -/* sectorsize */ [-s log=n|size=num]\n\ -/* version */ [-V]\n\ - devicename\n\ -<devicename> is required unless -d name=xxx is given.\n\ -<num> is xxx (bytes), xxxs (sectors), xxxb (fs blocks), xxxk (xxx KiB),\n\ - xxxm (xxx MiB), xxxg (xxx GiB), xxxt (xxx TiB) or xxxp (xxx PiB).\n\ -<value> is xxx (512 byte blocks).\n"), - progname); - exit(1); -} -- 2.13.3 -- To unsubscribe from this list: send the line "unsubscribe linux-xfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html