mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-01 10:57:21 +00:00
Make sure that for systems where the string functions are actually macros
that we undefine the macro before using its name in the definition. This can happen on Linux if _GNU_SOURCE is defined. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17071 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
71d3778c0b
commit
2bf0292432
@ -7,12 +7,18 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
#ifdef strlen
|
||||||
|
#undef strlen
|
||||||
|
#endif
|
||||||
size_t strlen(const char *Str) {
|
size_t strlen(const char *Str) {
|
||||||
size_t Count = 0;
|
size_t Count = 0;
|
||||||
while (*Str) { ++Count; ++Str; }
|
while (*Str) { ++Count; ++Str; }
|
||||||
return Count;
|
return Count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef strdup
|
||||||
|
#undef strdup
|
||||||
|
#endif
|
||||||
char *strdup(const char *str) {
|
char *strdup(const char *str) {
|
||||||
size_t Len = strlen(str);
|
size_t Len = strlen(str);
|
||||||
char *Result = (char*)malloc((Len+1)*sizeof(char));
|
char *Result = (char*)malloc((Len+1)*sizeof(char));
|
||||||
@ -20,6 +26,9 @@ char *strdup(const char *str) {
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef strndup
|
||||||
|
#undef strndup
|
||||||
|
#endif
|
||||||
char *strndup(const char *str, size_t n) {
|
char *strndup(const char *str, size_t n) {
|
||||||
size_t Len = strlen(str);
|
size_t Len = strlen(str);
|
||||||
if (Len > n) Len = n;
|
if (Len > n) Len = n;
|
||||||
@ -29,24 +38,36 @@ char *strndup(const char *str, size_t n) {
|
|||||||
return Result;
|
return Result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef strcpy
|
||||||
|
#undef strcpy
|
||||||
|
#endif
|
||||||
char *strcpy(char *s1, const char *s2) {
|
char *strcpy(char *s1, const char *s2) {
|
||||||
char *dest = s1;
|
char *dest = s1;
|
||||||
while ((*s1++ = *s2++));
|
while ((*s1++ = *s2++));
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef strncpy
|
||||||
|
#undef strncpy
|
||||||
|
#endif
|
||||||
char *strncpy(char *s1, const char *s2, size_t n) {
|
char *strncpy(char *s1, const char *s2, size_t n) {
|
||||||
char *dest = s1;
|
char *dest = s1;
|
||||||
while (n-- && (*s1++ = *s2++));
|
while (n-- && (*s1++ = *s2++));
|
||||||
return dest;
|
return dest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef strcat
|
||||||
|
#undef strcat
|
||||||
|
#endif
|
||||||
char *strcat(char *s1, const char *s2) {
|
char *strcat(char *s1, const char *s2) {
|
||||||
strcpy(s1+strlen(s1), s2);
|
strcpy(s1+strlen(s1), s2);
|
||||||
return s1;
|
return s1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef strcmp
|
||||||
|
#undef strcmp
|
||||||
|
#endif
|
||||||
/* Compare S1 and S2, returning less than, equal to or
|
/* Compare S1 and S2, returning less than, equal to or
|
||||||
greater than zero if S1 is lexicographically less than,
|
greater than zero if S1 is lexicographically less than,
|
||||||
equal to or greater than S2. */
|
equal to or greater than S2. */
|
||||||
@ -136,6 +157,9 @@ void *memset (void *dstpp, int c, size_t len) {
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef memcpy
|
||||||
|
#undef memcpy
|
||||||
|
#endif
|
||||||
void *memcpy(void *dstpp, const void *srcpp, size_t len) {
|
void *memcpy(void *dstpp, const void *srcpp, size_t len) {
|
||||||
char *dstp = (char*)dstpp;
|
char *dstp = (char*)dstpp;
|
||||||
char *srcp = (char*) srcpp;
|
char *srcp = (char*) srcpp;
|
||||||
|
Loading…
Reference in New Issue
Block a user