From 12a0c93433a0b1d7e8019fc35a63476db39327fa Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 24 Oct 2012 16:44:34 +0200 Subject: Fix ttyname problem on Android. * configure.ac: Define macro and conditional HAVE_ANDROID_SYSTEM. * m4/gnupg-ttyname.m4: Force use of replacement on Android. * src/ttyname_r.c: Ditto. -- Android's bionic lib has no working ttyname_r() nor ttyname(). Using them anyway will print FIX ME! implement ttyname_r() bionic/libc/bionic/stubs.c:466 Thus we force the use of our replacement code which simply return "/dev/tty". --- src/ttyname_r.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/ttyname_r.c b/src/ttyname_r.c index 105e0af5..eed28bd7 100644 --- a/src/ttyname_r.c +++ b/src/ttyname_r.c @@ -32,6 +32,12 @@ # warning ttyname is not thread-safe, and ttyname_r is missing #endif +/* For Android we force the use of our replacement code. */ +#if HAVE_ANDROID_SYSTEM +# undef HAVE_TTYNAME_R +#endif + + int _gpgme_ttyname_r (int fd, char *buf, size_t buflen) { @@ -110,12 +116,11 @@ _gpgme_ttyname_r (int fd, char *buf, size_t buflen) #else /*!HAVE_TTYNAME_R*/ char *tty; -# if HAVE_W32_SYSTEM +# if HAVE_W32_SYSTEM || HAVE_ANDROID_SYSTEM /* We use this default one for now. AFAICS we only need it to be passed to gpg and in turn to pinentry. Providing a replacement - is needed because elsewhere we bail out on error. If we - eventually implement a pinentry for Windows it is inlikely that - we need a real tty at all. */ + is needed because elsewhere we bail out on error or Android + provided ttyname_r prints an error message if used. */ tty = "/dev/tty"; # else tty = ttyname (fd); -- cgit v1.2.3