BSD 3 development
[unix-history] / usr / src / cmd / px / utilities.c
CommitLineData
a96faa1f
CH
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 */
9char *palloc(need)
10
11long need;
12
13{
14extern char *malloc();
15register char *memblk, *ptr;
16
17memblk = malloc(need);
18if (memblk == 0)
19 error(EOUTOFMEM);
20if (memblk == (char *)(-1))
21 error(ETRASHHEAP);
22for(ptr=memblk; ptr<memblk+need; ptr++)
23 *ptr = 0;
24return(memblk);
25}
26
27
28
29/*
30 * Free a block of storage on the stack
31 */
32pfree(ptr)
33
34char *ptr;
35
36{
37extern long free();
38
39if (ptr == 0)
40 error(ENILPTR);
41else if (free(ptr) == -1)
42 error(ETRASHHEAP);
43}
44\f
45/*
46 * Constant set constructor (yechh!)
47 */
48
49#define sets int short
50
51sets *pcttot(uprbp, lwrb, n, av)
52
53int uprbp, lwrb, n;
54sets av;
55
56{
57register int l, h;
58register 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\f
74char pd_date[] = {
75 8, 9, 10, 4, 5, 6, 10, 22, 23, 10, 0
76};
77
78char *ctime();
79
80pdattim(op, alfap)
81register 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\f
96psexit(code)
97
98long code;
99{
100
101pmflush();
102if (mode == PIX && nodump == 0) {
103 fputs("Execution terminated",stderr);
104 if (code)
105 fputs(" abnormally",stderr);
106 fputc('.',stderr);
107 fputc('\n',stderr);
108 }
109stats();
110exit(code);
111}