diff --git a/b2/boom.c b/b2/boom.c index 5b9257b..1bf5e1a 100644 --- a/b2/boom.c +++ b/b2/boom.c @@ -75,7 +75,7 @@ static void do_substitutions(void) static void usage(const char *name) { fprintf(stderr, -"usage: %s file [[-type] file ...] [(-q|-Q) var=value ...] ...\n\n" +"usage: %s file [[-N name] [-type] file ...] [(-q|-Q) var=value ...] ...\n\n" " file types:\n" " -c characteristics\n" " -i inventory\n" @@ -84,6 +84,8 @@ static void usage(const char *name) " -s substitutions\n" " -b KiCad eeschema BOM\n" " -X symbols (BOM supplement)\n" +" other options:\n" +" -N name for the next file, override the name in diagnostics\n" " -q var=value ... run substitutions with the specified inputs\n" " -Q var=value ... run substitutions and then do parametric search\n" , name); @@ -99,7 +101,10 @@ int main(int argc, char **argv) dollar = unique("$"); for (i = 1; i != argc; i++) { if (*argv[i] == '-') { - if (!strcmp(argv[i], "-c")) + if (!strcmp(argv[i], "-N")) { + i++; + file_name_override = argv[i]; + } else if (!strcmp(argv[i], "-c")) process = parse_characteristics; else if (!strcmp(argv[i], "-i")) process = parse_inventory; diff --git a/b2/lang.h b/b2/lang.h index fa1256e..869ce20 100644 --- a/b2/lang.h +++ b/b2/lang.h @@ -22,6 +22,8 @@ extern const char *dollar; /* "$" */ extern struct action hierarchy; extern struct subst *substitutions; +extern const char *file_name_override; + void parse_hierarchy(const char *name); void parse_characteristics(const char *name); void parse_inventory(const char *name); diff --git a/b2/lang.l b/b2/lang.l index abb5951..6fe325b 100644 --- a/b2/lang.l +++ b/b2/lang.l @@ -25,6 +25,8 @@ extern int yyparse(void); +const char *file_name_override; + static int start_token; static int expose_nl; /* 0: ignore \n; 1: return TOK_NL */ static int pattern; /* 0: = relops are normal; 1: relops switch to PAT */ @@ -56,7 +58,8 @@ static void do_parse(const char *name, int start, int nl, int pat) start_token = start; expose_nl = nl; pattern = pat; - file_name = unique(name); + file_name = file_name_override ? file_name_override : unique(name); + file_name_override = NULL; lineno = 1; yyparse(); }