|
|
1.1 root 1: static char *sccsid = "@(#)subr.c 1.3 (Berkeley) 6/1/83";
2: /* Copyright (c) 1979 Regents of the University of California */
3: /*
4: * pi - Pascal interpreter code translator
5: *
6: * Charles Haley, Bill Joy UCB
7: * Version 1.2 January 1979
8: *
9: *
10: * pxp - Pascal execution profiler
11: *
12: * Bill Joy UCB
13: * Version 1.2 January 1979
14: */
15:
16: #include "0.h"
17:
18: #ifndef PI1
19: /*
20: * Does the string fp end in '.' and the character c ?
21: */
22: dotted(fp, c)
23: register char *fp;
24: char c;
25: {
26: register int i;
27:
28: i = strlen(fp);
29: return (i > 1 && fp[i - 2] == '.' && fp[i - 1] == c);
30: }
31:
32: /*
33: * Toggle the option c.
34: */
35: togopt(c)
36: char c;
37: {
38: register char *tp;
39:
40: tp = &opts[c-'a'];
41: *tp = 1 - *tp;
42: }
43:
44: /*
45: * Set the time vector "tvec" to the
46: * modification time stamp of the current file.
47: */
48: #include <sys/types.h>
49: #include <sys/stat.h>
50: gettime()
51: {
52: struct stat stb;
53:
54: stat(filename, &stb);
55: tvec = stb.st_mtime;
56: }
57:
58: /*
59: * Convert a "ctime" into a Pascal styple time line
60: */
61: myctime(tv)
62: long *tv;
63: {
64: register char *cp, *dp;
65: char *cpp;
66: register i;
67: static char mycbuf[26];
68:
69: cpp = ctime(tv);
70: dp = mycbuf;
71: cp = cpp;
72: cpp[16] = 0;
73: while (*dp++ = *cp++);
74: dp--;
75: cp = cpp+19;
76: cpp[24] = 0;
77: while (*dp++ = *cp++);
78: return (mycbuf);
79: }
80:
81: /*
82: * Is "fp" in the command line list of names ?
83: */
84: inpflist(fp)
85: char *fp;
86: {
87: register i, *pfp;
88:
89: pfp = pflist;
90: for (i = pflstc; i > 0; i--)
91: if (strcmp(fp, *pfp++) == 0)
92: return (1);
93: return (0);
94: }
95: #endif
96:
97: /*
98: * Boom!
99: */
100: Perror(file, error)
101: char *file, *error;
102: {
103:
104: fprintf( stderr , "%s: %s\n" , file , error );
105: }
106:
107: char *
108: alloc(size)
109: int size;
110: {
111:
112: return (calloc(size, 1));
113: }
114:
115: copy(to, from, bytes)
116: register char *to, *from;
117: register int bytes;
118: {
119:
120: if (bytes != 0)
121: do
122: *to++ = *from++;
123: while (--bytes);
124: }
125:
126: /*
127: * Is ch one of the characters in the string cp ?
128: */
129: any(cp, ch)
130: register char *cp;
131: char ch;
132: {
133:
134: while (*cp)
135: if (*cp++ == ch)
136: return (1);
137: return (0);
138: }
139:
140: opush(c)
141: register CHAR c;
142: {
143:
144: c =- 'a';
145: optstk[c] =<< 1;
146: optstk[c] =| opts[c];
147: opts[c] = 1;
148: #ifdef PI0
149: send(ROPUSH, c);
150: #endif
151: }
152:
153: opop(c)
154: register CHAR c;
155: {
156:
157: c =- 'a';
158: opts[c] = optstk[c] & 1;
159: optstk[c] =>> 1;
160: #ifdef PI0
161: send(ROPOP, c);
162: #endif
163: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.