scripts: add -N option to mkhash for printing without newline
authorINAGAKI Hiroshi <musashino.open@gmail.com>
Thu, 17 Dec 2020 14:44:28 +0000 (23:44 +0900)
committerPetr Štetiar <ynezz@true.cz>
Tue, 22 Dec 2020 18:11:50 +0000 (19:11 +0100)
Added "-N" option, it allow printing hash(es) without newline.

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
scripts/mkhash.c

index 32924332134515cba51f9208dc3e350c34cb885b..ed3d42d4c35c2dc6d8c165fc386c4be8f90d77bf 100644 (file)
@@ -747,6 +747,7 @@ static int usage(const char *progname)
        fprintf(stderr, "Usage: %s <hash type> [options] [<file>...]\n"
                "Options:\n"
                "       -n              Print filename(s)\n"
+               "       -N              Suppress trailing newline\n"
                "\n"
                "Supported hash types:", progname);
 
@@ -771,7 +772,8 @@ static struct hash_type *get_hash_type(const char *name)
 }
 
 
-static int hash_file(struct hash_type *t, const char *filename, bool add_filename)
+static int hash_file(struct hash_type *t, const char *filename, bool add_filename,
+       bool no_newline)
 {
        const char *str;
 
@@ -801,9 +803,10 @@ static int hash_file(struct hash_type *t, const char *filename, bool add_filenam
        }
 
        if (add_filename)
-               printf("%s %s\n", str, filename ? filename : "-");
+               printf("%s %s%s", str, filename ? filename : "-",
+                       no_newline ? "" : "\n");
        else
-               printf("%s\n", str);
+               printf("%s%s", str, no_newline ? "" : "\n");
        return 0;
 }
 
@@ -813,13 +816,16 @@ int main(int argc, char **argv)
        struct hash_type *t;
        const char *progname = argv[0];
        int i, ch;
-       bool add_filename = false;
+       bool add_filename = false, no_newline = false;
 
-       while ((ch = getopt(argc, argv, "n")) != -1) {
+       while ((ch = getopt(argc, argv, "nN")) != -1) {
                switch (ch) {
                case 'n':
                        add_filename = true;
                        break;
+               case 'N':
+                       no_newline = true;
+                       break;
                default:
                        return usage(progname);
                }
@@ -836,10 +842,10 @@ int main(int argc, char **argv)
                return usage(progname);
 
        if (argc < 2)
-               return hash_file(t, NULL, add_filename);
+               return hash_file(t, NULL, add_filename, no_newline);
 
        for (i = 0; i < argc - 1; i++) {
-               int ret = hash_file(t, argv[1 + i], add_filename);
+               int ret = hash_file(t, argv[1 + i], add_filename, no_newline);
                if (ret)
                        return ret;
        }