* secmem/util.c (init_uids): Make it a prototype.
authorWerner Koch <wk@gnupg.org>
Tue, 5 Nov 2002 19:44:36 +0000 (19:44 +0000)
committerWerner Koch <wk@gnupg.org>
Tue, 5 Nov 2002 19:44:36 +0000 (19:44 +0000)
* gtk/pinentry-gtk.c (enter_callback): Changed argument name to
avoid shadowing warning.
(create_window): Removed unused variable I.
(ok): Not used, commented.

* pinentry/pinentry.c: Include headers for getpid and sleep
prototypes.

* secmem/util.h: Correctly declare functions taking no args.

* gtk/pinentry-gtk.c: Move gtk headers to the top to avoid
compiler warnings about shadowing index etc.

* curses/pinentry-curses.c: Include stdio.h for the printf prototype.

* pinentry/pinentry-curses.c (dialog_switch_pos): Return a value.

* pinentry/pinentry.c (pinentry_have_display): New.
(pinentry_setbufferlen): Must return a value. Fixed documentation.
(usage): Print a question mark as a substitue for the program name.

* gtk/pinentry-gtk.c (main): use it here instead of getenv().
* qt/main.cpp (main): Ditto.

ChangeLog
NEWS
curses/pinentry-curses.c
gtk/pinentry-gtk.c
pinentry/pinentry-curses.c
pinentry/pinentry.c
pinentry/pinentry.h
qt/main.cpp
secmem/util.c
secmem/util.h

index 0079a9d..86c7bc7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2002-11-05  Werner Koch  <wk@gnupg.org>
+
+       * secmem/util.c (init_uids): Make it a prototype.
+
+       * gtk/pinentry-gtk.c (enter_callback): Changed argument name to
+       avoid shadowing warning.
+       (create_window): Removed unused variable I.
+       (ok): Not used, commented.
+
+       * pinentry/pinentry.c: Include headers for getpid and sleep
+       prototypes.
+
+       * secmem/util.h: Correctly declare functions taking no args. 
+
+       * gtk/pinentry-gtk.c: Move gtk headers to the top to avoid
+       compiler warnings about shadowing index etc.
+
+       * curses/pinentry-curses.c: Include stdio.h for the printf prototype.
+
+       * pinentry/pinentry-curses.c (dialog_switch_pos): Return a value.
+
+       * pinentry/pinentry.c (pinentry_have_display): New.
+       (pinentry_setbufferlen): Must return a value. Fixed documentation.
+       (usage): Print a question mark as a substitue for the program name.
+
+       * gtk/pinentry-gtk.c (main): use it here instead of getenv().
+       * qt/main.cpp (main): Ditto.
+
 2002-10-11  Werner Koch  <wk@gnupg.org>
 
        * configure.ac, Makefile.am: Added doc/ and tests for makeinfo
diff --git a/NEWS b/NEWS
index bf579cd..b37a119 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,6 +1,8 @@
 Noteworthy changes in version 0.6.6 (unreleased)
 ------------------------------------------------
 
+ * Fixed handling of DISPLAY and --display for the sake of the curses
+   fallback.
 
 Noteworthy changes in version 0.6.5 (2002-09-30)
 ------------------------------------------------
index 1d65d61..182dbed 100644 (file)
@@ -22,6 +22,7 @@
 #include <config.h>
 #endif
 
+#include <stdio.h>
 #include <stdlib.h>
 
 #include "pinentry.h"
index 6732b84..0a05649 100644 (file)
 #ifdef HAVE_CONFIG_H
 #include "config.h"
 #endif
+#include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
 #include <assert.h>
 #include <limits.h>
 #include <math.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
 #include <X11/X.h>
 
 
@@ -52,13 +52,14 @@ static int confirm_yes = 0;
 
 static GtkWidget *entry, *insure, *time_out;
 
+#if 0 /* not used */
 /* ok - Return to the command handler routine.  */
 static void 
 ok (GtkWidget *w, gpointer data)
 {
   gtk_main_quit ();
 }
-
+#endif /* not used */
 
 /* unselect - work around a bug in GTK+ that permits word-selection to
    work on the invisible passphrase */
@@ -153,7 +154,7 @@ button_clicked (GtkWidget *widget, gpointer data)
 
 
 static void 
-enter_callback (GtkWidget *widget, GtkWidget *entry)
+enter_callback (GtkWidget *widget, GtkWidget *anentry)
 {
   button_clicked (widget, "ok");
 }
@@ -177,7 +178,6 @@ create_window (int confirm_mode)
   GtkWidget *win, *box, *ebox;
   GtkWidget *sbox, *bbox;
   GtkAccelGroup *acc;
-  int i;
 
   /* fixme: check the grabbing code against the one we used with the
      old gpg-agent */
@@ -362,7 +362,7 @@ main (int argc, char *argv[])
   pinentry_init ();
 
 #ifdef FALLBACK_CURSES
-  if (getenv ("DISPLAY"))
+  if (pinentry_have_display (argc, argv))
     gtk_init (&argc, &argv);
   else
     pinentry_cmd_handler = curses_cmd_handler;
@@ -382,3 +382,4 @@ main (int argc, char *argv[])
 
   return 0;
 }
+
index 7f98988..c95681b 100644 (file)
@@ -516,6 +516,7 @@ dialog_switch_pos (dialog_t diag, dialog_pos_t new_pos)
        }
       refresh ();
     }
+  return 0;
 }
 
 /* XXX Assume that field width is at least > 5.  */
index 06cee5c..e4e7959 100644 (file)
@@ -26,6 +26,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <getopt.h>
+#include <unistd.h>
 
 #include "assuan.h"
 #include "memory.h"
@@ -55,13 +56,14 @@ struct pinentry pinentry =
 
 \f
 /* Try to make room for at least LEN bytes in the pinentry.  Returns
-   new buffer on success and 0 on failure.  */
+   new buffer on success and 0 on failure or when the old buffer is
+   sufficient.  */
 char *
 pinentry_setbufferlen (pinentry_t pin, int len)
 {
   char *newp;
   if (len < pinentry.pin_len)
-    return;
+    return NULL;
   newp = secmem_realloc (pin->pin, 2 * pin->pin_len);
   if (newp)
     {
@@ -90,10 +92,26 @@ pinentry_init (void)
   drop_privs ();
 }
 
+/* Simple test to check whether DISPLAY is set or the option --display
+   was given.  Used to decide whether the GUI or curses should be
+   initialized. */
+int
+pinentry_have_display (int argc, char **argv)
+{
+  if (getenv ("DISPLAY"))
+    return 1;
+  for (; argc; argc--, argv++)
+    if (!strcmp (*argv, "--display"))
+      return 1;
+  return 0;
+}
+
+
 \f
 static void 
 usage (void)
 {
+  /* FIXME: replace the "?" by the real program name. */
   fprintf (stderr, "Usage: %s [OPTION]...\n\
 Ask securely for a secret and print it to stdout.\n\
 \n\
@@ -106,7 +124,7 @@ Ask securely for a secret and print it to stdout.\n\
   -g, --no-global-grab  Grab keyboard only while window is focused\n\
   -d, --debug           Turn on debugging output\n\
       --help            Display this help and exit\n\
-      --version         Output version information and exit\n");
+      --version         Output version information and exit\n", "?");
 }
 
 
index 5031851..b9b2c10 100644 (file)
@@ -88,6 +88,10 @@ char *pinentry_setbufferlen (pinentry_t pin, int len);
    return.  Must be called early.  */
 void pinentry_init (void);
 
+/* Return true if either DISPLAY is set or ARGV contains the string
+   "--display". */
+int pinentry_have_display (int argc, char **argv);
+
 /* Parse the command line options.  Returns 1 if user should print
    version and exit.  Can exit the program if only help output is
    requested.  */
index b314969..30a6653 100644 (file)
@@ -155,7 +155,7 @@ int qt_main( int argc, char *argv[] )
 int main( int argc, char* argv[] ) 
 {
 #ifdef FALLBACK_CURSES
-  if( getenv( "DISPLAY" ) ) {
+  if( pinentry_have_display (argc, argv) ) {
 #endif
     return qt_main( argc, argv );
 #ifdef FALLBACK_CURSES
index 4319fc9..58d70b1 100644 (file)
@@ -86,7 +86,7 @@ void wipe(void *ptr, size_t n)
 }
 
 /* initialize uid variables */
-static void init_uids()
+static void init_uids(void)
 {
   real_uid = getuid();
   file_uid = geteuid();
index d44d6c6..57bde51 100644 (file)
@@ -42,9 +42,9 @@
 ssize_t xwrite(int, const void *, size_t); /* write until finished */
 int debugmsg(const char *, ...); /* output a debug message if debugging==on */
 void wipe(void *, size_t);     /* wipe a block of memory */
-void lower_privs();            /* lower privileges */
-void raise_privs();            /* raise privileges again */
-void drop_privs();             /* finally drop privileges */
+void lower_privs(void);                /* lower privileges */
+void raise_privs(void);                /* raise privileges again */
+void drop_privs(void);         /* finally drop privileges */
 
 
 #define xtoi_1(p)   (*(p) <= '9'? (*(p)- '0'): \