Skip to content

Commit 9938db6

Browse files
Remove some functions from pgmspace.h that break on cygwin
Somehow, these functions cannot be found when compiling the test build under cygwin, even though it seems they should be available. To at least allow the rest of the fixes in this series to be merged, disable these functions for now. Since these are mostly uncommon functions that are unlikely to be used in actual Arduino code, this should probably not cause much problems for now.
1 parent 3e29ec9 commit 9938db6

File tree

1 file changed

+15
-11
lines changed

1 file changed

+15
-11
lines changed

cpp/arduino/avr/pgmspace.h

+15-11
Original file line numberDiff line numberDiff line change
@@ -59,34 +59,25 @@ typedef uintptr_t uint_farptr_t;
5959

6060
inline const void * memchr_P(const void *s, int val, size_t len) { return memchr(s, val, len); }
6161
inline int memcmp_P(const void *s1, const void *s2, size_t len) { return memcmp(s1, s2, len); }
62-
inline void *memccpy_P(void *dest, const void *src, int val, size_t len) { return memccpy(dest, src, val, len); }
6362
inline void *memcpy_P(void *dest, const void *src, size_t n) { return memcpy(dest, src, n); }
64-
inline void *memmem_P(const void *s1, size_t len1, const void *s2, size_t len2) { return memmem(s1, len1, s2, len2); }
65-
inline const void *memrchr_P(const void *src, int val, size_t len) { return memrchr(src, val, len); }
6663
inline char *strcat_P(char *dest, const char *src) { return strcat(dest, src); }
6764
inline const char *strchr_P(const char *s, int val) { return strchr(s, val); }
68-
inline const char *strchrnul_P(const char *s, int c) { return strchrnul(s, c); }
6965
inline int strcmp_P(const char *s1, const char *s2) { return strcmp(s1, s2); }
7066
inline char *strcpy_P(char *dest, const char *src) { return strcpy(dest, src); }
71-
inline int strcasecmp_P(const char *s1, const char *s2) { return strcasecmp(s1, s2); }
72-
inline char *strcasestr_P(const char *s1, const char *s2) { return (char*)strcasestr(s1, s2); }
7367
inline size_t strcspn_P(const char *s, const char *reject) { return strcspn(s, reject); }
7468
// strlcat and strlcpy are AVR-specific and not entirely trivial to reimplement using strncat it seems
7569
//inline size_t strlcat_P(char *dst, const char *src, size_t siz) { return strlcat(dst, src, siz); }
7670
//inline size_t strlcpy_P(char *dst, const char *src, size_t siz) { return strlcpy(dst, src, siz); }
7771
//inline size_t strlcat_PF(char *dst, uint_farptr_t src, size_t n) { return strlcat(dst, (const char*)src, n); }
7872
//inline size_t strlcpy_PF(char *dst, uint_farptr_t src, size_t siz) { return strlcpy(dst, (const char*)src, siz); }
7973
inline int strncmp_P(const char *s1, const char *s2, size_t n) { return strncmp(s1, s2, n); }
80-
inline int strncasecmp_P(const char *s1, const char *s2, size_t n) { return strncasecmp(s1, s2, n); }
8174
inline char *strncat_P(char *dest, const char *src, size_t len) { return strncat(dest, src, len); }
8275
inline char *strncpy_P(char *dest, const char *src, size_t n) { return strncpy(dest, src, n); }
8376
inline char *strpbrk_P(const char *s, const char *accept) { return (char*)strpbrk(s, accept); }
8477
inline const char *strrchr_P(const char *s, int val) { return strrchr(s, val); }
85-
inline char *strsep_P(char **sp, const char *delim) { return strsep(sp, delim); }
8678
inline size_t strspn_P(const char *s, const char *accept) { return strspn(s, accept); }
8779
inline char *strstr_P(const char *s1, const char *s2) { return (char*)strstr(s1, s2); }
8880
inline char *strtok_P(char *s, const char * delim) { return strtok(s, delim); }
89-
inline char *strtok_r_P(char *string, const char *delim, char **last) { return strtok_r(string, delim, last); }
9081
inline size_t strlen_PF(uint_farptr_t s) { return strlen((char*)s); }
9182
inline size_t strnlen_P(uint_farptr_t s, size_t len) { return strnlen((char*)s, len); }
9283
inline void *memcpy_PF(void *dest, uint_farptr_t src, size_t n) { return memcpy(dest, (const char*)src, n); }
@@ -96,12 +87,25 @@ inline char *strcat_PF(char *dst, uint_farptr_t src) { return strcat(dst, (const
9687
inline char *strncat_PF(char *dst, uint_farptr_t src, size_t n) { return strncat(dst, (const char*)src, n); }
9788
inline int strcmp_PF(const char *s1, uint_farptr_t s2) { return strcmp(s1, (const char*)s2); }
9889
inline int strncmp_PF(const char *s1, uint_farptr_t s2, size_t n) { return strncmp(s1, (const char*)s2, n); }
99-
inline int strcasecmp_PF(const char *s1, uint_farptr_t s2) { return strcasecmp(s1, (const char*)s2); }
100-
inline int strncasecmp_PF(const char *s1, uint_farptr_t s2, size_t n) { return strncasecmp(s1, (const char*)s2, n); }
10190
inline char *strstr_PF(const char *s1, uint_farptr_t s2) { return (char*)strstr(s1, (const char*)s2); }
10291
inline int memcmp_PF(const void *s1, uint_farptr_t s2, size_t len) { return memcmp(s1, (const char*)s2, len); }
10392
inline size_t strlen_P(const char *src) { return strlen(src); }
10493

94+
// TODO: These functions cannot be found on the CYGWIN test build for
95+
// some reason, so disable them for now. Most of these are less common
96+
// and/or GNU-specific addons anyway
97+
//inline void *memccpy_P(void *dest, const void *src, int val, size_t len) { return memccpy(dest, src, val, len); }
98+
//inline void *memmem_P(const void *s1, size_t len1, const void *s2, size_t len2) { return memmem(s1, len1, s2, len2); }
99+
//inline const void *memrchr_P(const void *src, int val, size_t len) { return memrchr(src, val, len); }
100+
//inline const char *strchrnul_P(const char *s, int c) { return strchrnul(s, c); }
101+
//inline int strcasecmp_P(const char *s1, const char *s2) { return strcasecmp(s1, s2); }
102+
//inline char *strcasestr_P(const char *s1, const char *s2) { return (char*)strcasestr(s1, s2); }
103+
//inline int strncasecmp_P(const char *s1, const char *s2, size_t n) { return strncasecmp(s1, s2, n); }
104+
//inline char *strsep_P(char **sp, const char *delim) { return strsep(sp, delim); }
105+
//inline char *strtok_r_P(char *string, const char *delim, char **last) { return strtok_r(string, delim, last); }
106+
//inline int strcasecmp_PF(const char *s1, uint_farptr_t s2) { return strcasecmp(s1, (const char*)s2); }
107+
//inline int strncasecmp_PF(const char *s1, uint_farptr_t s2, size_t n) { return strncasecmp(s1, (const char*)s2, n); }
108+
105109
// These are normally defined by stdio.h on AVR, but we cannot override that
106110
// include file (at least not without no longer being able to include the
107111
// original as well), so just define these here. It seems likely that any

0 commit comments

Comments
 (0)