xref: /csrg-svn/old/sh/string.c (revision 6706)
1*6706Smckusick /*	string.c	4.1	82/05/07	*/
2*6706Smckusick 
3*6706Smckusick #
4*6706Smckusick /*
5*6706Smckusick  * UNIX shell
6*6706Smckusick  *
7*6706Smckusick  * S. R. Bourne
8*6706Smckusick  * Bell Telephone Laboratories
9*6706Smckusick  *
10*6706Smckusick  */
11*6706Smckusick 
12*6706Smckusick #include	"defs.h"
13*6706Smckusick 
14*6706Smckusick 
15*6706Smckusick /* ========	general purpose string handling ======== */
16*6706Smckusick 
17*6706Smckusick 
18*6706Smckusick STRING	movstr(a,b)
19*6706Smckusick 	REG STRING	a, b;
20*6706Smckusick {
21*6706Smckusick 	WHILE *b++ = *a++ DONE
22*6706Smckusick 	return(--b);
23*6706Smckusick }
24*6706Smckusick 
25*6706Smckusick INT	any(c,s)
26*6706Smckusick 	REG CHAR	c;
27*6706Smckusick 	STRING		s;
28*6706Smckusick {
29*6706Smckusick 	REG CHAR d;
30*6706Smckusick 
31*6706Smckusick 	WHILE d = *s++
32*6706Smckusick 	DO	IF d==c
33*6706Smckusick 		THEN	return(TRUE);
34*6706Smckusick 		FI
35*6706Smckusick 	OD
36*6706Smckusick 	return(FALSE);
37*6706Smckusick }
38*6706Smckusick 
39*6706Smckusick INT	cf(s1, s2)
40*6706Smckusick 	REG STRING s1, s2;
41*6706Smckusick {
42*6706Smckusick 	WHILE *s1++ == *s2
43*6706Smckusick 	DO	IF *s2++==0
44*6706Smckusick 		THEN	return(0);
45*6706Smckusick 		FI
46*6706Smckusick 	OD
47*6706Smckusick 	return(*--s1 - *s2);
48*6706Smckusick }
49*6706Smckusick 
50*6706Smckusick INT	length(as)
51*6706Smckusick 	STRING as;
52*6706Smckusick {
53*6706Smckusick 	REG STRING s;
54*6706Smckusick 
55*6706Smckusick 	IF s=as THEN WHILE *s++ DONE FI
56*6706Smckusick 	return(s-as);
57*6706Smckusick }
58