commit 688f54f0798e0ebdcf02b114f0b862b8931893e1 from: Omar Polo date: Tue Dec 14 14:58:48 2021 UTC make readline optional commit - 7764059ff3c1c138d9e3728db75131d1f7e9243b commit + 688f54f0798e0ebdcf02b114f0b862b8931893e1 blob - 59fec4c0abfa887c81a880e6de646b4176ab5c4e blob + 2f861369cbf8c14b96bec6bf471f6ea5d22d69c7 --- configure.ac +++ configure.ac @@ -107,7 +107,7 @@ AC_CHECK_LIB(tls, tls_init, [], [ # small hack to avoid linking *everything* to readline. libs_orig="${LIBS}" AC_CHECK_LIB(readline, readline, [], [ - AC_MSG_ERROR([requires readline]) + AC_DEFINE([HAVE_READLINE], 0, [1 if readline is found]) ]) KAMIFTP_LIBS="${LIBS}" LIBS="${libs_orig}" blob - 129010356d8a295c8cf9db62edd696b4cc0fdecc blob + 3a6aea1c9deb36a0bfc46be36e40311420f2faa6 --- ftp.c +++ ftp.c @@ -28,8 +28,10 @@ #include #include +#if HAVE_READLINE #include #include +#endif #include "9pclib.h" #include "kamid.h" @@ -48,6 +50,42 @@ int sock; #define PWDFID 0 +#if HAVE_READLINE +static char * +read_line(const char *prompt) +{ + char *line; + +again: + if ((line = readline(prompt)) == NULL) + return NULL; + /* XXX: trim spaces? */ + if (*line == '\0') { + free(line); + goto again; + } + + add_history(line); + return line; +} +#else +static char * +read_line(const char *prompt) +{ + char *ch, *line = NULL; + size_t linesize = 0; + ssize_t linelen; + + linelen = getline(&line, &linesize, stdin); + if (linelen == -1) + return NULL; + + if ((ch = strchr(line, '\n')) != NULL) + *ch = '\0'; + return line; +} +#endif + static void ATTR_DEAD usage(int ret) { @@ -165,12 +203,9 @@ main(int argc, char **argv) for (;;) { char *line; - if ((line = readline("ftp> ")) == NULL) + if ((line = read_line("ftp> ")) == NULL) break; - /* XXX: trim spaces */ - if (*line == '\0') - continue; - add_history(line); + printf("read: %s\n", line); } printf("\n");