* qt/main.cpp: Include errno.h.
authorWerner Koch <wk@gnupg.org>
Mon, 22 Dec 2003 18:37:13 +0000 (18:37 +0000)
committerWerner Koch <wk@gnupg.org>
Mon, 22 Dec 2003 18:37:13 +0000 (18:37 +0000)
(main): Translate the --display option to -display, so that the Qt
init codes can grasp it.
* pinentry/pinentry.c: Added comment.

ChangeLog
pinentry/pinentry.c
qt/main.cpp

index 9f7b4e5..a905b13 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2003-12-22  Werner Koch  <wk@gnupg.org>
 
+       * qt/main.cpp: Include errno.h.
+       (main): Translate the --display option to -display, so that the Qt
+       init code can grasp it.
+
        * doc/ChangeLog: Removed and merged with this file.
        * doc/pinentry.texi: Cleaned up.
        * doc/fdl.texi: Removed.
@@ -21,7 +25,7 @@
        (pinentry_init): Add arg PGMNAME and store it.  Use it at all
        marked placed instead of the constant "pinentry".
        (usage): Use it here too.
-       * curses/pinentry-curses.c (main): Call pinentry_init wity our name. 
+       * curses/pinentry-curses.c (main): Call pinentry_init with our name. 
        * qt/main.cpp (main): Ditto.
        * gtk/pinentry-gtk.c (main): Ditto. 
 
index 4f50ba8..95df4b1 100644 (file)
@@ -321,13 +321,15 @@ pinentry_parse_opts (int argc, char *argv[])
           break;
 
        case 'D':
+          /* Note, this is currently not used because the GUI engine
+             has already been initialized when parsing these options. */
          pinentry.display = strdup (optarg);
          if (!pinentry.display)
            {
              fprintf (stderr, "%s: %s\n", this_pgmname, strerror (errno));
              exit (EXIT_FAILURE);
            }
-         break;
+         break; 
        case 'T':
          pinentry.ttyname = strdup (optarg);
          if (!pinentry.ttyname)
index 8eefbd5..fac5ca6 100644 (file)
@@ -24,6 +24,7 @@
 #endif
 
 #include <stdlib.h>
+#include <errno.h>
 
 #include <qapplication.h>
 #include <qwidget.h>
@@ -126,10 +127,45 @@ main (int argc, char *argv[])
     pinentry_cmd_handler = curses_cmd_handler;
   else
 #endif
-    /* We use a modal dialog window, so we don't need the application
-       window anymore.  */
-    new QApplication (argc, argv);
-
+    {
+      /* Qt does only understand -display but not --display; thus we
+         are fixing that here.  The code is pretty simply and may get
+         confused if an argument is called "--display". */
+      char **new_argv, *p;
+      size_t n;
+      int i, done;
+
+      for (n=0,i=0; i < argc; i++)
+        n += strlen (argv[i])+1;
+      n++;
+      new_argv = (char**)calloc (argc+1, sizeof *new_argv);
+      if (new_argv)
+        *new_argv = (char*)malloc (n);
+      if (!new_argv || !*new_argv)
+        {
+          fprintf (stderr, "pinentry-qt: can't fixup argument list: %s\n",
+                   strerror (errno));
+          exit (EXIT_FAILURE);
+          
+        }
+      for (done=0,p=*new_argv,i=0; i < argc; i++)
+        if (!done && !strcmp (argv[i], "--display"))
+          {
+            new_argv[i] = "-display";
+            done = 1;
+          }
+        else
+          {
+            new_argv[i] = strcpy (p, argv[i]);
+            p += strlen (argv[i]) + 1;
+          }
+
+      /* We use a modal dialog window, so we don't need the application
+         window anymore.  */
+      i = argc;
+      new QApplication (i, new_argv);
+    }
+  
 
   /* Consumes all arguments.  */
   if (pinentry_parse_opts (argc, argv))