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