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