gpg: Improve keydb handling in the main import function.
[gnupg.git] / g10 / gpgcompose.c
index a8da54c..8c156d2 100644 (file)
@@ -281,18 +281,18 @@ show_help (struct option options[])
         {
           const char *o = option[0] ? option : "ARG";
           l = strlen (o);
-          fprintf (stderr, "%s", o);
+          fprintf (stdout, "%s", o);
         }
 
       if (! help)
         {
-          fputc ('\n', stderr);
+          fputc ('\n', stdout);
           continue;
         }
 
       if (option)
         for (j = l; j < max_length + 2; j ++)
-          fputc (' ', stderr);
+          fputc (' ', stdout);
 
 #define BOLD_START "\033[1m"
 #define NORMAL_RESTORE "\033[0m"
@@ -314,7 +314,7 @@ show_help (struct option options[])
 
       if (! option)
         {
-          fprintf (stderr, "\n%s\n", formatted);
+          printf ("\n%s\n", formatted);
           break;
         }
 
@@ -330,10 +330,10 @@ show_help (struct option options[])
 
           if (p != formatted)
             for (j = 0; j < max_length + 2; j ++)
-              fputc (' ', stderr);
+              fputc (' ', stdout);
 
-          fwrite (p, l, 1, stderr);
-          fputc ('\n', stderr);
+          fwrite (p, l, 1, stdout);
+          fputc ('\n', stdout);
         }
 
       xfree (formatted);
@@ -512,7 +512,8 @@ static struct option major_options[] = {
   { "--encrypted-mdc", encrypted,
     "Create a symmetrically encrypted and integrity protected data packet." },
   { "--encrypted-pop", encrypted_pop,
-    "Pop an encryption container." },
+    "Pop the most recent encryption container started by either"
+    " --encrypted or --encrypted-mdc." },
   { "--compressed", NULL, "Create a compressed data packet." },
   { "--literal", literal, "Create a literal (plaintext) data packet." },
   { "--signature", signature, "Create a signature packet." },
@@ -2534,7 +2535,9 @@ encrypted (const char *option, int argc, char *argv[], void *cookie)
                                argc, argv);
 
   if (! session_key.algo)
-    log_fatal ("%s: no session key configured.\n", option);
+    log_fatal ("%s: no session key configured\n"
+               "  (use e.g. --sk-esk PASSWORD or --pk-esk KEYID).\n",
+               option);
 
   memset (&e, 0, sizeof (e));
   /* We only need to set E->LEN, E->EXTRALEN (if E->LEN is not
@@ -2580,18 +2583,36 @@ encrypted (const char *option, int argc, char *argv[], void *cookie)
   return processed;
 }
 \f
+static struct option encrypted_pop_options[] = {
+  { NULL, NULL,
+    "Example:\n\n"
+    "  $ gpgcompose --sk-esk PASSWORD \\\n"
+    "    --encrypted-mdc \\\n"
+    "      --literal --value foo \\\n"
+    "    --encrypted-pop | " GPG_NAME " --list-packets" }
+};
+
 static int
 encrypted_pop (const char *option, int argc, char *argv[], void *cookie)
 {
   iobuf_t out = cookie;
+  int processed;
 
-  (void) argc;
-  (void) argv;
+  processed = process_options (option,
+                               major_options,
+                               encrypted_pop_options,
+                               NULL,
+                               global_options, NULL,
+                               argc, argv);
+  /* We only support a single option, --help, which causes the program
+   * to exit.  */
+  log_assert (processed == 0);
 
+  filter_pop (out, PKT_ENCRYPTED);
 
   debug ("Popped encryption container.\n");
 
-  return 0;
+  return processed;
 }
 \f
 struct data
@@ -2725,7 +2746,7 @@ literal_name (const char *option, int argc, char *argv[], void *cookie)
 {
   struct litinfo *li = cookie;
 
-  if (argc <= 1)
+  if (argc <= 0)
     log_fatal ("Usage: %s NAME\n", option);
 
   if (strlen (argv[0]) > 255)
@@ -3042,3 +3063,23 @@ show_basic_key_info (ctrl_t ctrl, KBNODE keyblock)
   (void)ctrl;
   (void) keyblock;
 }
+
+int
+keyedit_print_one_sig (ctrl_t ctrl, estream_t fp,
+                       int rc, kbnode_t keyblock, kbnode_t node,
+                      int *inv_sigs, int *no_key, int *oth_err,
+                      int is_selfsig, int print_without_key, int extended)
+{
+  (void) ctrl;
+  (void) fp;
+  (void) rc;
+  (void) keyblock;
+  (void) node;
+  (void) inv_sigs;
+  (void) no_key;
+  (void) oth_err;
+  (void) is_selfsig;
+  (void) print_without_key;
+  (void) extended;
+  return 0;
+}