diff options
author | Rob Landley <rob@landley.net> | 2012-02-27 21:56:49 -0600 |
---|---|---|
committer | Rob Landley <rob@landley.net> | 2012-02-27 21:56:49 -0600 |
commit | f793d5347f08bdb742e8ad8a2cc5a7d30e6bd623 (patch) | |
tree | 4af5671c3f659f6038f8c1adbb2876c316b6a3cb /lib | |
parent | b0dcd667f185e01589af38958116768ffd561de8 (diff) | |
download | toybox-f793d5347f08bdb742e8ad8a2cc5a7d30e6bd623.tar.gz |
Upgrade yesno() and make cp -i use it.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/lib.c | 15 | ||||
-rw-r--r-- | lib/lib.h | 2 |
2 files changed, 8 insertions, 9 deletions
@@ -792,20 +792,19 @@ void terminal_size(unsigned *x, unsigned *y) } // This should use a raw tty, fixit later. -int yesno(int def) +int yesno(char *prompt, int def) { - char buf[16]; + char buf; int i; for (i=0; i<3 && !isatty(i); i++); if (i == 3) return 1; - sprintf(buf, "(%c/%c):", def ? 'Y' : 'y', def ? 'n' : 'N'); - write(i, buf, 6); - while (read(i, buf, 1)) { - if (isspace(*buf)) break; - if (tolower(*buf) == 'y') return 1; - if (tolower(*buf) == 'n') return 0; + fdprintf(i, "%s (%c/%c):", prompt, def ? 'Y' : 'y', def ? 'n' : 'N'); + while (read(i, &buf, 1)) { + if (isspace(buf)) break; + if (tolower(buf) == 'y') return 1; + if (tolower(buf) == 'n') return 0; } return def; } @@ -109,7 +109,7 @@ void delete_tempfile(int fdin, int fdout, char **tempname); void replace_tempfile(int fdin, int fdout, char **tempname); void crc_init(unsigned int *crc_table, int little_endian); void terminal_size(unsigned *x, unsigned *y); -int yesno(int def); +int yesno(char *prompt, int def); void for_each_pid_with_name_in(char **names, void (*callback)(pid_t pid)); |