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); }
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); }
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); }