diff --git a/src/sharedspice.c b/src/sharedspice.c index ba6dcac41..90831eca2 100644 --- a/src/sharedspice.c +++ b/src/sharedspice.c @@ -579,9 +579,9 @@ name is the initialisation file's name Return true on success SJB 25th April 2005 */ static bool -read_initialisation_file(char *dir, char *name) +read_initialisation_file(const char *dir, const char *name) { - char *path; + const char *path; bool result = FALSE; /* check name */ @@ -783,36 +783,43 @@ ngSpice_Init(SendChar* printfcn, SendStat* statusfcn, ControlledExit* ngspiceexi tfree(s); } #else /* ~ HAVE_PWD_H */ - /* load user's initialisation file .spiceinit (or old spice.rc) - try accessing the initialisation file in the current directory, - or the user's home directories HOME (Linux) and USERPROFILE (MS Windows)*/ - char *homedir; - bool userfileok = read_initialisation_file("", INITSTR); /*.spiceinit*/ - if (!userfileok) { - homedir = getenv("HOME"); - if (homedir) - userfileok = read_initialisation_file(homedir, INITSTR); - else { - homedir = getenv("USERPROFILE"); - if (homedir) - userfileok = read_initialisation_file(homedir, INITSTR); + /* load user's initialisation file + try accessing the initialisation file .spiceinit in the current directory + if that fails try the alternate name spice.rc, then look into the HOME + directory, then into USERPROFILE */ + do { + if (read_initialisation_file("", INITSTR) != FALSE) { + break; } - } - if (!userfileok) - userfileok = read_initialisation_file("", ALT_INITSTR); /*spice.rc*/ - if (!userfileok) { - homedir = getenv("HOME"); - if (homedir) - userfileok = read_initialisation_file(homedir, ALT_INITSTR); - else { - homedir = getenv("USERPROFILE"); - if (homedir) - userfileok = read_initialisation_file(homedir, ALT_INITSTR); + if (read_initialisation_file("", ALT_INITSTR) != FALSE) { + break; } - } - if (!userfileok && ft_ngdebug) - fprintf(stdout, "Warning: No user initialization file .spiceinit or spice.rc found\n"); + { + const char* const home = getenv("HOME"); + if (home) { + if (read_initialisation_file(home, INITSTR) != FALSE) { + break; + } + if (read_initialisation_file(home, ALT_INITSTR) != FALSE) { + break; + } + } + } + + { + const char* const usr = getenv("USERPROFILE"); + if (usr) { + if (read_initialisation_file(usr, INITSTR) != FALSE) { + break; + } + if (read_initialisation_file(usr, ALT_INITSTR) != FALSE) { + break; + } + } + } + } while (0); /* end of case that init file is read */ + #endif /* ~ HAVE_PWD_H */ if (!cp_getvar("nosighandling", CP_BOOL, NULL, 0))