From 1176102f51d84f971563c6f3ebaab66ab77cfc5e Mon Sep 17 00:00:00 2001 From: troth Date: Thu, 27 Feb 2003 20:08:54 +0000 Subject: [PATCH] * term.c: Use fgets() if readline() is not available. git-svn-id: svn://svn.savannah.nongnu.org/avrdude/trunk/avrdude@243 81a1dc3b-b13d-400b-aceb-764788c761c2 --- term.c | 38 ++++++++++++++++++++++++++++++-------- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/term.c b/term.c index 7b65fda3..fb66a678 100644 --- a/term.c +++ b/term.c @@ -24,8 +24,11 @@ #include #include #include -#include -#include + +#if defined(HAVE_LIBREADLINE) +# include +# include +#endif #include "avr.h" #include "config.h" @@ -621,21 +624,40 @@ int do_cmd(PROGRAMMER * pgm, struct avrpart * p, int argc, char * argv[]) } +char * terminal_get_input(const char *prompt) +{ +#if defined(HAVE_LIBREADLINE) + char *input; + input = readline(prompt); + if ((input != NULL) && (strlen(input) >= 1)) + add_history(input); + + return input; +#else + char input[256]; + printf("%s", prompt); + if (fgets(input, sizeof(input), stdin)) + { + /* FIXME: readline strips the '\n', should this too? */ + strdup(input); + } + else + return NULL; +#endif +} + + int terminal_mode(PROGRAMMER * pgm, struct avrpart * p) { char * cmdbuf; - int i, len; + int i; char * q; int rc; int argc; char ** argv; rc = 0; - while ((cmdbuf = readline("avrdude> ")) != NULL) { - len = strlen(cmdbuf); - if (len >= 1) - add_history(cmdbuf); - + while ((cmdbuf = terminal_get_input("avrdude> ")) != NULL) { /* * find the start of the command, skipping any white space */