Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
Arquivo: main.c Projeto: dancahill/nsp
/* 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;
}