diff --git a/src/frontend/numparam/general.h b/src/frontend/numparam/general.h index 208ad8487..aa7eeb6c7 100644 --- a/src/frontend/numparam/general.h +++ b/src/frontend/numparam/general.h @@ -17,5 +17,6 @@ void cadd(SPICE_DSTRINGPTR s, char c); bool alfa(char c); bool alfanum(char c); +bool alfanumps(char c); int yes_or_no(void); diff --git a/src/frontend/numparam/mystring.c b/src/frontend/numparam/mystring.c index 251cf2b4b..fa9e67092 100644 --- a/src/frontend/numparam/mystring.c +++ b/src/frontend/numparam/mystring.c @@ -149,3 +149,11 @@ alfanum(char c) { return alfa(c) || ((c >= '0') && (c <= '9')); } + + +/* Additionally '-' allowed in subckt name if ps compatible */ +bool +alfanumps(char c) +{ + return alfa(c) || ((c >= '0') && (c <= '9')) || c == '-'; +} diff --git a/src/frontend/numparam/spicenum.c b/src/frontend/numparam/spicenum.c index cd79d133f..ee4eddc13 100644 --- a/src/frontend/numparam/spicenum.c +++ b/src/frontend/numparam/spicenum.c @@ -28,6 +28,7 @@ Todo: #include "ngspice/fteext.h" #include "ngspice/stringskip.h" +#include "ngspice/compatmode.h" #ifdef SHARED_MODULE extern ATTRIBUTE_NORETURN void shared_exit(int status); @@ -185,8 +186,12 @@ findsubname(dico_t *dico, SPICE_DSTRINGPTR dstr_p) char *t; entry_t *entry; /* check for known subckt name */ - for (t = p; alfanum(*t); t++) - ; + if (inp_compat_mode == COMPATMODE_PS) + for (t = p; alfanumps(*t); t++) + ; + else + for (t = p; alfanum(*t); t++) + ; spice_dstring_reinit(&name); pscopy(&name, p, t); entry = entrynb(dico, spice_dstring_value(&name));