/* initvars -- initialize the variable machinery */ extern void initvars(void) { globalroot(&vars); globalroot(&noexport); globalroot(&env); globalroot(&sortenv); vars = mkdict(); noexport = NULL; env = mkvector(10); #if ABUSED_GETENV # if READLINE initgetenv(); # endif #endif }
extern void esoptbegin(List *list, const char *caller, const char *usagemsg) { static Boolean initialized = FALSE; if (!initialized) { initialized = TRUE; globalroot(&usage); globalroot(&invoker); globalroot(&args); globalroot(&termarg); } assert(usage == NULL); usage = usagemsg; invoker = caller; args = list; termarg = NULL; nextchar = 0; }
extern void initprims(void) { prims = mkdict(); globalroot(&prims); prims = initprims_controlflow(prims); prims = initprims_io(prims); prims = initprims_etc(prims); prims = initprims_sys(prims); prims = initprims_proc(prims); prims = initprims_access(prims); #define primdict prims X(primitives); }
extern void startsplit(const char *sep, Boolean coalescef) { static Boolean initialized = FALSE; if (!initialized) { initialized = TRUE; globalroot(&value); } value = NULL; buffer = NULL; coalesce = coalescef; splitchars = !coalesce && *sep == '\0'; if (!ifsvalid || !streq(sep, ifs)) { int c; if (strlen(sep) + 1 < sizeof ifs) { strcpy(ifs, sep); ifsvalid = TRUE; } else ifsvalid = FALSE; memzero(isifs, sizeof isifs); for (isifs['\0'] = TRUE; (c = (*(unsigned const char *)sep)) != '\0'; sep++) isifs[c] = TRUE; } }