1 #ifndef lint 2 static char *sccsid = "@(#)string.c 3.2 83/11/25"; 3 #endif 4 5 #include "string.h" 6 7 char *malloc(); 8 char *sprintf(); 9 10 char * 11 str_cpy(s) 12 register char *s; 13 { 14 char *str; 15 register char *p; 16 17 str = p = malloc((unsigned) strlen(s) + 1); 18 if (p == 0) 19 return 0; 20 while (*p++ = *s++) 21 ; 22 return str; 23 } 24 25 char * 26 str_itoa(i) 27 int i; 28 { 29 char buf[30]; 30 31 (void) sprintf(buf, "%d", i); 32 return str_cpy(buf); 33 } 34 35 char * 36 str_cat(s1, s2) 37 char *s1, *s2; 38 { 39 char *str; 40 register char *p, *q; 41 42 str = p = malloc((unsigned) strlen(s1) + strlen(s2) + 1); 43 if (p == 0) 44 return 0; 45 for (q = s1; *p++ = *q++;) 46 ; 47 for (q = s2, p--; *p++ = *q++;) 48 ; 49 return str; 50 } 51 52 str_free(str) 53 char *str; 54 { 55 extern char end[]; 56 57 if (str >= end) 58 free(str); 59 } 60 61 /* 62 * match s against p. 63 * s can be a prefix of p with at least min characters. 64 */ 65 str_match(s, p, min) 66 register char *s, *p; 67 register min; 68 { 69 for (; *s && *p && *s == *p; s++, p++, min--) 70 ; 71 return *s == *p || *s == 0 && min <= 0; 72 } 73