X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=tools%2Fmkenvimage.c;h=c5ed373b99217cd09b7c84578abae27e4ee09661;hb=13b178edc242cb7b61b6f4264456f7061fa3cf5b;hp=9c32f4a5725fc8503c42f958f705eb683a3b8bbc;hpb=a6337e6ffdea211e70dd8d6c638f6a5ec2295400;p=oweals%2Fu-boot.git diff --git a/tools/mkenvimage.c b/tools/mkenvimage.c index 9c32f4a572..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; } } @@ -116,9 +135,9 @@ int main(int argc, char **argv) /* Check datasize and allocate the data */ if (datasize == 0) { fprintf(stderr, - "Please specify the size of the envrionnment " + "Please specify the size of the environment " "partition.\n"); - usage(argv[0]); + usage(prg); return EXIT_FAILURE; } @@ -182,12 +201,12 @@ int main(int argc, char **argv) ret = close(txt_fd); } /* - * The right test to do is "=>" (not ">") because of the additionnal + * The right test to do is "=>" (not ">") because of the additional * ending \0. See below. */ if (filesize >= envsize) { fprintf(stderr, "The input file is larger than the " - "envrionnment partition size\n"); + "environment partition size\n"); return EXIT_FAILURE; } @@ -196,7 +215,7 @@ int main(int argc, char **argv) if (filebuf[fp] == '\n') { if (fp == 0) { /* - * Newline at the beggining of the file ? + * Newline at the beginning of the file ? * Ignore it. */ continue;