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