Devkit8000: Switch over to enable_gpmc_cs_config
[oweals/u-boot.git] / tools / mkenvimage.c
index b7b0e0fade0f8252bfcda5f671103c6002386c51..c5ed373b99217cd09b7c84578abae27e4ee09661 100644 (file)
@@ -25,6 +25,9 @@
  * MA 02111-1307 USA
  */
 
+/* We want the GNU version of basename() */
+#define _GNU_SOURCE
+
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
@@ -36,6 +39,7 @@
 #include <sys/stat.h>
 
 #include <u-boot/crc.h>
+#include <version.h>
 
 #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 <byte> : fill the image with <byte> 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;
        }