X-Git-Url: https://git.subgeniuskitty.com/unix-history/.git/blobdiff_plain/95f51977ddc18faa2e212f30c00a39540b39f325..ca67e7b465996afb3821d6a075c4dc6a7f0f5d52:/usr/src/ucb/script.c diff --git a/usr/src/ucb/script.c b/usr/src/ucb/script.c index fc518f5e0e..04f7d49fbe 100644 --- a/usr/src/ucb/script.c +++ b/usr/src/ucb/script.c @@ -1,41 +1,48 @@ /* * Copyright (c) 1980 Regents of the University of California. - * All rights reserved. The Berkeley software License Agreement - * specifies the terms and conditions for redistribution. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that the above copyright notice and this paragraph are + * duplicated in all such forms and that any documentation, + * advertising materials, and other materials related to such + * distribution and use acknowledge that the software was developed + * by the University of California, Berkeley. The name of the + * University may not be used to endorse or promote products derived + * from this software without specific prior written permission. + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED + * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef lint char copyright[] = "@(#) Copyright (c) 1980 Regents of the University of California.\n\ All rights reserved.\n"; -#endif not lint +#endif /* not lint */ #ifndef lint -static char sccsid[] = "@(#)script.c 5.4 (Berkeley) 11/13/85"; -#endif not lint +static char sccsid[] = "@(#)script.c 5.6 (Berkeley) 6/29/88"; +#endif /* not lint */ /* * script */ -#include -#include #include #include #include -#include #include #include +#include +#include -char *getenv(); -char *ctime(); char *shell; FILE *fscript; int master; int slave; int child; int subchild; -char *fname = "typescript"; -int finish(); +char *fname; struct sgttyb b; struct tchars tc; @@ -50,31 +57,38 @@ main(argc, argv) int argc; char *argv[]; { + extern char *optarg; + extern int optind; + int ch; + int finish(); + char *getenv(); - shell = getenv("SHELL"); - if (shell == 0) - shell = "/bin/sh"; - argc--, argv++; - while (argc > 0 && argv[0][0] == '-') { - switch (argv[0][1]) { - + while ((ch = getopt(argc, argv, "a")) != EOF) + switch((char)ch) { case 'a': aflg++; break; - + case '?': default: - fprintf(stderr, - "usage: script [ -a ] [ typescript ]\n"); + fprintf(stderr, "usage: script [-a] [file]\n"); exit(1); } - argc--, argv++; - } + argc -= optind; + argv += optind; + if (argc > 0) fname = argv[0]; + else + fname = "typescript"; if ((fscript = fopen(fname, aflg ? "a" : "w")) == NULL) { perror(fname); fail(); } + + shell = getenv("SHELL"); + if (shell == NULL) + shell = "/bin/sh"; + getmaster(); printf("Script started, file is %s\n", fname); fixtty(); @@ -101,8 +115,8 @@ main(argc, argv) doinput() { + register int cc; char ibuf[BUFSIZ]; - int cc; (void) fclose(fscript); while ((cc = read(0, ibuf, BUFSIZ)) > 0) @@ -128,12 +142,12 @@ finish() dooutput() { - time_t tvec; - char obuf[BUFSIZ]; - int cc; + register int cc; + time_t tvec, time(); + char obuf[BUFSIZ], *ctime(); (void) close(0); - tvec = time((time_t *)0); + tvec = time((time_t *)NULL); fprintf(fscript, "Script started on %s", ctime(&tvec)); for (;;) { cc = read(master, obuf, sizeof (obuf)); @@ -185,10 +199,11 @@ fail() done() { - time_t tvec; + time_t tvec, time(); + char *ctime(); if (subchild) { - tvec = time((time_t *)0); + tvec = time((time_t *)NULL); fprintf(fscript,"\nscript done on %s", ctime(&tvec)); (void) fclose(fscript); (void) close(master);