int main(int argc, char** argv) { Css_t* css; Cssfd_t* fp; Connection_t* con; char* e; State_t state; NoP(argc); error_info.id = "css"; memset(&state, 0, sizeof(state)); state.disc.version = CSS_VERSION; state.disc.flags = CSS_DAEMON|CSS_ERROR|CSS_INTERRUPT; state.disc.acceptf = acceptf; state.disc.actionf = actionf; state.disc.errorf = errorf; state.disc.exceptf = exceptf; for (;;) { switch (optget(argv, usage)) { case 't': state.disc.timeout = strelapsed(opt_info.arg, &e, 1); if (*e) error(3, "%s: invalid timeout value", opt_info.arg); state.disc.flags |= CSS_DORMANT; continue; case '?': error(ERROR_USAGE|4, "%s", opt_info.arg); continue; case ':': error(2, "%s", opt_info.arg); continue; } break; } argv += opt_info.index; if (!argv[0] || !argv[1]) error(ERROR_USAGE|4, "%s", optusage(NiL)); if (!(state.tmp = sfstropen())) error(ERROR_SYSTEM|3, "out of space [tmp stream]"); if (!(state.proc = procopen(argv[1], argv + 1, NiL, NiL, PROC_READ|PROC_WRITE))) error(ERROR_SYSTEM|3, "%s: cannot execute", argv[1]); if (!(css = cssopen(argv[0], &state.disc))) return 1; if (!(fp = cssfd(css, state.proc->rfd, CS_POLL_READ))) error(ERROR_SYSTEM|3, "%s: cannot poll output", argv[1]); if (!(con = newof(0, Connection_t, 1, 0))) error(ERROR_SYSTEM|3, "out of space"); fp->data = con; con->service = 1; csspoll(CS_NEVER, 0); return 1; }
int main(int argc, char** argv) { char* e; State_t state; NoP(argc); error_info.id = "mbb"; memset(&state, 0, sizeof(state)); state.disc.version = CSS_VERSION; state.disc.flags = CSS_DAEMON|CSS_ERROR|CSS_INTERRUPT|CSS_LOG; state.disc.acceptf = acceptf; state.disc.actionf = actionf; state.disc.errorf = errorf; state.disc.exceptf = exceptf; for (;;) { switch (optget(argv, usage)) { case 'b': state.backlog = opt_info.num; continue; case 'd': error_info.trace = -opt_info.num; continue; case 't': state.disc.timeout = strelapsed(opt_info.arg, &e, 1); if (*e) error(3, "%s: invalid timeout value", opt_info.arg); state.disc.flags |= CSS_DORMANT; continue; case '?': error(ERROR_USAGE|4, "%s", opt_info.arg); continue; case ':': error(2, "%s", opt_info.arg); continue; } break; } argv += opt_info.index; if (!argv[0] || argv[1]) error(ERROR_USAGE|4, "%s", optusage(NiL)); if (!(state.tmp = sfstropen())) error(ERROR_SYSTEM|3, "out of space [tmp stream]"); if (!cssopen(argv[0], &state.disc)) return 1; umask(S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH); csspoll(CS_NEVER, 0); return 1; }