aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Vlasenko <vda.linux@googlemail.com>2006-12-18 22:32:45 +0000
committerDenis Vlasenko <vda.linux@googlemail.com>2006-12-18 22:32:45 +0000
commit7cfecc4b36c5bd6e1e85fe8851ebd90fe1edb8f4 (patch)
tree2d03681bc35891414026aa56eeed0fbc29530124
parentc8e6e35ba4095846121d5b5a3eee57caa5e8e0fb (diff)
downloadbusybox-w32-7cfecc4b36c5bd6e1e85fe8851ebd90fe1edb8f4.tar.gz
busybox-w32-7cfecc4b36c5bd6e1e85fe8851ebd90fe1edb8f4.tar.bz2
busybox-w32-7cfecc4b36c5bd6e1e85fe8851ebd90fe1edb8f4.zip
xfuncs.c: dietlibc actually HAS fdprintf!
platform.h: define strchrnul for dietlibc ash: stop using few non-standard functions
-rw-r--r--include/platform.h13
-rw-r--r--libbb/xfuncs.c4
-rw-r--r--shell/ash.c20
3 files changed, 24 insertions, 13 deletions
diff --git a/include/platform.h b/include/platform.h
index 860143f7f..1cc978288 100644
--- a/include/platform.h
+++ b/include/platform.h
@@ -193,9 +193,18 @@ typedef unsigned long long int uintmax_t;
193/* Platforms that haven't got dprintf need to implement fdprintf() in 193/* Platforms that haven't got dprintf need to implement fdprintf() in
194 * libbb. This would require a platform.c. It's not going to be cleaned 194 * libbb. This would require a platform.c. It's not going to be cleaned
195 * out of the tree, so stop saying it should be. */ 195 * out of the tree, so stop saying it should be. */
196#if !defined(__dietlibc__)
197/* Needed for: glibc */
198/* Not needed for: dietlibc */
199/* Others: ?? (add as needed) */
196#define fdprintf dprintf 200#define fdprintf dprintf
197#ifdef __dietlibc__ 201#endif
198int dprintf(int fd, const char *format, ...); 202
203#if defined(__dietlibc__)
204static ATTRIBUTE_ALWAYS_INLINE char* strchrnul(const char *s, char c) {
205 while (*s && *s != c) ++s;
206 return (char*)s;
207}
199#endif 208#endif
200 209
201/* Don't use lchown with glibc older than 2.1.x ... uC-libc lacks it */ 210/* Don't use lchown with glibc older than 2.1.x ... uC-libc lacks it */
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index 4790aa140..9efccc542 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -411,8 +411,8 @@ char *xasprintf(const char *format, ...)
411 return string_ptr; 411 return string_ptr;
412} 412}
413 413
414#ifdef __dietlibc__ 414#if 0 /* If we will ever meet a libc which hasn't [f]dprintf... */
415int dprintf(int fd, const char *format, ...) 415int fdprintf(int fd, const char *format, ...)
416{ 416{
417 va_list p; 417 va_list p;
418 int r; 418 int r;
diff --git a/shell/ash.c b/shell/ash.c
index 2f7cc868a..ae5182ad1 100644
--- a/shell/ash.c
+++ b/shell/ash.c
@@ -5851,7 +5851,7 @@ _rmescapes(char *str, int flag)
5851 } 5851 }
5852 q = r; 5852 q = r;
5853 if (len > 0) { 5853 if (len > 0) {
5854 q = mempcpy(q, str, len); 5854 q = memcpy(q, str, len) + len;
5855 } 5855 }
5856 } 5856 }
5857 inquotes = (flag & RMESCAPE_QUOTED) ^ RMESCAPE_QUOTED; 5857 inquotes = (flag & RMESCAPE_QUOTED) ^ RMESCAPE_QUOTED;
@@ -8433,7 +8433,7 @@ char *
8433stnputs(const char *s, size_t n, char *p) 8433stnputs(const char *s, size_t n, char *p)
8434{ 8434{
8435 p = makestrspace(n, p); 8435 p = makestrspace(n, p);
8436 p = mempcpy(p, s, n); 8436 p = memcpy(p, s, n) + n;
8437 return p; 8437 return p;
8438} 8438}
8439 8439
@@ -8517,7 +8517,7 @@ single_quote(const char *s) {
8517 q = p = makestrspace(len + 3, p); 8517 q = p = makestrspace(len + 3, p);
8518 8518
8519 *q++ = '\''; 8519 *q++ = '\'';
8520 q = mempcpy(q, s, len); 8520 q = memcpy(q, s, len) + len;
8521 *q++ = '\''; 8521 *q++ = '\'';
8522 s += len; 8522 s += len;
8523 8523
@@ -8530,7 +8530,7 @@ single_quote(const char *s) {
8530 q = p = makestrspace(len + 3, p); 8530 q = p = makestrspace(len + 3, p);
8531 8531
8532 *q++ = '"'; 8532 *q++ = '"';
8533 q = mempcpy(q, s, len); 8533 q = memcpy(q, s, len) + len;
8534 *q++ = '"'; 8534 *q++ = '"';
8535 s += len; 8535 s += len;
8536 8536
@@ -8754,11 +8754,12 @@ copynodelist(struct nodelist *lp)
8754 8754
8755 8755
8756static char * 8756static char *
8757nodesavestr(char *s) 8757nodesavestr(char *s)
8758{ 8758{
8759 char *rtn = funcstring; 8759 char *rtn = funcstring;
8760 8760
8761 funcstring = stpcpy(funcstring, s) + 1; 8761 strcpy(funcstring, s);
8762 funcstring += strlen(s) + 1;
8762 return rtn; 8763 return rtn;
8763} 8764}
8764 8765
@@ -12013,10 +12014,11 @@ setvar(const char *name, const char *val, int flags)
12013 vallen = strlen(val); 12014 vallen = strlen(val);
12014 } 12015 }
12015 INTOFF; 12016 INTOFF;
12016 p = mempcpy(nameeq = ckmalloc(namelen + vallen + 2), name, namelen); 12017 nameeq = ckmalloc(namelen + vallen + 2)
12018 p = memcpy(nameeq, name, namelen) + namelen;
12017 if (val) { 12019 if (val) {
12018 *p++ = '='; 12020 *p++ = '=';
12019 p = mempcpy(p, val, vallen); 12021 p = memcpy(p, val, vallen) + vallen;
12020 } 12022 }
12021 *p = '\0'; 12023 *p = '\0';
12022 setvareq(nameeq, flags | VNOSAVE); 12024 setvareq(nameeq, flags | VNOSAVE);