Fix a for a bug fix in the latest Libgcrypt.
[gnupg.git] / g10 / openfile.c
index d0be661..55dd42c 100644 (file)
@@ -6,7 +6,7 @@
  *
  * GnuPG is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * GnuPG is distributed in the hope that it will be useful,
@@ -15,9 +15,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU 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.
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -78,7 +76,7 @@ overwrite_filep( const char *fname )
         return 1; /* does not do any harm */
 #endif
 #ifdef HAVE_W32_SYSTEM
-    if ( !strcmp ( fname, "/dev/nul" ) )
+    if ( !strcmp ( fname, "nul" ) )
         return 1;
 #endif
 
@@ -203,7 +201,7 @@ open_outfile( const char *iname, int mode, IOBUF *a )
     if ( opt.dry_run )
       {
 #ifdef HAVE_W32_SYSTEM
-        name = "/dev/nul";
+        name = "nul";
 #else
         name = "/dev/null";
 #endif
@@ -330,7 +328,7 @@ open_sigfile( const char *iname, progress_filter_context_t *pfx )
 static void
 copy_options_file( const char *destdir )
 {
-    const char *datadir = GNUPG_DATADIR;
+    const char *datadir = gnupg_datadir ();
     char *fname;
     FILE *src, *dst;
     int linefeeds=0;
@@ -404,34 +402,35 @@ copy_options_file( const char *destdir )
 
 
 void
-try_make_homedir( const char *fname )
+try_make_homedir (const char *fname)
 {
-    const char *defhome = GNUPG_DEFAULT_HOMEDIR;
-
-    /* Create the directory only if the supplied directory name
-     * is the same as the default one.  This way we avoid to create
-     * arbitrary directories when a non-default homedirectory is used.
-     * To cope with HOME, we do compare only the suffix if we see that
-     * the default homedir does start with a tilde.
-     */
-    if( opt.dry_run || opt.no_homedir_creation )
-       return;
+  const char *defhome = standard_homedir ();
+
+  /* Create the directory only if the supplied directory name is the
+     same as the default one.  This way we avoid to create arbitrary
+     directories when a non-default home directory is used.  To cope
+     with HOME, we do compare only the suffix if we see that the
+     default homedir does start with a tilde.  */
+  if ( opt.dry_run || opt.no_homedir_creation )
+    return;
 
-    if ( ( *defhome == '~'
-           && ( strlen(fname) >= strlen (defhome+1)
-                && !strcmp(fname+strlen(fname)-strlen(defhome+1),
-                           defhome+1 ) ))
-         || ( *defhome != '~'
-              && !compare_filenames( fname, defhome ) )
-        ) {
-       if( mkdir( fname, S_IRUSR|S_IWUSR|S_IXUSR ) )
-           log_fatal( _("can't create directory `%s': %s\n"),
-                                       fname,  strerror(errno) );
-       else if( !opt.quiet )
-           log_info( _("directory `%s' created\n"), fname );
-       copy_options_file( fname );
-/*     log_info(_("you have to start GnuPG again, " */
-/*                "so it can read the new configuration file\n") ); */
-/*     g10_exit(1); */
+  if (
+#ifdef HAVE_W32_SYSTEM
+      ( !compare_filenames (fname, defhome) )
+#else
+      ( *defhome == '~'
+        && (strlen(fname) >= strlen (defhome+1)
+            && !strcmp(fname+strlen(fname)-strlen(defhome+1), defhome+1 ) ))
+      || (*defhome != '~'  && !compare_filenames( fname, defhome ) )
+#endif
+      )
+    {
+      if ( mkdir (fname, S_IRUSR|S_IWUSR|S_IXUSR) )
+        log_fatal ( _("can't create directory `%s': %s\n"),
+                    fname, strerror(errno) );
+      else if (!opt.quiet )
+        log_info ( _("directory `%s' created\n"), fname );
+      copy_options_file( fname );
+      
     }
 }