From c4d478578c7a1343ad053fca79d80fdc4962ca6f Mon Sep 17 00:00:00 2001 From: Artem Bityutskiy Date: Thu, 20 Dec 2007 22:43:58 +0200 Subject: ubi-tools: fix and cleanup ubirmvol Plus some more ubimkvol clean-ups Signed-off-by: Artem Bityutskiy --- ubi-utils/src/ubimkvol.c | 62 +++++++++++++++++++++++++----------------------- 1 file changed, 32 insertions(+), 30 deletions(-) (limited to 'ubi-utils/src/ubimkvol.c') diff --git a/ubi-utils/src/ubimkvol.c b/ubi-utils/src/ubimkvol.c index 2b009d2..454e6fe 100644 --- a/ubi-utils/src/ubimkvol.c +++ b/ubi-utils/src/ubimkvol.c @@ -37,9 +37,7 @@ #define PROGRAM_VERSION "1.6" #define PROGRAM_NAME "ubimkvol" -/* - * The variables below are set by command line arguments. - */ +/* The variables below is set by command line arguments */ struct args { int devn; int vol_id; @@ -79,7 +77,7 @@ static const char *optionsstr = " eraseblocks\n" "-m, --maxavsize set volume size to maximum available size\n" "-t, --type= volume type (dynamic, static), default is dynamic\n" -"-h, --help help message\n" +"-h, --help print help message\n" "-V, --version print program version"; static const char *usage = @@ -91,7 +89,7 @@ static const char *usage = "Example: " PROGRAM_NAME "/dev/ubi0 -s 20MiB -N config_data - create a 20 Megabytes volume\n" " named \"config_data\" on UBI device /dev/ubi0."; -struct option long_options[] = { +static const struct option long_options[] = { { .name = "alignment", .has_arg = 1, .flag = NULL, .val = 'a' }, { .name = "devn", .has_arg = 1, .flag = NULL, .val = 'd' }, { .name = "vol_id", .has_arg = 1, .flag = NULL, .val = 'n' }, @@ -102,7 +100,7 @@ struct option long_options[] = { { .name = "help", .has_arg = 0, .flag = NULL, .val = 'h' }, { .name = "version", .has_arg = 0, .flag = NULL, .val = 'V' }, { .name = "maxavsize", .has_arg = 0, .flag = NULL, .val = 'm' }, - { NULL, 0, NULL, 0} + { NULL, 0, NULL, 0}, }; static int parse_opt(int argc, char * const argv[], struct args *args) @@ -170,7 +168,7 @@ static int parse_opt(int argc, char * const argv[], struct args *args) return -1; } - warnmsg("'-d' and '--devn' options are depricated and will be " + warnmsg("'-d' and '--devn' options are deprecated and will be " "removed. Specify UBI device node name instead!\n" "Example: " PROGRAM_NAME " /dev/ubi0, instead of " PROGRAM_NAME " -d 0"); @@ -196,10 +194,6 @@ static int parse_opt(int argc, char * const argv[], struct args *args) fprintf(stderr, "%s\n", optionsstr); exit(0); - case ':': - errmsg("parameter is missing"); - return -1; - case 'V': fprintf(stderr, "%s\n", PROGRAM_VERSION); exit(0); @@ -208,8 +202,12 @@ static int parse_opt(int argc, char * const argv[], struct args *args) args->maxavs = 1; break; + case ':': + errmsg("parameter is missing"); + return -1; + default: - fprintf(stderr, "Use -h for help"); + fprintf(stderr, "Use -h for help\n"); exit(-1); } } @@ -219,8 +217,13 @@ static int parse_opt(int argc, char * const argv[], struct args *args) static int param_sanity_check(struct args *args, libubi_t libubi) { - int err, len; - struct ubi_info ubi; + int len; + + if (strlen(args->node) > MAX_NODE_LEN) { + errmsg("too long device node name: \"%s\" (%d characters), max. is %d", + args->node, strlen(args->node), MAX_NODE_LEN); + return -1; + } if (args->bytes == -1 && !args->maxavs && !args->lebs) { errmsg("volume size was not specified (use -h for help)"); @@ -239,16 +242,21 @@ static int param_sanity_check(struct args *args, libubi_t libubi) return -1; } - err = ubi_get_info(libubi, &ubi); - if (err) { - errmsg("cannot get UBI information"); - perror("ubi_get_info"); - return -1; - } + if (args->devn != -1) { + int err; + struct ubi_info ubi; - if (args->devn >= (int)ubi.dev_count) { - errmsg("UBI device %d does not exist", args->devn); - return -1; + err = ubi_get_info(libubi, &ubi); + if (err) { + errmsg("cannot get UBI information"); + perror("ubi_get_info"); + return -1; + } + + if (args->devn >= ubi.dev_count) { + errmsg("UBI device %d does not exist", args->devn); + return -1; + } } len = strlen(args->name); @@ -279,13 +287,7 @@ int main(int argc, char * const argv[]) return -1; } - if (strlen(argv[1]) > MAX_NODE_LEN) { - errmsg("too long device node name: \"%s\" (%d characters), max. is %d", - argv[1], strlen(argv[1]), MAX_NODE_LEN); - return -1; - } - - strcpy(myargs.node, argv[1]); + strncpy(myargs.node, argv[1], MAX_NODE_LEN); err = parse_opt(argc, (char **)argv, &myargs); if (err) -- cgit v1.2.3