Add --logger-fd alias.
[gnupg.git] / jnlib / argparse.c
index 54dd24e..3104db4 100644 (file)
@@ -6,7 +6,7 @@
  *
  * JNLIB is free software; you can redistribute it and/or modify it
  * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
+ * published by the Free Software Foundation; either version 3 of
  * the License, or (at your option) any later version.
  *
  * JNLIB is distributed in the hope that it will be useful, but
@@ -15,9 +15,7 @@
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
- * License along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
- * 02110-1301, USA.
+ * License along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -151,65 +149,71 @@ static void show_version(void);
 static void
 initialize( ARGPARSE_ARGS *arg, const char *filename, unsigned *lineno )
 {
-    if( !(arg->flags & (1<<15)) ) { /* initialize this instance */
-       arg->internal.idx = 0;
-       arg->internal.last = NULL;
-       arg->internal.inarg = 0;
-       arg->internal.stopped = 0;
-       arg->internal.aliases = NULL;
-       arg->internal.cur_alias = NULL;
-       arg->err = 0;
-       arg->flags |= 1<<15; /* mark initialized */
-       if( *arg->argc < 0 )
-           jnlib_log_bug("Invalid argument for ArgParse\n");
+  if( !(arg->flags & (1<<15)) ) 
+    { 
+      /* Initialize this instance. */
+      arg->internal.idx = 0;
+      arg->internal.last = NULL;
+      arg->internal.inarg = 0;
+      arg->internal.stopped = 0;
+      arg->internal.aliases = NULL;
+      arg->internal.cur_alias = NULL;
+      arg->err = 0;
+      arg->flags |= 1<<15; /* Mark as initialized.  */
+      if ( *arg->argc < 0 )
+        jnlib_log_bug ("invalid argument for arg_parsee\n");
     }
-
-
-    if( arg->err ) { /* last option was erroneous */
-       const char *s;
-
-       if( filename ) {
-           if( arg->r_opt == -6 )
-               s = "argument not expected\n";
-           else if( arg->r_opt == -5 )
-               s = "read error\n";
-           else if( arg->r_opt == -4 )
-               s = "keyword too long\n";
-           else if( arg->r_opt == -3 )
-               s = "missing argument\n";
-           else if( arg->r_opt == -7 )
-               s = "invalid command\n";
-           else if( arg->r_opt == -10 )
-               s = "invalid alias definition\n";
-           else
-               s = "invalid option\n";
-           jnlib_log_error("%s:%u: %s\n", filename, *lineno, s);
+  
+  
+  if (arg->err)
+    {
+      /* Last option was erroneous.  */
+      const char *s;
+      
+      if (filename)
+        {
+          if ( arg->r_opt == -6 )
+            s = _("argument not expected");
+          else if ( arg->r_opt == -5 )
+            s = _("read error");
+          else if ( arg->r_opt == -4 )
+            s = _("keyword too long");
+          else if ( arg->r_opt == -3 )
+            s = _("missing argument");
+          else if ( arg->r_opt == -7 )
+            s = _("invalid command");
+          else if ( arg->r_opt == -10 )
+            s = _("invalid alias definition");
+          else
+            s = _("invalid option");
+          jnlib_log_error ("%s:%u: %s\n", filename, *lineno, s);
        }
-       else {
-            s = arg->internal.last? arg->internal.last:"[??]";
+      else 
+        {
+          s = arg->internal.last? arg->internal.last:"[??]";
             
-           if( arg->r_opt == -3 )
-              jnlib_log_error ("Missing argument for option \"%.50s\"\n", s);
-           else if( arg->r_opt == -6 )
-              jnlib_log_error ("Option \"%.50s\" does not expect an argument\n",
-                               s );
-           else if( arg->r_opt == -7 )
-              jnlib_log_error ("Invalid command \"%.50s\"\n", s);
-           else if( arg->r_opt == -8 )
-              jnlib_log_error ("Option \"%.50s\" is ambiguous\n", s);
-           else if( arg->r_opt == -9 )
-              jnlib_log_error ("Command \"%.50s\" is ambiguous\n",s );
-           else
-              jnlib_log_error ("Invalid option \"%.50s\"\n", s);
+          if ( arg->r_opt == -3 )
+            jnlib_log_error (_("missing argument for option \"%.50s\"\n"), s);
+          else if ( arg->r_opt == -6 )
+            jnlib_log_error (_("option \"%.50s\" does not expect an "
+                               "argument\n"), s );
+          else if ( arg->r_opt == -7 )
+            jnlib_log_error (_("invalid command \"%.50s\"\n"), s);
+          else if ( arg->r_opt == -8 )
+            jnlib_log_error (_("option \"%.50s\" is ambiguous\n"), s);
+          else if ( arg->r_opt == -9 )
+            jnlib_log_error (_("command \"%.50s\" is ambiguous\n"),s );
+          else
+            jnlib_log_error (_("invalid option \"%.50s\"\n"), s);
        }
-       if( arg->err != 1 )
-           exit(2);
-       arg->err = 0;
+      if ( arg->err != 1 )
+        exit (2);
+      arg->err = 0;
     }
 
-    /* clearout the return value union */
-    arg->r.ret_str = NULL;
-    arg->r.ret_long= 0;
+  /* Zero out the return value union.  */
+  arg->r.ret_str = NULL;
+  arg->r.ret_long = 0;
 }
 
 
@@ -834,8 +838,21 @@ show_help( ARGPARSE_OPTS *opts, unsigned flags )
            puts("\n(A single dash may be used instead of the double ones)");
     }
     if( (s=strusage(19)) ) {  /* bug reports to ... */
+        char *s2;
+
        putchar('\n');
-       fputs(s, stdout);
+        s2 = strstr (s, "@EMAIL@");
+        if (s2)
+          {
+            if (s2-s)
+              fwrite (s, s2-s, 1, stdout);
+            fputs (PACKAGE_BUGREPORT, stdout);
+            s2 += 7;
+            if (*s2)
+              fputs (s2, stdout);
+          }
+        else
+          fputs(s, stdout);
     }
     fflush(stdout);
     exit(0);
@@ -924,8 +941,8 @@ strusage( int level )
        return p;
 
     switch( level ) {
-      case 10: p = ("License GPLv2+: GNU GPL version 2 or later "
-                    "<http://gnu.org/licenses/old-licenses/gpl-2.0.html>");
+      case 10: p = ("License GPLv3+: GNU GPL version 3 or later "
+                    "<http://gnu.org/licenses/gpl.html>");
         break;
       case 11: p = "foo"; break;
       case 13: p = "0.0"; break;
@@ -944,7 +961,7 @@ strusage( int level )
 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n"
 "GNU General Public License for more details.\n\n"
 "You should have received a copy of the GNU General Public License\n"
-"along with this software.  If not, see  <http://www.gnu.org/licenses/>.\n";
+"along with this software.  If not, see <http://www.gnu.org/licenses/>.\n";
        break;
       case 40: /* short and long usage */
       case 41: p = ""; break;