]> git.karo-electronics.de Git - karo-tx-uboot.git/blobdiff - tools/mkenvimage.c
rsa: Split the rsa-verify to separate the modular exponentiation
[karo-tx-uboot.git] / tools / mkenvimage.c
index 4001d2f517d78040653a2c51c5194e70552fc123..6971b91314fc1707ef78fc2bf2714d13b8f5cb81 100644 (file)
@@ -6,28 +6,9 @@
  * (C) Copyright 2001
  * Paolo Scaffardi, AIRVENT SAM s.p.a - RIMINI(ITALY), arsenio@tin.it
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
-/* We want the GNU version of basename() */
-#define _GNU_SOURCE
-
 #include <errno.h>
 #include <fcntl.h>
 #include <stdio.h>
 
 #define CRC_SIZE sizeof(uint32_t)
 
-#ifdef __MINGW32__
-#define FILE_PERM              (S_IRUSR | S_IWUSR)
-#else
-#define FILE_PERM              (S_IRUSR | S_IWUSR | S_IRGRP |\
-                                            S_IWGRP)
-#endif
-
 static void usage(const char *exec_name)
 {
        fprintf(stderr, "%s [-h] [-r] [-b] [-p <byte>] -s <environment partition size> -o <output> <input file>\n"
@@ -63,6 +37,8 @@ static void usage(const char *exec_name)
               "\t\tkey1=value1\n"
               "\t\tkey2=value2\n"
               "\t\t...\n"
+              "\tEmpty lines are skipped, and lines with a # in the first\n"
+              "\tcolumn are treated as comments (also skipped).\n"
               "\t-r : the environment has multiple copies in flash\n"
               "\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"
@@ -247,10 +223,9 @@ int main(int argc, char **argv)
        /* Replace newlines separating variables with \0 */
        for (fp = 0, ep = 0 ; fp < filesize ; fp++) {
                if (filebuf[fp] == '\n') {
-                       if (ep == 0) {
+                       if (fp == 0 || filebuf[fp-1] == '\n') {
                                /*
-                                * Newlines at the beginning of the file ?
-                                * Ignore them.
+                                * Skip empty lines.
                                 */
                                continue;
                        } else if (filebuf[fp-1] == '\\') {
@@ -266,6 +241,10 @@ int main(int argc, char **argv)
                                /* End of a variable */
                                envptr[ep++] = '\0';
                        }
+               } else if ((fp == 0 || filebuf[fp-1] == '\n') && filebuf[fp] == '#') {
+                       /* Comment, skip the line. */
+                       while (++fp < filesize && filebuf[fp] != '\n')
+                       continue;
                } else {
                        envptr[ep++] = filebuf[fp];
                }
@@ -300,7 +279,8 @@ int main(int argc, char **argv)
        if (!bin_filename || strcmp(bin_filename, "-") == 0) {
                bin_fd = STDOUT_FILENO;
        } else {
-               bin_fd = creat(bin_filename, FILE_PERM);
+               bin_fd = creat(bin_filename, S_IRUSR | S_IWUSR | S_IRGRP |
+                                            S_IWGRP);
                if (bin_fd == -1) {
                        fprintf(stderr, "Can't open output file \"%s\": %s\n",
                                        bin_filename, strerror(errno));