diff --git a/src/frontend/inp.c b/src/frontend/inp.c index fbf83a2ef..1d6ba940d 100644 --- a/src/frontend/inp.c +++ b/src/frontend/inp.c @@ -54,8 +54,6 @@ static bool doedit(char *filename); static struct line *com_options = NULL; static void cktislinear(CKTcircuit *ckt, struct line *deck); static void dotifeval(struct line *deck); -static int inp_parse_temper(struct line *deck); -static void inp_parse_temper_trees(struct circ *ckt); static wordlist *inp_savecurrents(struct line *deck, struct line *options, wordlist *wl, wordlist *controls); @@ -76,6 +74,11 @@ struct pt_temper { struct pt_temper *next; }; +static int inp_parse_temper(struct line *deck, + struct pt_temper **motdlist_p, + struct pt_temper **devtlist_p); +static void inp_parse_temper_trees(struct circ *ckt); + /* List of all expressions found in .model lines */ static struct pt_temper *modtlist = NULL; @@ -640,7 +643,7 @@ inp_spsource(FILE *fp, bool comfile, char *filename, bool intfile) /* prepare parse trees from 'temper' expressions */ if (expr_w_temper) - inp_parse_temper(deck); + inp_parse_temper(deck, &modtlist, &devtlist); /* If user wants all currents saved (.options savecurrents), add .save to wl_first with all terminal currents available on selected devices */ @@ -1435,11 +1438,14 @@ dotifeval(struct line *deck) */ static int -inp_parse_temper(struct line *card) +inp_parse_temper(struct line *card, struct pt_temper **modtlist_p, struct pt_temper **devtlist_p) { int error = 0; char *end_tstr, *beg_tstr, *beg_pstr, *str_ptr, *devmodname, *paramname; + struct pt_temper *modtlist = NULL; + struct pt_temper *devtlist = NULL; + /* skip title line */ card = card->li_next; for (; card; card = card->li_next) { @@ -1561,6 +1567,9 @@ inp_parse_temper(struct line *card) } } + *modtlist_p = modtlist; + *devtlist_p = devtlist; + return error; }