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