From 1176102f51d84f971563c6f3ebaab66ab77cfc5e Mon Sep 17 00:00:00 2001
From: troth <troth@81a1dc3b-b13d-400b-aceb-764788c761c2>
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 <stdio.h>
 #include <stdlib.h>
 #include <limits.h>
-#include <readline/readline.h>
-#include <readline/history.h>
+
+#if defined(HAVE_LIBREADLINE)
+#  include <readline/readline.h>
+#  include <readline/history.h>
+#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
      */