示例#1
0
int
main(int argc, char *argv[])
{
	char *path;
	int exitval = 0;
	int c, i;
	int mflag = 0;
	int errflg = 0;
	mode_t umsk = umask(0);
	mode_t mode = ALLRW & (~umsk);

	(void) setlocale(LC_ALL, "");
#if	!defined(TEXT_DOMAIN)	/* Should be defined by cc -D */
#define	TEXT_DOMAIN "SYS_TEST"	/* Use this only if it weren't */
#endif
	(void) textdomain(TEXT_DOMAIN);

	if (argc < 2) {
		usage();
		exit(1);
	}

	while ((c = getopt(argc, argv, "m:")) != EOF) {
		switch (c) {
		case 'm':
			mflag++;
			mode = newmode(optarg, ALLRW, umsk, "", "");
			break;

		default:
			errflg++;
			break;
		}
	}

	if (argc < optind || errflg) {
		usage();
		exit(1);
	}

	for (i = optind; i < argc; i++) {
		path = argv[i];
		if (mkfifo(path, mode) < 0) {
			perror("mkfifo");
			exitval = 1;
		}
	}

	return (exitval);

}
示例#2
0
文件: mesg.c 项目: 8l/FUZIX
int main(int argc, char *argv[])
{
	int r=0;
	tty = ttyname(2);
	if(stat(tty, &sbuf) < 0) err(1, "cannot stat");
	if(argc < 2) {
		if(sbuf.st_mode & 02)
			fprintf(stderr,"is y\n");
		else {	r=1;
			fprintf(stderr,"is n\n");
		}
	} else	switch(*argv[1]) {
		case 'y':
			newmode(0622); break;

		case 'n':
			newmode(0600); r=1; break;

		default:
			errx(-1, "usage: mesg [y] [n]");
		}
	exit(r);
}
示例#3
0
int
main(int argc, char *argv[])
{
	int ch;
	struct cfg cfg;
	int i;
	
	bzero(&cfg, sizeof(cfg));
	cfg.controlfile = "/dev/etherswitch0";
	while ((ch = getopt(argc, argv, "f:mv?")) != -1)
		switch(ch) {
		case 'f':
			cfg.controlfile = optarg;
			break;
		case 'm':
			cfg.mediatypes++;
			break;
		case 'v':
			cfg.verbose++;
			break;
		case '?':
			/* FALLTHROUGH */
		default:
			usage();
		}
	argc -= optind;
	argv += optind;
	cfg.fd = open(cfg.controlfile, O_RDONLY);
	if (cfg.fd < 0)
		err(EX_UNAVAILABLE, "Can't open control file: %s", cfg.controlfile);
	if (ioctl(cfg.fd, IOETHERSWITCHGETINFO, &cfg.info) != 0)
		err(EX_OSERR, "ioctl(IOETHERSWITCHGETINFO)");
	if (argc == 0) {
		print_info(&cfg);
		return (0);
	}
	cfg.mode = MODE_NONE;
	while (argc > 0) {
		switch(cfg.mode) {
		case MODE_NONE:
			if (strcmp(argv[0], "info") == 0) {
				print_info(&cfg);
			} else if (sscanf(argv[0], "port%d", &cfg.unit) == 1) {
				if (cfg.unit < 0 || cfg.unit >= cfg.info.es_nports)
					errx(EX_USAGE, "port unit must be between 0 and %d", cfg.info.es_nports);
				newmode(&cfg, MODE_PORT);
			} else if (sscanf(argv[0], "vlangroup%d", &cfg.unit) == 1) {
				if (cfg.unit < 0 || cfg.unit >= cfg.info.es_nvlangroups)
					errx(EX_USAGE, "port unit must be between 0 and %d", cfg.info.es_nvlangroups);
				newmode(&cfg, MODE_VLANGROUP);
			} else if (strcmp(argv[0], "phy") == 0) {
				newmode(&cfg, MODE_PHYREG);
			} else if (strcmp(argv[0], "reg") == 0) {
				newmode(&cfg, MODE_REGISTER);
			} else {
				errx(EX_USAGE, "Unknown command \"%s\"", argv[0]);
			}
			break;
		case MODE_PORT:
		case MODE_VLANGROUP:
			for(i=0; cmds[i].name != NULL; i++) {
				if (cfg.mode == cmds[i].mode && strcmp(argv[0], cmds[i].name) == 0
					&& argc >= cmds[i].args) {
					(cmds[i].f)(&cfg, argv);
					argc -= cmds[i].args;
					argv += cmds[i].args;
					break;
				}
			}
			if (cmds[i].name == NULL) {
				newmode(&cfg, MODE_NONE);
				continue;
			}
			break;
		case MODE_REGISTER:
			if (set_register(&cfg, argv[0]) != 0) {
				newmode(&cfg, MODE_NONE);
				continue;
			}
			break;
		case MODE_PHYREG:
			if (set_phyregister(&cfg, argv[0]) != 0) {
				newmode(&cfg, MODE_NONE);
				continue;
			}
			break;
		}
		argc--;
		argv++;
	}
	/* switch back to command mode to print configuration for last command */
	newmode(&cfg, MODE_NONE);
	close(cfg.fd);
	return (0);
}