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