* g10.c (main): Enhance the version-specific config file code to try for
authorDavid Shaw <dshaw@jabberwocky.com>
Sun, 26 Oct 2003 15:49:44 +0000 (15:49 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Sun, 26 Oct 2003 15:49:44 +0000 (15:49 +0000)
more specific matches before giving up (e.g. 1.3.3-cvs, 1.3.3, 1.3, 1).

g10/ChangeLog
g10/g10.c

index 3ed0f52..39daffb 100644 (file)
@@ -1,3 +1,9 @@
+2003-10-26  David Shaw  <dshaw@jabberwocky.com>
+
+       * g10.c (main): Enhance the version-specific config file code to
+       try for more specific matches before giving up (e.g. 1.3.3-cvs,
+       1.3.3, 1.3, 1).
+
 2003-10-25  David Shaw  <dshaw@jabberwocky.com>
 
        * g10.c (main): Add --symmetric --encrypt command.  This generates
index e1b4d42..9123bc4 100644 (file)
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -1299,17 +1299,37 @@ main( int argc, char **argv )
 
     set_native_charset (NULL); /* Try to auto set the character set */
 
+    /* Try for a version specific config file first */
     if( default_config )
       {
-       /* Try for a version specific config file first */
-       configname = make_filename(opt.homedir,
-                                  "gpg" EXTSEP_S "conf-" SAFE_VERSION, NULL );
-       if(access(configname,R_OK))
+       char *name=m_strdup("gpg" EXTSEP_S "conf-" SAFE_VERSION);
+       char *ver=&name[strlen("gpg" EXTSEP_S "conf-")];
+
+       do
          {
-           m_free(configname);
-           configname = make_filename(opt.homedir,
-                                      "gpg" EXTSEP_S "conf", NULL );
+           if(configname)
+             {
+               char *tok;
+
+               m_free(configname);
+               configname=NULL;
+
+               if((tok=strrchr(ver,SAFE_VERSION_DASH)))
+                 *tok='\0';
+               else if((tok=strrchr(ver,SAFE_VERSION_DOT)))
+                 *tok='\0';
+               else
+                 break;
+             }
+
+           configname = make_filename(opt.homedir,name,NULL);
          }
+       while(access(configname,R_OK));
+
+       m_free(name);
+
+       if(!configname)
+         configname=make_filename(opt.homedir, "gpg" EXTSEP_S "conf", NULL );
         if (!access (configname, R_OK))
           { /* Print a warning when both config files are present. */
             char *p = make_filename(opt.homedir, "options", NULL );