xref: /csrg-svn/usr.bin/window/string.c (revision 15595)
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