diff options
Diffstat (limited to 'libopkg')
-rw-r--r-- | libopkg/user.c | 39 | ||||
-rw-r--r-- | libopkg/user.h | 1 |
2 files changed, 15 insertions, 25 deletions
diff --git a/libopkg/user.c b/libopkg/user.c index 04dfd9e..8c960dc 100644 --- a/libopkg/user.c +++ b/libopkg/user.c @@ -23,30 +23,21 @@ #include "str_util.h" #include "user.h" -static char *question = NULL; -static int question_len = 255; - -opkg_response_callback opkg_cb_response = NULL; - char *get_user_response(const char *format, ...) { - int len = question_len; - va_list ap; - char *response; - - do { - if (question == NULL || len > question_len) { - question = realloc(question, len + 1); - question_len = len; - } - - va_start(ap, format); - len = vsnprintf(question,question_len,format,ap); - va_end(ap); - } while (len > question_len); - response = strdup(opkg_cb_response(question)); - str_chomp(response); - str_tolower(response); - - return response; + va_list ap; + char *response; + + va_start(ap, format); + vprintf(format, ap); + va_end(ap); + + response = (char *)file_read_line_alloc(stdin); + if (response == NULL) + return NULL; + + str_chomp(response); + str_tolower(response); + + return response; } diff --git a/libopkg/user.h b/libopkg/user.h index 8d2a0cf..81d7262 100644 --- a/libopkg/user.h +++ b/libopkg/user.h @@ -19,6 +19,5 @@ #include <stdio.h> #include <stdarg.h> -typedef char* (*opkg_response_callback)(char *question); char *get_user_response(const char *format, ...); |