Annotation of 3BSD/cmd/px/utilities.c, revision 1.1.1.1

1.1       root        1: #include       "stdio.h"
                      2: #include       "h00vars.h"
                      3: #include       "h01errs.h"
                      4: #include       "h02opcs.h"
                      5: 
                      6: /*
                      7:  * allocate a block of storage on the heap
                      8:  */
                      9: char   *palloc(need)
                     10: 
                     11: long   need;
                     12: 
                     13: {
                     14: extern  char *malloc();
                     15: register char *memblk, *ptr;
                     16: 
                     17: memblk = malloc(need);
                     18: if (memblk == 0)
                     19:        error(EOUTOFMEM);
                     20: if (memblk == (char *)(-1))
                     21:        error(ETRASHHEAP);
                     22: for(ptr=memblk; ptr<memblk+need; ptr++)
                     23:        *ptr = 0;
                     24: return(memblk);
                     25: }
                     26: 
                     27: 
                     28: 
                     29: /*
                     30:  * Free a block of storage on the stack
                     31:  */
                     32: pfree(ptr)
                     33: 
                     34: char   *ptr;
                     35: 
                     36: {
                     37: extern long free();
                     38: 
                     39: if (ptr == 0)
                     40:        error(ENILPTR);
                     41: else if (free(ptr) == -1)
                     42:        error(ETRASHHEAP);
                     43: }
                     44: 
                     45: /*
                     46:  * Constant set constructor (yechh!)
                     47:  */
                     48: 
                     49: #define        sets    int short
                     50: 
                     51: sets   *pcttot(uprbp, lwrb, n, av)
                     52: 
                     53: int    uprbp, lwrb, n;
                     54: sets   av;
                     55: 
                     56: {
                     57: register int l, h;
                     58: register sets *set, *ap;
                     59: 
                     60:        ap = &av;
                     61:        set = &ap[2 * n];
                     62:        while(--n >= 0) {
                     63:                if ((l = *ap++ - lwrb) < 0 || l > uprbp ||
                     64:                    (h = *ap++ - lwrb) < 0 || h > uprbp)
                     65:                        error(ECTTOT);
                     66:                while (l <= h) {
                     67:                        set[l >> 4] = set[l >> 4] | 1 << (l & 017);
                     68:                        l++;
                     69:                }
                     70:        }
                     71:        return(set);
                     72: }
                     73: 
                     74: char   pd_date[] = {
                     75:        8, 9, 10, 4, 5, 6, 10, 22, 23, 10, 0
                     76: };
                     77: 
                     78: char *ctime();
                     79: 
                     80: pdattim(op, alfap)
                     81: register char *alfap;
                     82: {
                     83:        register char *ap, *cp, *dp;
                     84:        long a;
                     85:        int i;
                     86: 
                     87:        time(&a);
                     88:        cp = ctime(&a);
                     89:        ap = alfap;
                     90:        if (op == O_DATE)
                     91:                for (dp = pd_date; *dp; *ap++ = cp[*dp++]);
                     92:        else
                     93:                for (cp = cp + 10, i = 10; i; *ap++ = *cp++, i--);
                     94: }
                     95: 
                     96: psexit(code)
                     97: 
                     98: long   code;
                     99: {
                    100: 
                    101: pmflush();
                    102: if (mode == PIX && nodump == 0) {
                    103:        fputs("Execution terminated",stderr);
                    104:        if (code)
                    105:                fputs(" abnormally",stderr);
                    106:        fputc('.',stderr);
                    107:        fputc('\n',stderr);
                    108:        }
                    109: stats();
                    110: exit(code);
                    111: }

unix.superglobalmegacorp.com

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