X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=tools%2Fmkenvimage.c;h=c5ed373b99217cd09b7c84578abae27e4ee09661;hb=13b178edc242cb7b61b6f4264456f7061fa3cf5b;hp=b7b0e0fade0f8252bfcda5f671103c6002386c51;hpb=d30011bf6127903367e70f9bdcb95a2d3dd2dc9f;p=oweals%2Fu-boot.git diff --git a/tools/mkenvimage.c b/tools/mkenvimage.c index b7b0e0fade..c5ed373b99 100644 --- a/tools/mkenvimage.c +++ b/tools/mkenvimage.c @@ -25,6 +25,9 @@ * MA 02111-1307 USA */ +/* We want the GNU version of basename() */ +#define _GNU_SOURCE + #include #include #include @@ -36,6 +39,7 @@ #include #include +#include #define CRC_SIZE sizeof(uint32_t) @@ -56,6 +60,7 @@ static void usage(const char *exec_name) "\t-b : the target is big endian (default is little endian)\n" "\t-p : fill the image with bytes instead of " "0xff bytes\n" + "\t-V : print version information and exit\n" "\n" "If the input file is \"-\", data is read from standard input\n", exec_name); @@ -79,9 +84,15 @@ int main(int argc, char **argv) struct stat txt_file_stat; int fp, ep; + const char *prg; + + prg = basename(argv[0]); + + /* Turn off getopt()'s internal error message */ + opterr = 0; /* Parse the cmdline */ - while ((option = getopt(argc, argv, "s:o:rbp:h")) != -1) { + while ((option = getopt(argc, argv, ":s:o:rbp:hV")) != -1) { switch (option) { case 's': datasize = strtol(optarg, NULL, 0); @@ -104,11 +115,19 @@ int main(int argc, char **argv) padbyte = strtol(optarg, NULL, 0); break; case 'h': - usage(argv[0]); + usage(prg); return EXIT_SUCCESS; + case 'V': + printf("%s version %s\n", prg, PLAIN_VERSION); + return EXIT_SUCCESS; + case ':': + fprintf(stderr, "Missing argument for option -%c\n", + option); + usage(argv[0]); + return EXIT_FAILURE; default: fprintf(stderr, "Wrong option -%c\n", option); - usage(argv[0]); + usage(prg); return EXIT_FAILURE; } } @@ -118,7 +137,7 @@ int main(int argc, char **argv) fprintf(stderr, "Please specify the size of the environment " "partition.\n"); - usage(argv[0]); + usage(prg); return EXIT_FAILURE; }