int main(int argc, Char *argv[]) { /* Read in sequences or frequencies and bootstrap or jackknife them */ #ifdef MAC argc = 1; /* macsetup("SeqBoot",""); */ argv[0] = "SeqBoot"; #endif init(argc,argv); openfile(&infile, INFILE, "input file", "r", argv[0], infilename); ibmpc = IBMCRT; ansi = ANSICRT; doinput(argc, argv); bootwrite(); freenewer(); freenew(); freerest(); if (nodep) matrix_char_delete(nodep, spp); if (nodef) matrix_double_delete(nodef, spp); FClose(infile); if (factors) { FClose(factfile); FClose(outfactfile); } if (weights) FClose(weightfile); if (categories) { FClose(catfile); FClose(outcatfile); } if(mixture) FClose(outmixfile); if(ancvar) FClose(outancfile); if (justwts && !permute) { FClose(outweightfile); } else FClose(outfile); #ifdef MAC fixmacfile(outfilename); if (justwts && !permute) fixmacfile(outweightfilename); if (categories) fixmacfile(outcatfilename); if (mixture) fixmacfile(outmixfilename); #endif printf("Done.\n\n"); #ifdef WIN32 phyRestoreConsoleAttributes(); #endif return 0; }
//initialize and process command line parameters or user input int main(int argc, char *argv[]) { printf("\n%s %s, (C) 2008-2011 AJ Siemelink\n", ExeName, Version); printf("single threaded, no hashing, mode=%s, extract=%s, count=%s\n", PERFT_NAME, EXTRACT_NAME, COUNT_NAME ); Bitboard::init(); _board.setstartpos(); //arg-mode if (argc>=2) return doargs(argc, argv); //interactive mode return doinput(); }
int main() { lpPointBlankRange pointblankrange; int error; html_setfile(stdout); pointblankrange = pointblankrange_create(); if (pointblankrange) { error = doinput(pointblankrange); if (!error) pointblankrange_calculate(pointblankrange); dooutput(pointblankrange, error); pointblankrange_destroy(pointblankrange); } return 0; }
int main() { lpTrajectory trajectory; int error; html_setfile(stdout); trajectory = trajectory_create(); if (trajectory) { error = doinput(trajectory); if (!error) trajectory_calculate(trajectory); dooutput(trajectory, error); trajectory_destroy(trajectory); } return 0; }
int main() { int error; lpMcDrag mcdrag; html_setfile(stdout); mcdrag = mcdrag_create(); if (mcdrag) { error = doinput(mcdrag); if (!error) mcdrag_calculate(mcdrag); dooutput(mcdrag, error); free(mcdrag); } return 0; }
int main(int argc, Char *argv[]) { /* Read in sequences or frequencies and bootstrap or jackknife them */ #ifdef MAC argc = 1; /* macsetup("SeqBoot",""); */ argv[0] = "SeqBoot"; #endif init(argc,argv); emboss_getoptions("ffreqboot", argc, argv); ibmpc = IBMCRT; ansi = ANSICRT; doinput(argc, argv); bootwrite(); FClose(infile); if (weights) FClose(weightfile); if (categories) { FClose(catfile); FClose(outcatfile); } if(mixture) FClose(outmixfile); if(ancvar) FClose(outancfile); if (justwts && !permute) { FClose(outweightfile); } else FClose(outfile); #ifdef MAC fixmacfile(outfilename); if (justwts && !permute) fixmacfile(outweightfilename); if (categories) fixmacfile(outcatfilename); if (mixture) fixmacfile(outmixfilename); #endif printf("Done.\n\n"); #ifdef WIN32 phyRestoreConsoleAttributes(); #endif embExit(); return 0; }
int main(int argc, Char *argv[]) { /* Read in sequences or frequencies and bootstrap or jackknife them */ init(argc,argv); openfile(&infile, argv[1], "input file", "r", argv[0], infilename); reps = atol(argv[2]); doinput(argc, argv); bootwrite(); freenewer(); freenew(); freerest(); if (nodep) matrix_char_delete(nodep, spp); FClose(infile); return 0; }
int gototag(int fileptr, char *pattern) { int samefile = (fileptr == filenm); int wasmagic = magic; extern int low; /* from editcor.c, which is where findbounds lives */ magic = 0; if ( samefile ) { findbounds(pattern); if ( low < 0 ) return EOF; curr = low; } else if ( fileptr != F_UNSET ) { startcmd = pattern; doinput(fileptr); } magic = wasmagic; return samefile ? SAMEFILE : DIFFERENTFILE; }
int ttyrec_main (int game, char *username, char *ttyrec_path, char* ttyrec_filename) { char dirname[100]; /* Note our PID to let children kill the main dgl process for idling */ dgl_parent = getpid(); child = subchild = input_child = 0; if (!ttyrec_path) { child = fork(); if (child < 0) { perror ("fork"); fail (); } if (child == 0) { execvp (myconfig[game]->game_path, myconfig[game]->bin_args); } else { int status; (void) wait(&status); } return 0; } if (ttyrec_path[strlen(ttyrec_path)-1] == '/') snprintf (dirname, 100, "%s%s", ttyrec_path, ttyrec_filename); else snprintf (dirname, 100, "%s/%s", ttyrec_path, ttyrec_filename); atexit(&remove_ipfile); if ((fscript = fopen (dirname, "w")) == NULL) { perror (dirname); fail (); } setbuf (fscript, NULL); fixtty (); (void) signal (SIGCHLD, finish); child = fork (); if (child < 0) { perror ("fork"); fail (); } if (child == 0) { subchild = child = fork (); if (child < 0) { perror ("fork"); fail (); } if (child) { close (slave); ipfile = gen_inprogress_lock (game, child, ttyrec_filename); ttyrec_id(game, username, ttyrec_filename); dooutput (myconfig[game]->max_idle_time); } else doshell (game, username); } (void) fclose (fscript); wait_for_menu = 1; input_child = fork(); if (input_child < 0) { perror ("fork2"); fail (); } if (!input_child) doinput (); else { while (wait_for_menu) sleep(1); } remove_ipfile(); child = 0; return 0; }
int main(int argc, Char *argv[]) { /* Dollo or polymorphism parsimony by uphill search */ #ifdef MAC argc = 1; /* macsetup("Dollop",""); */ argv[0] = "Dollop"; #endif init(argc, argv); emboss_getoptions("fdollop", argc, argv); /* reads in spp, chars, and the data. Then calls maketree to construct the tree */ progname = argv[0]; ibmpc = IBMCRT; ansi = ANSICRT; garbage = NULL; firstset = true; bits = 8*sizeof(long) - 1; doinit(); if (dollo) fprintf(outfile, "Dollo"); else fprintf(outfile, "Polymorphism"); fprintf(outfile, " parsimony method\n\n"); if (printdata && justwts) fprintf(outfile, "%2ld species, %3ld characters\n\n", spp, chars); for (ith = 1; ith <= (msets); ith++) { if (msets > 1 && !justwts) { fprintf(outfile, "Data set # %ld:\n\n",ith); if (progress) printf("\nData set # %ld:\n",ith); } if (justwts){ fprintf(outfile, "Weights set # %ld:\n\n", ith); if (progress) printf("\nWeights set # %ld:\n\n", ith); } if (printdata && !justwts) fprintf(outfile, "%2ld species, %3ld characters\n\n", spp, chars); doinput(); if (ith == 1) firstset = false; for (jumb = 1; jumb <= njumble; jumb++) maketree(); } /* this would be an appropriate place to deallocate memory, including these items: */ free(steps); FClose(infile); FClose(outfile); FClose(outtree); #ifdef MAC fixmacfile(outfilename); fixmacfile(outtreename); #endif #ifdef WIN32 phyRestoreConsoleAttributes(); #endif embExit(); return 0; } /* Dollo or polymorphism parsimony by uphill search */
void main(int argc, char *argv[]) { int i, f, fo; char *file; kilo = 5000; obsize = ibsize = 8*1024; dsize = 0; fo = 1; off = 0; ARGBEGIN { default: usage(); case 'b': obsize = ibsize = atoi(EARGF(usage())); break; case 'd': dsize = atoi(EARGF(usage())); break; case 'f': file = EARGF(usage()); fo = create(file, 1, 0666); if(fo < 0) sysfatal("can't create %s: %r", file); break; case 'i': ibsize = atoi(EARGF(usage())); break; case 'k': kilo = atoi(EARGF(usage())); break; case 'o': obsize = atoi(EARGF(usage())); break; case 's': ssize = atoi(EARGF(usage())); if(ssize <= 0) ssize = 800; ssize <<= 10; break; case 'S': off = atoll(EARGF(usage())); if(off < 0) sysfatal("seek offset %lld must be non-negative", off); break; case 't': tsize = atoll(EARGF(usage())); tsize *= 10584000; /* minutes */ break; } ARGEND kilo <<= 10; buf = malloc(kilo); if(buf == nil) sysfatal("no memory: %r"); nin = 0; nout = 0; done = 0; max = 0; switch(rfork(RFPROC|RFNOWAIT|RFNAMEG|RFMEM)) { default: dooutput(fo); break; case 0: for(i=0; i<argc; i++) { f = open(argv[i], OREAD); if(f < 0) { fprint(2, "%s: can't open %s: %r\n", argv0, argv[i]); break; } doinput(f); close(f); } if(argc == 0) doinput(0); break; case -1: fprint(2, "%s: fork failed: %r\n", argv0); break; } done = 1; exits(0); }
int main(int argc, char **argv) { struct sigaction sa; extern int optind; char *p; int ch; progname = argv[0]; if ((p = strrchr(progname, '/')) != NULL) progname = p+1; setlocale(LC_ALL, ""); setlocale(LC_NUMERIC, "C"); /* see comment above */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); if (argc == 2) { if (!strcmp(argv[1], "-V") || !strcmp(argv[1], "--version")) { printf(_("%s (%s)\n"), progname, PACKAGE_STRING); return 0; } } while ((ch = getopt(argc, argv, "ac:fqt")) != -1) switch((char)ch) { case 'a': aflg++; break; case 'c': cflg = optarg; break; case 'f': fflg++; break; case 'q': qflg++; break; case 't': tflg++; break; case '?': default: fprintf(stderr, _("usage: script [-a] [-f] [-q] [-t] [file]\n")); exit(1); } argc -= optind; argv += optind; if (argc > 0) fname = argv[0]; else { fname = "typescript"; die_if_link(fname); } if ((fscript = fopen(fname, aflg ? "a" : "w")) == NULL) { perror(fname); fail(); } shell = getenv("SHELL"); if (shell == NULL) shell = _PATH_BSHELL; getmaster(); if (!qflg) printf(_("Script started, file is %s\n"), fname); fixtty(); sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sa.sa_handler = finish; sigaction(SIGCHLD, &sa, NULL); child = fork(); if (child < 0) { perror("fork"); fail(); } if (child == 0) { subchild = child = fork(); if (child < 0) { perror("fork"); fail(); } if (child) dooutput(); else doshell(); } else { sa.sa_handler = resize; sigaction(SIGWINCH, &sa, NULL); } doinput(); return 0; }
int main(int argc, char **argv) { sigset_t block_mask, unblock_mask; struct sigaction sa; int ch; FILE *timingfd = stderr; enum { FORCE_OPTION = CHAR_MAX + 1 }; static const struct option longopts[] = { { "append", no_argument, NULL, 'a' }, { "command", required_argument, NULL, 'c' }, { "return", no_argument, NULL, 'e' }, { "flush", no_argument, NULL, 'f' }, { "force", no_argument, NULL, FORCE_OPTION, }, { "quiet", no_argument, NULL, 'q' }, { "timing", optional_argument, NULL, 't' }, { "version", no_argument, NULL, 'V' }, { "help", no_argument, NULL, 'h' }, { NULL, 0, NULL, 0 } }; setlocale(LC_ALL, ""); setlocale(LC_NUMERIC, "C"); /* see comment above */ bindtextdomain(PACKAGE, LOCALEDIR); textdomain(PACKAGE); atexit(close_stdout); while ((ch = getopt_long(argc, argv, "ac:efqt::Vh", longopts, NULL)) != -1) switch(ch) { case 'a': aflg = 1; break; case 'c': cflg = optarg; break; case 'e': eflg = 1; break; case 'f': fflg = 1; break; case FORCE_OPTION: forceflg = 1; break; case 'q': qflg = 1; break; case 't': if (optarg) if ((timingfd = fopen(optarg, "w")) == NULL) err(EXIT_FAILURE, _("cannot open timing file %s"), optarg); tflg = 1; break; case 'V': printf(_("%s from %s\n"), program_invocation_short_name, PACKAGE_STRING); exit(EXIT_SUCCESS); break; case 'h': usage(stdout); break; case '?': default: usage(stderr); } argc -= optind; argv += optind; if (argc > 0) fname = argv[0]; else { fname = DEFAULT_OUTPUT; die_if_link(fname); } if ((fscript = fopen(fname, aflg ? "a" : "w")) == NULL) { warn(_("open failed: %s"), fname); fail(); } shell = getenv("SHELL"); if (shell == NULL) shell = _PATH_BSHELL; getmaster(); if (!qflg) printf(_("Script started, file is %s\n"), fname); fixtty(); #ifdef HAVE_LIBUTEMPTER utempter_add_record(master, NULL); #endif /* setup SIGCHLD handler */ sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sa.sa_handler = finish; sigaction(SIGCHLD, &sa, NULL); /* init mask for SIGCHLD */ sigprocmask(SIG_SETMASK, NULL, &block_mask); sigaddset(&block_mask, SIGCHLD); sigprocmask(SIG_SETMASK, &block_mask, &unblock_mask); child = fork(); sigprocmask(SIG_SETMASK, &unblock_mask, NULL); if (child < 0) { warn(_("fork failed")); fail(); } if (child == 0) { sigprocmask(SIG_SETMASK, &block_mask, NULL); subchild = child = fork(); sigprocmask(SIG_SETMASK, &unblock_mask, NULL); if (child < 0) { warn(_("fork failed")); fail(); } if (child) dooutput(timingfd); else doshell(); } else { sa.sa_handler = resize; sigaction(SIGWINCH, &sa, NULL); } doinput(); if (close_stream(timingfd) != 0) errx(EXIT_FAILURE, _("write error")); return EXIT_SUCCESS; }
void conv(register FILE *fp, int baseline) { register FILE *gfp = NULL; /* input file pointer */ register int done = 0; /* flag to remember if finished */ register ELT *e; /* current element pointer */ ELT *PICTURE; /* whole picture data base pointer */ double temp; /* temporary calculating area */ /* POINT ptr; */ /* coordinates of a point to pass to `mov' */ /* routine */ int flyback; /* flag `want to end up at the top of the */ /* picture?' */ int compat; /* test character after .GE or .GF */ initpic(); /* set defaults, ranges, etc. */ strcpy(GScommand, inputline); /* save `.GS' line for later */ do { done = !doinput(fp); /* test for EOF */ flyback = (*c3 == 'F'); /* and .GE or .GF */ compat = (compatibility_flag || *c4 == '\n' || *c4 == ' ' || *c4 == '\0'); done |= (*c1 == '.' && *c2 == 'G' && (*c3 == 'E' || flyback) && compat); if (done) { if (setdefault) savestate(); if (!gremlinfile[0]) { if (!setdefault) error("at line %1: no picture filename.\n", baseline); return; } char *path; gfp = macro_path.open_file(gremlinfile, &path); if (!gfp) return; PICTURE = DBRead(gfp); /* read picture file */ fclose(gfp); a_delete path; if (DBNullelt(PICTURE)) return; /* If a request is made to make the */ /* picture fit into a specific area, */ /* set the scale to do that. */ if (stipple == (char *) NULL) /* if user forgot stipple */ if (has_polygon(PICTURE)) /* and picture has a polygon */ stipple = (char *)DEFSTIPPLE; /* then set the default */ if ((temp = bottompoint - toppoint) < 0.1) temp = 0.1; temp = (height != 0.0) ? height / (temp * SCREENtoINCH) : BIG; if ((troffscale = rightpoint - leftpoint) < 0.1) troffscale = 0.1; troffscale = (width != 0.0) ? width / (troffscale * SCREENtoINCH) : BIG; if (temp == BIG && troffscale == BIG) troffscale = xscale; else { if (temp < troffscale) troffscale = temp; } /* here, troffscale is the */ /* picture's scaling factor */ if (pointscale) { register int i; /* do pointscaling here, when */ /* scale is known, before output */ for (i = 0; i < SIZES; i++) tsize[i] = (int) (troffscale * (double) tsize[i] + 0.5); } /* change to device units */ troffscale *= SCREENtoINCH * res; /* from screen units */ ytop = (int) (toppoint * troffscale); /* calculate integer */ ybottom = (int) (bottompoint * troffscale); /* versions of the */ xleft = (int) (leftpoint * troffscale); /* picture limits */ xright = (int) (rightpoint * troffscale); /* save stuff in number registers, */ /* register g1 = picture width and */ /* register g2 = picture height, */ /* set vertical spacing, no fill, */ /* and break (to make sure picture */ /* starts on left), and put out the */ /* user's `.GS' line. */ printf(".br\n" ".nr g1 %du\n" ".nr g2 %du\n" "%s" ".nr g3 \\n(.f\n" ".nr g4 \\n(.s\n" "\\0\n" ".sp -1\n", xright - xleft, ybottom - ytop, GScommand); if (stipple) /* stipple requested for this picture */ printf(".st %s\n", stipple); lastx = xleft; /* note where we are (upper left */ lastyline = lasty = ytop; /* corner of the picture) */ /* Just dump everything in the order it appears. * * If -s command-line option, traverse picture twice: First time, * print only the interiors of filled polygons (as borderless * polygons). Second time, print the outline as series of line * segments. This way, postprocessors that overwrite rather than * merge picture elements (such as Postscript) can still have text and * graphics on a shaded background. */ /* if (sflag) */ if (!sflag) { /* changing the default for filled polygons */ e = PICTURE; polyfill = FILL; while (!DBNullelt(e)) { printf(".mk\n"); if (e->type == POLYGON) HGPrintElt(e, baseline); printf(".rt\n"); lastx = xleft; lastyline = lasty = ytop; e = DBNextElt(e); } } e = PICTURE; /* polyfill = !sflag ? BOTH : OUTLINE; */ polyfill = sflag ? BOTH : OUTLINE; /* changing the default */ while (!DBNullelt(e)) { printf(".mk\n"); HGPrintElt(e, baseline); printf(".rt\n"); lastx = xleft; lastyline = lasty = ytop; e = DBNextElt(e); } /* decide where to end picture */ /* I changed everything here. I always use the combination .mk and */ /* .rt so once finished I just space down the heigth of the picture */ /* that is \n(g2u */ if (flyback) { /* end picture at upper left */ /* ptr.x = leftpoint; ptr.y = toppoint; */ } else { /* end picture at lower left */ /* ptr.x = leftpoint; ptr.y = bottompoint; */ printf(".sp \\n(g2u\n"); } /* tmove(&ptr); */ /* restore default line parameters */ /* restore everything to the way it was before the .GS, then put */ /* out the `.GE' line from user */ /* printf("\\D't %du'\\D's %du'\n", DEFTHICK, DEFSTYLE); */ /* groff doesn't understand the \Ds command */ printf("\\D't %du'\n", DEFTHICK); if (flyback) /* make sure we end up at top of */ printf(".sp -1\n"); /* picture if `flying back' */ if (stipple) /* restore stipple to previous */ printf(".st\n"); printf(".br\n" ".ft \\n(g3\n" ".ps \\n(g4\n" "%s", inputline); } else interpret(inputline); /* take commands from the input file */ } while (!done); }
int main(int argc, char **argv) { setlocale(LC_NUMERIC, "C"); program_name = argv[0]; register FILE *fp; register int k; register char c; register int gfil = 0; char *file[50]; char *operand(int *argcp, char ***argvp); while (--argc) { if (**++argv != '-') file[gfil++] = *argv; else switch (c = (*argv)[1]) { case 0: file[gfil++] = NULL; break; case 'C': /* compatibility mode */ compatibility_flag = TRUE; break; case 'F': /* font path to find DESC */ font::command_line_font_dir(operand(&argc, &argv)); break; case 'T': /* final output typesetter name */ device = operand(&argc, &argv); break; case 'M': /* set library directory */ macro_path.command_line_dir(operand(&argc, &argv)); break; case 's': /* preserve order of elements */ sflag = 1; break; case '-': if (strcmp(*argv,"--version")==0) { case 'v': printf("GNU grn (groff) version %s\n", Version_string); exit(0); break; } if (strcmp(*argv,"--help")==0) { case '?': usage(stdout); exit(0); break; } // fallthrough default: error("unknown switch: %1", c); usage(stderr); exit(1); } } getres(); /* set the resolution for an output device */ if (gfil == 0) { /* no filename, use standard input */ file[0] = NULL; gfil++; } for (k = 0; k < gfil; k++) { if (file[k] != NULL) { if ((fp = fopen(file[k], "r")) == NULL) fatal("can't open %1", file[k]); } else fp = stdin; while (doinput(fp)) { if (*c1 == '.' && *c2 == 'G' && *c3 == 'S') { if (compatibility_flag || *c4 == '\n' || *c4 == ' ' || *c4 == '\0') conv(fp, linenum); else fputs(inputline, stdout); } else fputs(inputline, stdout); } } return 0; }
int Active_StartSession() { log = fopen("log_file", "w"); /* FIXME hardcoded */ if (pipe(xfer_fifo)) { ERROR("Pipe creation failure"); return 1; } /* FIXME end hardcoded */ mpty = dopty(); if (!mpty) { ERROR("Pty creation failed"); return 1; } fixtty(); if (USE_FORKS) { signal(SIGCHLD, finish); /* we create 2 forks, one acts as a new shell and the other * continues the process of this code. * * child 0 continues to run this code * and child > 0 runs the new shell */ child = fork(); if (child < 0) { ERROR("Creation of fork failed"); return 1; } /* printf("CHILD %d\n", getpid()); */ if (child == 0) { child = fork(); /* printf("CHILD2 %d\n", getpid()); */ if (child == 0) { subchild = child = fork(); /* printf("CHILD3 %d\n", getpid()); */ TRACE(Neuro_s("Process %d -- PTY size : col %d row %d", getpid(), mpty->wsize.ws_col, mpty->wsize.ws_row)); if (child == 0) doshell(); else dooutput(); } doinput(); } else signal(SIGWINCH, resize); } else { signal(SIGWINCH, resize); child = fork(); if (child < 0) { ERROR("Creation of fork failed"); return 1; } if (child > 0) doshell(); } fcntl(xfer_fifo[0], F_SETFL, O_NONBLOCK); close(xfer_fifo[1]); /* activate the polling */ activated = 1; return 0; }
int main(int argc, Char *argv[]) { /* Penny's branch-and-bound method */ /* Reads in the number of species, number of characters, options and data. Then finds all most parsimonious trees */ #ifdef MAC argc = 1; /* macsetup("Penny",""); */ argv[0] = "Penny"; #endif init(argc,argv); openfile(&infile,INFILE,"input file", "r",argv[0],infilename); openfile(&outfile,OUTFILE,"output file", "w",argv[0],outfilename); ibmpc = IBMCRT; ansi = ANSICRT; mulsets = false; msets = 1; firstset = true; garbage = NULL; bits = 8*sizeof(long) - 1; doinit(); if (weights || justwts) openfile(&weightfile,WEIGHTFILE,"weights file","r",argv[0],weightfilename); if (trout) openfile(&outtree,OUTTREE,"output tree file", "w",argv[0],outtreename); if(ancvar) openfile(&ancfile,ANCFILE,"ancestors file", "r",argv[0],ancfilename); if(mixture) openfile(&mixfile,MIXFILE,"mixture file", "r",argv[0],mixfilename); for (ith = 1; ith <= msets; ith++) { if(firstset) { if (allsokal && !mixture) fprintf(outfile, "Camin-Sokal parsimony method\n\n"); if (allwagner && !mixture) fprintf(outfile, "Wagner parsimony method\n\n"); } doinput(); if (msets > 1 && !justwts) { fprintf(outfile, "Data set # %ld:\n\n",ith); if (progress) printf("\nData set # %ld:\n",ith); } if (justwts) { if(firstset && mixture && printdata) printmixture(outfile, wagner); fprintf(outfile, "Weights set # %ld:\n\n", ith); if (progress) printf("\nWeights set # %ld:\n\n", ith); } else if (mixture && printdata) printmixture(outfile, wagner); if (printdata) { if (weights || justwts) printweights(outfile, 0, chars, weight, "Characters"); if (ancvar) printancestors(outfile, anczero, ancone); } if (ith == 1) firstset = false; maketree(); } FClose(infile); FClose(outfile); FClose(outtree); #ifdef MAC fixmacfile(outfilename); fixmacfile(outtreename); #endif #ifdef WIN32 phyRestoreConsoleAttributes(); #endif return 0; } /* Penny's branch-and-bound method */
int main(int argc, char *argv[]) { uid_t ruidt; gid_t gidt; (void) setlocale(LC_ALL, ""); #if !defined(TEXT_DOMAIN) #define TEXT_DOMAIN "SYS_TEST" #endif (void) textdomain(TEXT_DOMAIN); shell = getenv("SHELL"); if (shell == NULL) shell = "/bin/sh"; argc--, argv++; while (argc > 0 && argv[0][0] == '-') { switch (argv[0][1]) { case 'a': aflg++; break; default: fprintf(stderr, gettext("usage: script [ -a ] [ typescript ]\n")); exit(1); } argc--, argv++; } if (argc > 0) fname = argv[0]; ruidt = getuid(); gidt = getgid(); if ((fscript = fopen(fname, aflg ? "a" : "w")) == NULL) { perror(fname); fail(); } setbuf(fscript, NULL); chown(fname, ruidt, gidt); getmaster(); printf(gettext("Script started, file is %s\n"), fname); fixtty(); (void) signal(SIGCHLD, finish); child = fork(); if (child < 0) { perror("fork"); fail(); } if (child == 0) { subchild = child = fork(); if (child < 0) { perror("fork"); fail(); } if (child) dooutput(); else doshell(); } doinput(); /* NOTREACHED */ return (0); }