Partially implemented RFE #2471534 and some other minor improvements
[fw/sdcc] / device / include / string.h
index fb84dd497661fc2d9aa896112199f447ecaf4b43..7b41c64d64d4971f56e5254d04f94f819788bb86 100644 (file)
 #ifndef __SDC51_STRING_H
 #define __SDC51_STRING_H 1
 
-#ifndef SDCC_mcs51
-#define reentrant
+#ifndef NULL
+# define NULL (void *)0
 #endif
 
-#define memmove memcpy
-
-#ifdef SDCC_STACK_AUTO
-#ifdef SDCC_mcs51
-#warning Make sure you recompiled _str*.c and _mem*.c library functions as 'reentrant'
+#ifndef _SIZE_T_DEFINED
+# define _SIZE_T_DEFINED
+  typedef unsigned int size_t;
 #endif
 
-extern char *strcpy (char *, char *) reentrant ;
-extern char *strncpy(char *, char *,int ) reentrant ;
-extern char *strcat (char *, char *) reentrant ;
-extern char *strncat(char *, char *,int ) reentrant ;
-extern int   strcmp (char *, char *) reentrant ;
-extern int   strncmp(char *, char *,int ) reentrant ;
-extern char *strchr (char *, char  ) reentrant ;
-extern char *strrchr(char *, char  ) reentrant ;
-extern int   strspn (char *, char *) reentrant ;
-extern int   strcspn(char *, char *) reentrant ;
-extern char *strpbrk(char *, char *) reentrant ;
-extern char *strstr (char *, char *) reentrant ;
-extern int   strlen (char *        ) reentrant ;
-extern char *strtok (char *, char *) reentrant ;
-extern void *memcpy (void *, void *, int ) reentrant ;
-extern int   memcmp (void *, void *, int ) reentrant ;
-extern void *memset (void *, unsigned char  , int ) reentrant ;
-#else
-
 extern char *strcpy (char *, char *)  ;
-extern char *strncpy(char *, char *,int )  ;
+extern char *strncpy(char *, char *, size_t )  ;
 extern char *strcat (char *, char *)  ;
-extern char *strncat(char *, char *,int )  ;
+extern char *strncat(char *, char *, size_t )  ;
 extern int   strcmp (char *, char *)  ;
-extern int   strncmp(char *, char *,int )  ;
+extern int   strncmp(char *, char *, size_t )  ;
 extern char *strchr (char *, char  )  ;
 extern char *strrchr(char *, char  )  ;
 extern int   strspn (char *, char *)  ;
@@ -71,14 +49,17 @@ extern char *strpbrk(char *, char *)  ;
 extern char *strstr (char *, char *)  ;
 extern int   strlen (char *  )  ;
 extern char *strtok (char *, char *)  ;
-extern void *memcpy (void *, void *, int )  ;
-extern int   memcmp (void *, void *, int )  ;
-extern void *memset (void *, unsigned char  , int )  ;
+extern void *memcpy (void *, void *, size_t )  ;
+extern int   memcmp (void *, void *, size_t )  ;
+extern void *memset (void *, unsigned char  , size_t )  ;
+extern void *memmove (void *, void *, size_t )  ;
 
-#if SDCC_ds390
-extern void xdata * memcpyx(void xdata *, void xdata *, int) _naked;
+#ifdef SDCC_ds390
+extern void __xdata * memcpyx(void __xdata *, void __xdata *, int) __naked;
 #endif
 
+#ifdef SDCC_z80
+#define memcpy(dst, src, n) __builtin_memcpy(dst, src, n)
 #endif
 
 #endif