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 
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 	}
115