示例#1
0
文件: var.c 项目: Dioxylin/es-shell
/* 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
}
示例#2
0
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;
}
示例#3
0
文件: prim.c 项目: Dioxylin/es-shell
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);
}
示例#4
0
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;
    }
}