diff options
Diffstat (limited to 'ext/mysql/libmysql/strmov.c')
| -rw-r--r-- | ext/mysql/libmysql/strmov.c | 38 | 
1 files changed, 38 insertions, 0 deletions
diff --git a/ext/mysql/libmysql/strmov.c b/ext/mysql/libmysql/strmov.c new file mode 100644 index 0000000000..b41470aef4 --- /dev/null +++ b/ext/mysql/libmysql/strmov.c @@ -0,0 +1,38 @@ +/* +  strmov(dst, src) moves all the  characters  of  src  (including  the +  closing NUL) to dst, and returns a pointer to the new closing NUL in +  dst.	 The similar UNIX routine strcpy returns the old value of dst, +  which I have never found useful.  strmov(strmov(dst,a),b) moves a//b +  into dst, which seems useful. +*/ + +#include <global.h> +#include "m_string.h" + +#ifdef BAD_STRING_COMPILER +#undef strmov +#define strmov strmov_overlapp +#endif + +#if !defined(MC68000) && !defined(DS90) + +char *strmov(register char *dst, register const char *src) +{ +  while (*dst++ = *src++) ; +  return dst-1; +} + +#else + +char *strmov(dst, src) +     char *dst, *src; +{ +  asm("		movl	4(a7),a1	"); +  asm("		movl	8(a7),a0	"); +  asm(".L4:	movb	(a0)+,(a1)+	"); +  asm("		jne	.L4		"); +  asm("		movl	a1,d0		"); +  asm("		subql	#1,d0		"); +} + +#endif  | 
