xfuncs.c: dietlibc actually HAS fdprintf! platform.h: define strchrnul for dietlibc ash: stop using few non-standard functions
No binary (build failed)
—
(log yok)
| @@ -193,9 +193,18 @@ typedef unsigned long long int uintmax_t; | |
| /* Platforms that haven't got dprintf need to implement fdprintf() in | |
| * libbb. This would require a platform.c. It's not going to be cleaned | |
| * out of the tree, so stop saying it should be. */ | |
| + | #if !defined(__dietlibc__) |
| + | /* Needed for: glibc */ |
| + | /* Not needed for: dietlibc */ |
| + | /* Others: ?? (add as needed) */ |
| #define fdprintf dprintf | |
| - | #ifdef __dietlibc__ |
| - | int dprintf(int fd, const char *format, ...); |
| + | #endif |
| + | |
| + | #if defined(__dietlibc__) |
| + | static ATTRIBUTE_ALWAYS_INLINE char* strchrnul(const char *s, char c) { |
| + | while (*s && *s != c) ++s; |
| + | return (char*)s; |
| + | } |
| #endif | |
| /* Don't use lchown with glibc older than 2.1.x ... uC-libc lacks it */ | |
| @@ -411,8 +411,8 @@ char *xasprintf(const char *format, ...) | |
| return string_ptr; | |
| } | |
| - | #ifdef __dietlibc__ |
| - | int dprintf(int fd, const char *format, ...) |
| + | #if 0 /* If we will ever meet a libc which hasn't [f]dprintf... */ |
| + | int fdprintf(int fd, const char *format, ...) |
| { | |
| va_list p; | |
| int r; | |
| @@ -5851,7 +5851,7 @@ _rmescapes(char *str, int flag) | |
| } | |
| q = r; | |
| if (len > 0) { | |
| - | q = mempcpy(q, str, len); |
| + | q = memcpy(q, str, len) + len; |
| } | |
| } | |
| inquotes = (flag & RMESCAPE_QUOTED) ^ RMESCAPE_QUOTED; | |
| @@ -8433,7 +8433,7 @@ char * | |
| stnputs(const char *s, size_t n, char *p) | |
| { | |
| p = makestrspace(n, p); | |
| - | p = mempcpy(p, s, n); |
| + | p = memcpy(p, s, n) + n; |
| return p; | |
| } | |
| @@ -8517,7 +8517,7 @@ single_quote(const char *s) { | |
| q = p = makestrspace(len + 3, p); | |
| *q++ = '\''; | |
| - | q = mempcpy(q, s, len); |
| + | q = memcpy(q, s, len) + len; |
| *q++ = '\''; | |
| s += len; | |
| @@ -8530,7 +8530,7 @@ single_quote(const char *s) { | |
| q = p = makestrspace(len + 3, p); | |
| *q++ = '"'; | |
| - | q = mempcpy(q, s, len); |
| + | q = memcpy(q, s, len) + len; |
| *q++ = '"'; | |
| s += len; | |
| @@ -8754,11 +8754,12 @@ copynodelist(struct nodelist *lp) | |
| static char * | |
| - | nodesavestr(char *s) |
| + | nodesavestr(char *s) |
| { | |
| - | char *rtn = funcstring; |
| + | char *rtn = funcstring; |
| - | funcstring = stpcpy(funcstring, s) + 1; |
| + | strcpy(funcstring, s); |
| + | funcstring += strlen(s) + 1; |
| return rtn; | |
| } | |
| @@ -12013,10 +12014,11 @@ setvar(const char *name, const char *val, int flags) | |
| vallen = strlen(val); | |
| } | |
| INTOFF; | |
| - | p = mempcpy(nameeq = ckmalloc(namelen + vallen + 2), name, namelen); |
| + | nameeq = ckmalloc(namelen + vallen + 2) |
| + | p = memcpy(nameeq, name, namelen) + namelen; |
| if (val) { | |
| *p++ = '='; | |
| - | p = mempcpy(p, val, vallen); |
| + | p = memcpy(p, val, vallen) + vallen; |
| } | |
| *p = '\0'; | |
| setvareq(nameeq, flags | VNOSAVE); | |