xref: /plan9/sys/src/ape/lib/ap/gen/strcpy.c (revision 6005249839f771b7510933fd40907d385df08c04)
13e12c5d1SDavid du Colombier #include <string.h>
23e12c5d1SDavid du Colombier #define	N	10000
33e12c5d1SDavid du Colombier 
43e12c5d1SDavid du Colombier static void*
pmemccpy(void * a1,void * a2,int c,size_t n)5*60052498SDavid du Colombier pmemccpy(void *a1, void *a2, int c, size_t n)
63e12c5d1SDavid du Colombier {
73e12c5d1SDavid du Colombier 	char *s1, *s2;
83e12c5d1SDavid du Colombier 
93e12c5d1SDavid du Colombier 	s1 = a1;
103e12c5d1SDavid du Colombier 	s2 = a2;
113e12c5d1SDavid du Colombier 	while(n > 0) {
123e12c5d1SDavid du Colombier 		if((*s1++ = *s2++) == c)
133e12c5d1SDavid du Colombier 			return s1;
143e12c5d1SDavid du Colombier 		n--;
153e12c5d1SDavid du Colombier 	}
163e12c5d1SDavid du Colombier 	return 0;
173e12c5d1SDavid du Colombier }
183e12c5d1SDavid du Colombier 
193e12c5d1SDavid du Colombier char*
strcpy(char * s1,const char * s2)203e12c5d1SDavid du Colombier strcpy(char *s1, const char *s2)
213e12c5d1SDavid du Colombier {
223e12c5d1SDavid du Colombier 	char *os1;
233e12c5d1SDavid du Colombier 
243e12c5d1SDavid du Colombier 	os1 = s1;
25*60052498SDavid du Colombier 	while(!pmemccpy(s1, s2, 0, N)) {
263e12c5d1SDavid du Colombier 		s1 += N;
273e12c5d1SDavid du Colombier 		s2 += N;
283e12c5d1SDavid du Colombier 	}
293e12c5d1SDavid du Colombier 	return os1;
303e12c5d1SDavid du Colombier }
31