On 11/5/18 11:06 AM, David Dombrowsky wrote:> On Sat, Nov 3, 2018 at 2:23 PM Marco Atzeri <marco.atz...@gmail.com> wrote: >>> In any case, I got pinentry-1.1.0 to compile against a cygwin-supplied >>> version of ncurses, and it mostly works (you still need to tell it to >>> not detach from the tty, not sure what's up with that). >> >> can you clarify ? >> May be it was the reason why I and Yaakov found it not functional > > That's very possible. > > I downloaded the stock source for pinentry 1.1.0 from gnupg.org and > tried to build it. After "fixing" one of the build errors (ttytype is > a macro and needs to be renamed in the pinentry source, at least on my > cygwin install), I got it to build and install.
For the record, I've had to do this on a couple of machines, so I figured I'd post the patch. Still doesn't work reliably. I need to log in to the desktop, start a screen session, and then run gpg-agent --daemon --disable-scdaemon --no-detach -vv --pinentry-program /usr/local/bin/pinentry-curses > agent.log 2>&1 & to get it to work. After that I can sign git commits all day without having to RDP back into the box. Not the best, but it works. If anyone has a better solution, please let me know. -- David Dombrowsky, Software Engineer da...@6thstreetradio.org | 518-374-3204 https://www.linkedin.com/in/david-dombrowsky-94334415
diff -ur orig/pinentry-1.1.0/pinentry/pinentry.c pinentry-1.1.0/pinentry/pinentry.c --- orig/pinentry-1.1.0/pinentry/pinentry.c 2017-12-03 11:13:15.000000000 -0500 +++ pinentry-1.1.0/pinentry/pinentry.c 2018-11-02 15:29:16.945203400 -0400 @@ -97,7 +97,7 @@ Don't reset them. */ int grab = pinentry.grab; char *ttyname = pinentry.ttyname; - char *ttytype = pinentry.ttytype; + char *ttytype_ = pinentry.ttytype_; char *ttyalert = pinentry.ttyalert; char *lc_ctype = pinentry.lc_ctype; char *lc_messages = pinentry.lc_messages; @@ -135,7 +135,7 @@ if (use_defaults) { free (pinentry.ttyname); - free (pinentry.ttytype); + free (pinentry.ttytype_); free (pinentry.ttyalert); free (pinentry.lc_ctype); free (pinentry.lc_messages); @@ -194,7 +194,7 @@ { pinentry.grab = grab; pinentry.ttyname = ttyname; - pinentry.ttytype = ttytype; + pinentry.ttytype_ = ttytype_; pinentry.ttyalert = ttyalert; pinentry.lc_ctype = lc_ctype; pinentry.lc_messages = lc_messages; @@ -950,8 +950,8 @@ } break; case 'N': - pinentry.ttytype = strdup (pargs.r.ret_str); - if (!pinentry.ttytype) + pinentry.ttytype_ = strdup (pargs.r.ret_str); + if (!pinentry.ttytype_) { #ifndef HAVE_W32CE_SYSTEM fprintf (stderr, "%s: %s\n", this_pgmname, strerror (errno)); @@ -1070,10 +1070,10 @@ } else if (!strcmp (key, "ttytype")) { - if (pinentry.ttytype) - free (pinentry.ttytype); - pinentry.ttytype = strdup (value); - if (!pinentry.ttytype) + if (pinentry.ttytype_) + free (pinentry.ttytype_); + pinentry.ttytype_ = strdup (value); + if (!pinentry.ttytype_) return gpg_error_from_syserror (); } else if (!strcmp (key, "ttyalert")) @@ -1755,7 +1755,7 @@ { snprintf (buffer, sizeof buffer, "%s %s %s", pinentry.ttyname? pinentry.ttyname : "-", - pinentry.ttytype? pinentry.ttytype : "-", + pinentry.ttytype_? pinentry.ttytype_ : "-", pinentry.display? pinentry.display : "-" ); buffer[sizeof buffer -1] = 0; rc = assuan_send_data (ctx, buffer, strlen (buffer)); diff -ur orig/pinentry-1.1.0/pinentry/pinentry.h pinentry-1.1.0/pinentry/pinentry.h --- orig/pinentry-1.1.0/pinentry/pinentry.h 2017-12-03 11:13:05.000000000 -0500 +++ pinentry-1.1.0/pinentry/pinentry.h 2018-11-02 15:25:42.578732900 -0400 @@ -75,7 +75,7 @@ supported. (Assuan: "OPTION ttyname TTYNAME".) */ char *ttyname; /* The type of the terminal. (Assuan: "OPTION ttytype TTYTYPE".) */ - char *ttytype; + char *ttytype_; /* Set the alert mode (none, beep or flash). */ char *ttyalert; /* The LC_CTYPE value for the terminal. (Assuan: "OPTION lc-ctype diff -ur orig/pinentry-1.1.0/pinentry/pinentry-curses.c pinentry-1.1.0/pinentry/pinentry-curses.c --- orig/pinentry-1.1.0/pinentry/pinentry-curses.c 2017-12-03 11:13:05.000000000 -0500 +++ pinentry-1.1.0/pinentry/pinentry-curses.c 2018-11-02 15:27:00.269222900 -0400 @@ -1188,7 +1188,7 @@ } #endif - rc = dialog_run (pinentry, pinentry->ttyname, pinentry->ttytype); + rc = dialog_run (pinentry, pinentry->ttyname, pinentry->ttytype_); do_touch_file (pinentry); return rc; }
-- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple