diff --git a/src/frontend/subckt.c b/src/frontend/subckt.c index 5e00900ae..3b8e81729 100644 --- a/src/frontend/subckt.c +++ b/src/frontend/subckt.c @@ -1605,6 +1605,23 @@ modtranslate(struct line *c, char *subname, wordlist *new_modnames) * Q1 c b e 2N3904 * after: Q1 c b e U1:2N3904 *-------------------------------------------------------------------*/ + +static void +translate_mod_name(struct bxx_buffer *buffer, char *modname, char *subname, struct wordlist *orig_modnames) +{ + /* + * Note that we compare against orig_modnames, + * which is the list of untranslated names of models. + */ + wordlist *wlsub = wl_find(modname, orig_modnames); + + if (!wlsub) + bxx_printf(buffer, "%s", modname); + else + bxx_printf(buffer, "%s:%s", subname, modname); +} + + static void devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames) { @@ -1672,18 +1689,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames) } } /* while */ - - /* - * Note that we compare against orig_modnames, - * which is the list of untranslated names of models. - */ - wlsub = wl_find(name, orig_modnames); - - if (!wlsub) - bxx_printf(&buffer, "%s", name); - else - bxx_printf(&buffer, "%s:%s", subname, name); - + translate_mod_name(&buffer, name, subname, orig_modnames); tfree(name); bxx_putc(&buffer, ' '); @@ -1714,24 +1720,14 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames) if (*t) { /* if there is a model, process it. . . . */ name = gettok(&t); - wlsub = wl_find(name, orig_modnames); - - if (!wlsub) - bxx_printf(&buffer, "%s", name); - else - bxx_printf(&buffer, "%s:%s", subname, name); + translate_mod_name(&buffer, name, subname, orig_modnames); tfree(name); bxx_putc(&buffer, ' '); } if (*t) { name = gettok(&t); - wlsub = wl_find(name, orig_modnames); - - if (!wlsub) - bxx_printf(&buffer, "%s", name); - else - bxx_printf(&buffer, "%s:%s", subname, name); + translate_mod_name(&buffer, name, subname, orig_modnames); tfree(name); bxx_putc(&buffer, ' '); } @@ -1753,12 +1749,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames) tfree(name); name = gettok(&t); - wlsub = wl_find(name, orig_modnames); - - if (!wlsub) - bxx_printf(&buffer, "%s", name); - else - bxx_printf(&buffer, "%s:%s", subname, name); + translate_mod_name(&buffer, name, subname, orig_modnames); tfree(name); bxx_putc(&buffer, ' '); @@ -1786,13 +1777,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames) tfree(name); name = gettok(&t); - wlsub = wl_find(name, orig_modnames); - - if (!wlsub) - bxx_printf(&buffer, "%s", name); - else - bxx_printf(&buffer, "%s:%s", subname, name); - + translate_mod_name(&buffer, name, subname, orig_modnames); tfree(name); bxx_putc(&buffer, ' '); bxx_put_cstring(&buffer, t); @@ -1825,13 +1810,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames) tfree(name); name = gettok(&t); - wlsub = wl_find(name, orig_modnames); - - if (!wlsub) - bxx_printf(&buffer, "%s", name); - else - bxx_printf(&buffer, "%s:%s", subname, name); - + translate_mod_name(&buffer, name, subname, orig_modnames); bxx_putc(&buffer, ' '); bxx_put_cstring(&buffer, t); tfree(s->li_line); @@ -1924,12 +1903,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames) } #endif - wlsub = wl_find(name, orig_modnames); - if (!wlsub) /* Fallback w/o subckt name before */ - bxx_printf(&buffer, "%s", name); - else - bxx_printf(&buffer, "%s:%s", subname, name); - + translate_mod_name(&buffer, name, subname, orig_modnames); tfree(name); bxx_putc(&buffer, ' '); @@ -1960,13 +1934,7 @@ devmodtranslate(struct line *s, char *subname, wordlist * const orig_modnames) } } /* while */ - wlsub = wl_find(name, orig_modnames); - - if (!wlsub) - bxx_printf(&buffer, "%s", name); - else - bxx_printf(&buffer, "%s:%s", subname, name); - + translate_mod_name(&buffer, name, subname, orig_modnames); tfree(name); bxx_putc(&buffer, ' ');