5555 * 11.01.2019 Add full 64/32 bit range to -o and output by Christer Jensen.
5656 * 04.02.2020 Add -d for decimal offsets by Aapo Rantalainen
5757 * 14.01.2022 Disable extra newlines with -c0 -p by Erik Auerswald.
58+ * 20.06.2022 Permit setting the variable names used by -i by David Gow
5859 *
5960 * (c) 1990-1998 by Juergen Weigert ([email protected] ) 6061 *
@@ -226,6 +227,7 @@ exit_with_usage(void)
226227 fprintf (stderr , " -h print this summary.\n" );
227228 fprintf (stderr , " -i output in C include file style.\n" );
228229 fprintf (stderr , " -l len stop after <len> octets.\n" );
230+ fprintf (stderr , " -n name set the variable name used in C include output (-i).\n" );
229231 fprintf (stderr , " -o off add <off> to the displayed file position.\n" );
230232 fprintf (stderr , " -ps output in postscript plain hexdump style.\n" );
231233 fprintf (stderr , " -r reverse operation: convert (or patch) hexdump into binary.\n" );
@@ -497,6 +499,7 @@ main(int argc, char *argv[])
497499 unsigned long displayoff = 0 ;
498500 static char l [LLEN + 1 ]; /* static because it may be too big for stack */
499501 char * pp ;
502+ char * varname = NULL ;
500503 int addrlen = 9 ;
501504
502505#ifdef AMIGA
@@ -635,6 +638,19 @@ main(int argc, char *argv[])
635638 argc -- ;
636639 }
637640 }
641+ else if (!STRNCMP (pp , "-n" , 2 ))
642+ {
643+ if (pp [2 ] && STRNCMP ("ame" , pp + 2 , 3 ))
644+ varname = pp + 2 ;
645+ else
646+ {
647+ if (!argv [2 ])
648+ exit_with_usage ();
649+ varname = argv [2 ];
650+ argv ++ ;
651+ argc -- ;
652+ }
653+ }
638654 else if (!strcmp (pp , "--" )) /* end of options */
639655 {
640656 argv ++ ;
@@ -753,10 +769,14 @@ main(int argc, char *argv[])
753769
754770 if (hextype == HEX_CINCLUDE )
755771 {
756- if (fp != stdin )
772+ /* A user-set variable name overrides fp == stdin */
773+ if (varname == NULL && fp != stdin )
774+ varname = argv [1 ];
775+
776+ if (varname != NULL )
757777 {
758- FPRINTF_OR_DIE ((fpo , "unsigned char %s" , isdigit ((int )argv [ 1 ] [0 ]) ? "__" : "" ));
759- for (e = 0 ; (c = argv [ 1 ] [e ]) != 0 ; e ++ )
778+ FPRINTF_OR_DIE ((fpo , "unsigned char %s" , isdigit ((int )varname [0 ]) ? "__" : "" ));
779+ for (e = 0 ; (c = varname [e ]) != 0 ; e ++ )
760780 putc_or_die (isalnum (c ) ? CONDITIONAL_CAPITALIZE (c ) : '_' , fpo );
761781 fputs_or_die ("[] = {\n" , fpo );
762782 }
@@ -773,11 +793,11 @@ main(int argc, char *argv[])
773793 if (p )
774794 fputs_or_die ("\n" , fpo );
775795
776- if (fp != stdin )
796+ if (varname != NULL )
777797 {
778798 fputs_or_die ("};\n" , fpo );
779- FPRINTF_OR_DIE ((fpo , "unsigned int %s" , isdigit ((int )argv [ 1 ] [0 ]) ? "__" : "" ));
780- for (e = 0 ; (c = argv [ 1 ] [e ]) != 0 ; e ++ )
799+ FPRINTF_OR_DIE ((fpo , "unsigned int %s" , isdigit ((int )varname [0 ]) ? "__" : "" ));
800+ for (e = 0 ; (c = varname [e ]) != 0 ; e ++ )
781801 putc_or_die (isalnum (c ) ? CONDITIONAL_CAPITALIZE (c ) : '_' , fpo );
782802 FPRINTF_OR_DIE ((fpo , "_%s = %d;\n" , capitalize ? "LEN" : "len" , p ));
783803 }
0 commit comments