summaryrefslogtreecommitdiff
path: root/libbb
diff options
context:
space:
mode:
authorDenis Vlasenko2007-09-27 10:20:47 +0000
committerDenis Vlasenko2007-09-27 10:20:47 +0000
commit4daad9004d8f07991516970a1cbd77756fae7041 (patch)
treef1a17e4b168ef8fdf8af92ac5ce8deba89d38db2 /libbb
parent1acdc89e992eb3f0548ff48ba586b31c9a0ae232 (diff)
downloadbusybox-4daad9004d8f07991516970a1cbd77756fae7041.zip
busybox-4daad9004d8f07991516970a1cbd77756fae7041.tar.gz
introduce bb_putchar(). saves ~1800 on uclibc (less on glibc).
Diffstat (limited to 'libbb')
-rw-r--r--libbb/bb_askpass.c2
-rw-r--r--libbb/lineedit.c16
-rw-r--r--libbb/xfuncs.c8
3 files changed, 17 insertions, 9 deletions
diff --git a/libbb/bb_askpass.c b/libbb/bb_askpass.c
index 5ad2349..435314e 100644
--- a/libbb/bb_askpass.c
+++ b/libbb/bb_askpass.c
@@ -69,7 +69,7 @@ char *bb_askpass(int timeout, const char * prompt)
}
tcsetattr(STDIN_FILENO, TCSANOW, &old);
- putchar('\n');
+ bb_putchar('\n');
fflush(stdout);
return ret;
}
diff --git a/libbb/lineedit.c b/libbb/lineedit.c
index a66398a..2db85d0 100644
--- a/libbb/lineedit.c
+++ b/libbb/lineedit.c
@@ -111,15 +111,15 @@ static void cmdedit_set_out_char(int next_char)
#endif
{
if (initial_settings.c_lflag & ECHO)
- putchar(c);
+ bb_putchar(c);
}
if (++cmdedit_x >= cmdedit_termw) {
/* terminal is scrolled down */
cmdedit_y++;
cmdedit_x = 0;
/* destroy "(auto)margin" */
- putchar(next_char);
- putchar('\b');
+ bb_putchar(next_char);
+ bb_putchar('\b');
}
// Huh? What if command_ps[cursor] == '\0' (we are at the end already?)
cursor++;
@@ -137,7 +137,7 @@ static void goto_new_line(void)
{
input_end();
if (cmdedit_x)
- putchar('\n');
+ bb_putchar('\n');
}
@@ -149,7 +149,7 @@ static void out1str(const char *s)
static void beep(void)
{
- putchar('\007');
+ bb_putchar('\007');
}
/* Move back one character */
@@ -197,7 +197,7 @@ static void redraw(int y, int back_cursor)
{
if (y > 0) /* up to start y */
printf("\033[%dA", y);
- putchar('\r');
+ bb_putchar('\r');
put_prompt();
input_end(); /* rewrite */
printf("\033[J"); /* erase after cursor */
@@ -1585,8 +1585,8 @@ int read_line_input(const char* prompt, char* command, int maxsize, line_input_t
beep();
else {
*(command + cursor) = c;
- putchar(c);
- putchar('\b');
+ bb_putchar(c);
+ bb_putchar('\b');
}
break;
#endif /* FEATURE_COMMAND_EDITING_VI */
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c
index 2215bb8..eb1633b 100644
--- a/libbb/xfuncs.c
+++ b/libbb/xfuncs.c
@@ -456,6 +456,14 @@ off_t fdlength(int fd)
return pos + 1;
}
+int bb_putchar(int ch)
+{
+ /* time.c needs putc(ch, stdout), not putchar(ch).
+ * it does "stdout = stderr;", but then glibc's putchar()
+ * doesn't work as expected. bad glibc, bad */
+ return putc(ch, stdout);
+}
+
// Die with an error message if we can't malloc() enough space and do an
// sprintf() into that space.
char *xasprintf(const char *format, ...)