2002-04-25 Marcus Brinkmann <marcus@g10code.de>
authorMarcus Brinkmann <mb@g10code.com>
Wed, 24 Apr 2002 22:08:35 +0000 (22:08 +0000)
committerMarcus Brinkmann <mb@g10code.com>
Wed, 24 Apr 2002 22:08:35 +0000 (22:08 +0000)
* server.c (option_handler): Accept display, ttyname, ttytype,
lc_ctype and lc_messages options.
* gpgsm.c (main): Allocate memory for these options.
* gpgsm.h (struct opt): Make corresponding members non-const.

sm/ChangeLog
sm/gpgsm.c
sm/gpgsm.h
sm/server.c

index 69deb67..660b726 100644 (file)
@@ -1,3 +1,10 @@
+2002-04-25  Marcus Brinkmann  <marcus@g10code.de>
+
+       * server.c (option_handler): Accept display, ttyname, ttytype,
+       lc_ctype and lc_messages options.
+       * gpgsm.c (main): Allocate memory for these options.
+       * gpgsm.h (struct opt): Make corresponding members non-const.
+
 2002-04-24  Marcus Brinkmann  <marcus@g10code.de>
 
        * gpgsm.h (struct opt): New members display, ttyname, ttytype,
index f755c02..cb2c3bd 100644 (file)
@@ -854,11 +854,11 @@ main ( int argc, char **argv)
         case oNoOptions: break; /* no-options */
         case oHomedir: opt.homedir = pargs.r.ret_str; break;
         case oAgentProgram: opt.agent_program = pargs.r.ret_str;  break;
-        case oDisplay: opt.display = pargs.r.ret_str; break;
-        case oTTYname: opt.ttyname = pargs.r.ret_str; break;
-        case oTTYtype: opt.ttytype = pargs.r.ret_str; break;
-        case oLCctype: opt.lc_ctype = pargs.r.ret_str; break;
-        case oLCmessages: opt.lc_messages = pargs.r.ret_str; break;
+        case oDisplay: opt.display = xstrdup (pargs.r.ret_str); break;
+        case oTTYname: opt.ttyname = xstrdup (pargs.r.ret_str); break;
+        case oTTYtype: opt.ttytype = xstrdup (pargs.r.ret_str); break;
+        case oLCctype: opt.lc_ctype = xstrdup (pargs.r.ret_str); break;
+        case oLCmessages: opt.lc_messages = xstrdup (pargs.r.ret_str); break;
         case oDirmngrProgram: opt.dirmngr_program = pargs.r.ret_str;  break;
           
         case oNoDefKeyring: default_keyring = 0; break;
index 09a633d..0683fd1 100644 (file)
@@ -39,11 +39,11 @@ struct {
 
   const char *homedir; /* configuration directory name */
   const char *agent_program; 
-  const char *display;
-  const char *ttyname;
-  const char *ttytype;
-  const char *lc_ctype;
-  const char *lc_messages;
+  char *display;
+  char *ttyname;
+  char *ttytype;
+  char *lc_ctype;
+  char *lc_messages;
 
   const char *dirmngr_program;
   char *outfile;    /* name of output file */
index 13af393..54558ed 100644 (file)
@@ -104,6 +104,46 @@ option_handler (ASSUAN_CONTEXT ctx, const char *key, const char *value)
         return ASSUAN_Parameter_Error;
       ctrl->include_certs = i;
     }
+  else   if (!strcmp (key, "display"))
+    {
+      if (opt.display)
+        free (opt.display);
+      opt.display = strdup (value);
+      if (!opt.display)
+        return ASSUAN_Out_Of_Core;
+    }
+  else if (!strcmp (key, "ttyname"))
+    {
+      if (opt.ttyname)
+        free (opt.ttyname);
+      opt.ttyname = strdup (value);
+      if (!opt.ttyname)
+        return ASSUAN_Out_Of_Core;
+    }
+  else if (!strcmp (key, "ttytype"))
+    {
+      if (opt.ttytype)
+        free (opt.ttytype);
+      opt.ttytype = strdup (value);
+      if (!opt.ttytype)
+        return ASSUAN_Out_Of_Core;
+    }
+  else if (!strcmp (key, "lc-ctype"))
+    {
+      if (opt.lc_ctype)
+        free (opt.lc_ctype);
+      opt.lc_ctype = strdup (value);
+      if (!opt.lc_ctype)
+        return ASSUAN_Out_Of_Core;
+    }
+  else if (!strcmp (key, "lc-messages"))
+    {
+      if (opt.lc_messages)
+        free (opt.lc_messages);
+      opt.lc_messages = strdup (value);
+      if (!opt.lc_messages)
+        return ASSUAN_Out_Of_Core;
+    }
   else
     return ASSUAN_Invalid_Option;