Move stpcpy replacement function into libbb

Signed-off-by: Dan Fandrich <dan@coneharvesters.com>
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Dan Fandrich 2011-02-12 22:26:57 -08:00 committed by Denys Vlasenko
parent 4ed3c52ce9
commit dc50676cce
3 changed files with 26 additions and 17 deletions

View File

@ -18,6 +18,7 @@
#define HAVE_PTSNAME_R 1 #define HAVE_PTSNAME_R 1
#define HAVE_SETBIT 1 #define HAVE_SETBIT 1
#define HAVE_SIGHANDLER_T 1 #define HAVE_SIGHANDLER_T 1
#define HAVE_STPCPY 1
#define HAVE_STRCASESTR 1 #define HAVE_STRCASESTR 1
#define HAVE_STRCHRNUL 1 #define HAVE_STRCHRNUL 1
#define HAVE_STRSEP 1 #define HAVE_STRSEP 1
@ -356,6 +357,8 @@ typedef unsigned smalluint;
# define ADJ_TICK MOD_CLKB # define ADJ_TICK MOD_CLKB
# endif # endif
# undef HAVE_STPCPY
#else #else
# define bb_setpgrp() setpgrp() # define bb_setpgrp() setpgrp()
@ -376,6 +379,7 @@ typedef unsigned smalluint;
# undef HAVE_MEMRCHR # undef HAVE_MEMRCHR
# undef HAVE_MKDTEMP # undef HAVE_MKDTEMP
# undef HAVE_SETBIT # undef HAVE_SETBIT
# undef HAVE_STPCPY
# undef HAVE_STRCASESTR # undef HAVE_STRCASESTR
# undef HAVE_STRCHRNUL # undef HAVE_STRCHRNUL
# undef HAVE_STRSEP # undef HAVE_STRSEP
@ -413,6 +417,10 @@ extern char *mkdtemp(char *template) FAST_FUNC;
typedef void (*sighandler_t)(int); typedef void (*sighandler_t)(int);
#endif #endif
#ifndef HAVE_STPCPY
extern char *stpcpy(char *p, const char *to_add) FAST_FUNC;
#endif
#ifndef HAVE_STRCASESTR #ifndef HAVE_STRCASESTR
extern char *strcasestr(const char *s, const char *pattern) FAST_FUNC; extern char *strcasestr(const char *s, const char *pattern) FAST_FUNC;
#endif #endif

View File

@ -134,3 +134,14 @@ char* FAST_FUNC strsep(char **stringp, const char *delim)
return start; return start;
} }
#endif #endif
#ifndef HAVE_STPCPY
char* FAST_FUNC stpcpy(char *p, const char *to_add)
{
while ((*p = *to_add) != '\0') {
p++;
to_add++;
}
return p;
}
#endif

View File

@ -139,16 +139,6 @@ static void s_term(int sig_no UNUSED_PARAM)
write(selfpipe.wr, "", 1); /* XXX */ write(selfpipe.wr, "", 1); /* XXX */
} }
/* libbb candidate */
static char *bb_stpcpy(char *p, const char *to_add)
{
while ((*p = *to_add) != '\0') {
p++;
to_add++;
}
return p;
}
static int open_trunc_or_warn(const char *name) static int open_trunc_or_warn(const char *name)
{ {
/* Why O_NDELAY? */ /* Why O_NDELAY? */
@ -192,26 +182,26 @@ static void update_status(struct svdir *s)
char *p = stat_buf; char *p = stat_buf;
switch (s->state) { switch (s->state) {
case S_DOWN: case S_DOWN:
p = bb_stpcpy(p, "down"); p = stpcpy(p, "down");
break; break;
case S_RUN: case S_RUN:
p = bb_stpcpy(p, "run"); p = stpcpy(p, "run");
break; break;
case S_FINISH: case S_FINISH:
p = bb_stpcpy(p, "finish"); p = stpcpy(p, "finish");
break; break;
} }
if (s->ctrl & C_PAUSE) if (s->ctrl & C_PAUSE)
p = bb_stpcpy(p, ", paused"); p = stpcpy(p, ", paused");
if (s->ctrl & C_TERM) if (s->ctrl & C_TERM)
p = bb_stpcpy(p, ", got TERM"); p = stpcpy(p, ", got TERM");
if (s->state != S_DOWN) if (s->state != S_DOWN)
switch (s->sd_want) { switch (s->sd_want) {
case W_DOWN: case W_DOWN:
p = bb_stpcpy(p, ", want down"); p = stpcpy(p, ", want down");
break; break;
case W_EXIT: case W_EXIT:
p = bb_stpcpy(p, ", want exit"); p = stpcpy(p, ", want exit");
break; break;
} }
*p++ = '\n'; *p++ = '\n';