Commit | Line | Data |
---|---|---|
0fc6e47b KB |
1 | /*- |
2 | * %sccs.include.proprietary.c% | |
3 | */ | |
4 | ||
778ba7d8 | 5 | #ifndef lint |
0fc6e47b KB |
6 | static char sccsid[] = "@(#)0.string.c 4.2 (Berkeley) %G%"; |
7 | #endif /* not lint */ | |
778ba7d8 RH |
8 | |
9 | #include <stdio.h> | |
10 | #include "def.h" | |
11 | #include "1.defs.h" | |
12 | ||
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
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 | ||
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 | } |