1 /*-
2 * %sccs.include.proprietary.c%
3 */
4
5 #ifndef lint
6 static char sccsid[] = "@(#)0.string.c 8.1 (Berkeley) 06/06/93";
7 #endif /* not lint */
8
9 #include <stdio.h>
10 #include "def.h"
11 #include "1.defs.h"
12
str_copy(s,ptr,length)13 str_copy(s,ptr,length) /* copy s at ptr, return length of s */
14 char *s, *ptr;
15 int length;
16 {int i;
17 for (i = 0; i < length; i++)
18 {
19 ptr[i] = s[i];
20 if (ptr[i] == '\0')
21 return(i + 1);
22 }
23 faterr("string too long to be copied at given address:\n",s,"");
24 }
25
26
find(s,ar,size)27 find(s,ar,size)
28 char *s,*ar[];
29 int size;
30 {
31 int i;
32 for (i=0; i < size; i++)
33 {if (str_eq(s, ar[i])) return(i);}
34 return(-1);
35 }
36
37
str_eq(s,t)38 str_eq(s,t)
39 char s[],t[];
40 {int j;
41 for (j = 0; s[j] == t[j]; j++)
42 {if (s[j] == '\0') return(1);}
43 return(0);
44 }
45
46
classmatch(c,i)47 classmatch(c,i)
48 char c;
49 int i;
50 {switch(i)
51 {case _digit:
52 if ('0' <= c && c <= '9') return(1);
53 else return(0);
54
55 case _letter:
56 if ( ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))
57 return(1);
58 else return(0);
59
60 case _diglet: return(classmatch(c,_digit)||classmatch(c,_letter) );
61
62 case _arith:
63 if (050 <= c && c<= 057) return(1);
64 else return(0);
65 case _nl:
66 return(c=='\n');
67 case _other:
68 return(1);
69 }
70 }
71
72
copychars(cbeg,target,n)73 copychars(cbeg,target,n) /* copy n chars from cbeg to target */
74 char *cbeg, *target;
75 int n;
76 {
77 int i;
78 for (i = 0; i < n; i++)
79 target[i] = cbeg[i];
80 }
81
82
83
copycs(cbeg,target,n)84 copycs(cbeg,target,n) /* copy n chars from cbeg to target, add '\0' */
85 char *cbeg, *target;
86 int n;
87 {
88 copychars(cbeg,target,n);
89 target[n] = '\0';
90 }
91
92
slength(s)93 slength(s) /* return number of chars in s, not counting '\0' */
94 char *s;
95 {
96 int i;
97 if (!s) return(-1);
98 for (i = 0; s[i] != '\0'; i++);
99 return(i);
100 }
101
102
concat(x,y)103 concat(x,y) /* allocate space, return xy */
104 char *x, *y;
105 {
106 char *temp;
107 int i,j;
108 i = slength(x);
109 j = slength(y);
110 temp = galloc(i + j + 1);
111 sprintf(temp,"%s",x);
112 sprintf(&temp[i],"%s",y);
113 return(temp);
114 }
115