summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorgraham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2009-11-12 01:38:44 (EST)
committer graham.gower <graham.gower@e8e0d7a0-c8d9-11dd-a880-a1081c7ac358>2009-11-12 01:38:44 (EST)
commitf0920f2896c409d519e51744a2e2618a99ec8b8c (patch)
tree677f64e19d7f2fc4b833411fd44e8014836aba56
parent99be91a0fdb86a6826a0cdcf8bede14b7d01c9a8 (diff)
Don't prompt for user input from stdin if it's not a tty.
Based off a patch by Chris Larson <clarson@mvista.com> for OpenEmbedded. git-svn-id: http://opkg.googlecode.com/svn/trunk@290 e8e0d7a0-c8d9-11dd-a880-a1081c7ac358
-rw-r--r--libopkg/opkg_install.c4
-rw-r--r--libopkg/user.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/libopkg/opkg_install.c b/libopkg/opkg_install.c
index a76322d..52af71e 100644
--- a/libopkg/opkg_install.c
+++ b/libopkg/opkg_install.c
@@ -1608,6 +1608,10 @@ static int user_prefers_old_conffile(const char *file_name, const char *backup)
" D : show the differences between the versions (if diff is installed)\n"
" The default action is to keep your current version.\n"
" *** %s (Y/I/N/O/D) [default=N] ? ", file_name, short_file_name);
+
+ if (response == NULL)
+ return 1;
+
if (strcmp(response, "y") == 0
|| strcmp(response, "i") == 0
|| strcmp(response, "yes") == 0) {
diff --git a/libopkg/user.c b/libopkg/user.c
index 8c960dc..dda5013 100644
--- a/libopkg/user.c
+++ b/libopkg/user.c
@@ -15,13 +15,11 @@
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
*/
-#include <stdlib.h>
#include <stdio.h>
#include <stdarg.h>
-#include <string.h>
+#include <unistd.h>
#include "file_util.h"
#include "str_util.h"
-#include "user.h"
char *get_user_response(const char *format, ...)
{
@@ -32,6 +30,9 @@ char *get_user_response(const char *format, ...)
vprintf(format, ap);
va_end(ap);
+ if (isatty(fileno(stdin)))
+ return NULL;
+
response = (char *)file_read_line_alloc(stdin);
if (response == NULL)
return NULL;