diff --git a/g10/ChangeLog b/g10/ChangeLog index 34020c963..0dc91c63d 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,3 +1,11 @@ +2003-01-02 Werner Koch + + * keydb.c (keydb_add_resource): Don't assume that try_make_homedir + terminates but check again for the existence of the directory and + continue then. + * openfile.c (copy_options_file): Print a warning if the skeleton + file has active options. + 2002-12-29 David Shaw * getkey.c (merge_selfsigs_main), main.h, sig-check.c @@ -7527,7 +7535,7 @@ Thu Feb 12 22:24:42 1998 Werner Koch (wk@frodo) * pubkey-enc.c (get_session_key): rewritten - Copyright 1998,1999,2000,2001,2002 Free Software Foundation, Inc. + Copyright 1998,1999,2000,2001,2002,2003 Free Software Foundation, Inc. This file is free software; as a special exception the author gives unlimited permission to copy and/or distribute it, with or without diff --git a/g10/keydb.c b/g10/keydb.c index 3162a1696..d2b0cea9c 100644 --- a/g10/keydb.c +++ b/g10/keydb.c @@ -1,5 +1,5 @@ /* keydb.c - key database dispatcher - * Copyright (C) 2001, 2002 Free Software Foundation, Inc. + * Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -100,13 +100,13 @@ keydb_add_resource (const char *url, int flags, int secret) rt = KEYDB_RESOURCE_TYPE_KEYRING; resname += 11; } - #if !defined(HAVE_DRIVE_LETTERS) && !defined(__riscos__) +#if !defined(HAVE_DRIVE_LETTERS) && !defined(__riscos__) else if (strchr (resname, ':')) { log_error ("invalid key resource URL `%s'\n", url ); rc = G10ERR_GENERAL; goto leave; } - #endif /* !HAVE_DRIVE_LETTERS && !__riscos__ */ +#endif /* !HAVE_DRIVE_LETTERS && !__riscos__ */ } if (*resname != DIRSEP_C ) { /* do tilde expansion etc */ @@ -163,14 +163,21 @@ keydb_add_resource (const char *url, int flags, int secret) last_slash_in_filename = strrchr (filename, DIRSEP_C); *last_slash_in_filename = 0; if (access(filename, F_OK)) - { /* on the first time we try to create the default - homedir and in this case the process will be - terminated, so that on the next invocation it can - read the options file in on startup */ - try_make_homedir (filename); - rc = G10ERR_OPEN_FILE; - *last_slash_in_filename = DIRSEP_C; - goto leave; + { /* On the first time we try to create the default + homedir and check again. */ + static int tried; + + if (!tried) + { + tried = 1; + try_make_homedir (filename); + } + if (access (filename, F_OK)) + { + rc = G10ERR_OPEN_FILE; + *last_slash_in_filename = DIRSEP_C; + goto leave; + } } *last_slash_in_filename = DIRSEP_C; diff --git a/g10/openfile.c b/g10/openfile.c index 7ccd43a45..34be71d62 100644 --- a/g10/openfile.c +++ b/g10/openfile.c @@ -1,5 +1,5 @@ /* openfile.c - * Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + * Copyright (C) 1998, 1999, 2000, 2001, 2003 Free Software Foundation, Inc. * * This file is part of GnuPG. * @@ -286,7 +286,6 @@ open_sigfile( const char *iname ) return a; } - /**************** * Copy the option file skeleton to the given directory. */ @@ -299,6 +298,8 @@ copy_options_file( const char *destdir ) int linefeeds=0; int c; mode_t oldmask; + int esc = 0; + int any_option = 0; if( opt.dry_run ) return; @@ -327,12 +328,27 @@ copy_options_file( const char *destdir ) if( c == '\n' ) linefeeds++; } - else + else { putc( c, dst ); + if (c== '\n') + esc = 1; + else if (esc == 1) { + if (c == ' ' || c == '\t') + ; + else if (c == '#') + esc = 2; + else + any_option = 1; + } + } } fclose( dst ); fclose( src ); log_info(_("new configuration file `%s' created\n"), fname ); + if (any_option) + log_info (_("WARNING: options in `%s'" + " are not yet active during this run\n"), + fname); m_free(fname); }