Commit | Line | Data |
---|---|---|
e53fdda9 | 1 | #ifndef lint |
a639e3be | 2 | static char *sccsid = "@(#)string.c 3.2 83/11/25"; |
e53fdda9 EW |
3 | #endif |
4 | ||
5 | #include "string.h" | |
6 | ||
7 | char *malloc(); | |
a639e3be | 8 | char *sprintf(); |
e53fdda9 EW |
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 | } |