Annotation of 40BSD/cmd/time.c, revision 1.1.1.1

1.1       root        1: static char *sccsid = "@(#)time.c      4.2 (Berkeley) 10/9/80";
                      2: /* time command */
                      3: 
                      4: #include <stdio.h>
                      5: #include <signal.h>
                      6: #include <sys/types.h>
                      7: #include <sys/times.h>
                      8: 
                      9: extern int errno;
                     10: extern char *sys_errlist[];
                     11: 
                     12: main(argc, argv)
                     13: char **argv;
                     14: {
                     15:        struct tms buffer, obuffer;
                     16:        int status;
                     17:        register p;
                     18:        time_t before, after;
                     19: 
                     20:        if(argc<=1)
                     21:                exit(0);
                     22:        time(&before);
                     23:        p = fork();
                     24:        if(p == -1) {
                     25:                fprintf(stderr, "Try again.\n");
                     26:                exit(1);
                     27:        }
                     28:        if(p == 0) {
                     29:                execvp(argv[1], &argv[1]);
                     30:                fprintf(stderr, "%s: %s\n", argv[1], sys_errlist[errno]);
                     31:                exit(1);
                     32:        }
                     33:        signal(SIGINT, SIG_IGN);
                     34:        signal(SIGQUIT, SIG_IGN);
                     35:        times(&obuffer);
                     36:        while(wait(&status) != p)
                     37:                times(&obuffer);
                     38:        time(&after);
                     39:        if((status&0377) != 0)
                     40:                fprintf(stderr,"Command terminated abnormally.\n");
                     41:        times(&buffer);
                     42:        printt("real", (after-before) * 60);
                     43:        printt("user", buffer.tms_cutime - obuffer.tms_cutime);
                     44:        printt("sys ", buffer.tms_cstime - obuffer.tms_cstime);
                     45:        fprintf(stderr, "\n");
                     46:        exit(status>>8);
                     47: }
                     48: 
                     49: char quant[] = { 6, 10, 10, 6, 10, 6, 10, 10, 10 };
                     50: char *pad  = "000      ";
                     51: char *sep  = "\0\0.\0:\0:\0\0";
                     52: char *nsep = "\0\0.\0 \0 \0\0";
                     53: 
                     54: printt(s, a)
                     55: char *s;
                     56: long a;
                     57: {
                     58:        char digit[9];
                     59:        register i;
                     60:        char c;
                     61:        int nonzero;
                     62: 
                     63:        for(i=0; i<9; i++) {
                     64:                digit[i] = a % quant[i];
                     65:                a /= quant[i];
                     66:        }
                     67:        nonzero = 0;
                     68:        while(--i>0) {
                     69:                c = digit[i]!=0 ? digit[i]+'0':
                     70:                    nonzero ? '0':
                     71:                    pad[i];
                     72:                if (c)
                     73:                fprintf(stderr,"%c",c);
                     74:                nonzero |= digit[i];
                     75:                c = nonzero?sep[i]:nsep[i];
                     76:                if (c)
                     77:                fprintf(stderr,"%c",c);
                     78:        }
                     79:        fprintf(stderr," %s ",s);
                     80: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.