int main(int argc, char **argv) { check_for_root_maybe_die(); if (argc <= 1) usage(); argc--; argv++; if (!strncmp("help", argv[0], strlen("help"))) usage(); else if (!strncmp("version", argv[0], strlen("version"))) version(); else if (!strncmp("preload", argv[0], strlen("preload"))) do_preload(--argc, ++argv); else if (!strncmp("add", argv[0], strlen("add"))) do_add(--argc, ++argv); else if (!strncmp("set", argv[0], strlen("set"))) do_set(--argc, ++argv); else if (!strncmp("rm", argv[0], strlen("rm"))) do_rm(--argc, ++argv); else if (!strncmp("flag", argv[0], strlen("flag"))) do_flag(--argc, ++argv); else if (!strncmp("unflag", argv[0], strlen("unflag"))) do_unflag(--argc, ++argv); else if (!strncmp("bind-e", argv[0], strlen("bind-e"))) do_bind(--argc, ++argv, BIND_TYPE_EGR); else if (!strncmp("bind-i", argv[0], strlen("bind-i"))) do_bind(--argc, ++argv, BIND_TYPE_INGR); else if (!strncmp("bind", argv[0], strlen("bind"))) do_bind(--argc, ++argv, BIND_TYPE_NORM); else if (!strncmp("unbind-e", argv[0], strlen("unbind-e"))) do_unbind(--argc, ++argv, BIND_TYPE_EGR); else if (!strncmp("unbind-i", argv[0], strlen("unbind-i"))) do_unbind(--argc, ++argv, BIND_TYPE_INGR); else if (!strncmp("unbind", argv[0], strlen("unbind"))) do_unbind(--argc, ++argv, BIND_TYPE_NORM); else if (!strncmp("replace", argv[0], strlen("replace"))) do_replace(--argc, ++argv, 0); else if (!strncmp("replace-drop", argv[0], strlen("replace-drop"))) do_replace(--argc, ++argv, 1); else if (!strncmp("subscribe", argv[0], strlen("subscribe"))) do_subscribe(--argc, ++argv); else if (!strncmp("unsubscribe", argv[0], strlen("unsubscribe"))) do_unsubscribe(--argc, ++argv); else usage(); return 0; }
/* int main(int argc, char *argv[], char *environ[]) */ int main(int argc, char *argv[]) { char tmpbuf[MAX_OBJNAMELEN + 1]; obj_t *tobj; int i; char *p; char c; short intstatus = 0; short preload = 1; char *fn=NULL; setvbuf(stdout, NULL, _IONBF, 0); if (argc < 2) { do_banner(); do_help(argv[0]); return -1; } if ((N = nsp_newstate()) == NULL) return -1; setsigs(); N->debug = 0; //nspbase_register_all(N); /* add env */ tobj = nsp_settable(N, &N->g, "_ENV"); for (i = 0;environ[i] != NULL;i++) { strncpy(tmpbuf, environ[i], MAX_OBJNAMELEN); p = strchr(tmpbuf, '='); if (!p) continue; *p = '\0'; p = strchr(environ[i], '=') + 1; nsp_setstr(N, tobj, tmpbuf, p, -1); } /* add args */ tobj = nsp_settable(N, &N->g, "_ARGS"); for (i = 0;i < argc;i++) { n_ntoa(N, tmpbuf, i, 10, 0); nsp_setstr(N, tobj, tmpbuf, argv[i], -1); } tobj = nsp_settable(N, &N->g, "io"); nsp_setcfunc(N, tobj, "gets", (NSP_CFUNC)neslib_io_gets); for (i = 1;i < argc;i++) { if (argv[i] == NULL) break; if (argv[i][0] == '-') { c = argv[i][1]; if (!c) { break; } else if ((c == 'd') || (c == 'D')) { N->debug = 1; } else if ((c == 's') || (c == 'S')) { intstatus = 1; } else if ((c == 'b') || (c == 'B')) { preload = 0; } else if ((c == 'e') || (c == 'E')) { if (++i < argc) { if (preload) do_preload(N); nsp_exec(N, argv[i]); if (N->err) goto err; } } else if ((c == 'f') || (c == 'F')) { if (++i < argc) { preppath(N, argv[i]); set_console_title(N); if (preload) do_preload(N); fn=argv[i]; nsp_execfile(N, fn); if (N->err) goto err; } } else if ((c == 'v') || (c == 'V')) { printf(NSP_VERSION "\r\n"); return 0; } else { do_help(argv[0]); return -1; } } else { preppath(N, argv[i]); set_console_title(N); if (preload) do_preload(N); fn=argv[i]; nsp_execfile(N, fn); if (N->err) goto err; } } err: if (N->err) printf("%s\r\n", N->errbuf); nsp_freestate(N); if (intstatus || N->allocs != N->frees) printstate(N, fn); nsp_endstate(N); return 0; }