|
|
1.1 root 1: #ifndef lint
2: static char sccsid[] = "@(#)utility.c 4.1 (Berkeley) 3/23/83";
3: #endif not lint
4:
5: /*
6: ** ASSORTED UTILITY ROUTINES
7: */
8:
9: /*
10: ** BLOCK MOVE
11: **
12: ** Moves a block of storage of length `l' bytes from the data
13: ** area pointed to by `a' to the area pointed to by `b'.
14: ** Returns the address of the byte following the `b' field.
15: ** Overflow of `b' is not tested.
16: */
17:
18: char *bmove(a, b, l)
19: char *a, *b;
20: int l;
21: {
22: register int n;
23: register char *p, *q;
24:
25: p = a;
26: q = b;
27: n = l;
28: while (n--)
29: *q++ = *p++;
30: return (q);
31: }
32:
33:
34: /*
35: ** STRING EQUALITY TEST
36: ** null-terminated strings `a' and `b' are tested for
37: ** absolute equality.
38: ** returns one if equal, zero otherwise.
39: */
40:
41: sequal(a, b)
42: char *a, *b;
43: {
44: register char *p, *q;
45:
46: p = a;
47: q = b;
48: while (*p || *q)
49: if (*p++ != *q++)
50: return(0);
51: return(1);
52: }
53:
54:
55: /*
56: ** STRING CONCATENATE
57: **
58: ** The strings `s1' and `s2' are concatenated and stored into
59: ** `s3'. It is ok for `s1' to equal `s3', but terrible things
60: ** will happen if `s2' equals `s3'. The return value is is a
61: ** pointer to the end of `s3' field.
62: */
63:
64: char *concat(s1, s2, s3)
65: char *s1, *s2, *s3;
66: {
67: register char *p;
68: register char *q;
69:
70: p = s3;
71: q = s1;
72: while (*q)
73: *p++ = *q++;
74: q = s2;
75: while (*q)
76: *p++ = *q++;
77: *p = 0;
78: return (p);
79: }
80:
81:
82: /*
83: ** FIND STRING LENGTH
84: **
85: ** The length of string `s' (excluding the null byte which
86: ** terminates the string) is returned.
87: */
88:
89: length(s)
90: char *s;
91: {
92: register int l;
93: register char *p;
94:
95: l = 0;
96: p = s;
97: while (*p++)
98: l++;
99: return(l);
100: }
101:
102:
103: /*
104: ** SYSTEM ERROR
105: */
106:
107: syserr(p0, p1, p2, p3, p4, p5)
108: {
109: extern int errno;
110:
111: printf("\n\07TREK SYSERR: ");
112: printf(p0, p1, p2, p3, p4, p5);
113: printf("\n");
114: if (errno)
115: printf("\tsystem error %d\n", errno);
116: exit(-1);
117: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.