diff options
author | Werner Koch <wk@gnupg.org> | 2016-11-16 17:43:59 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2016-11-16 17:43:59 +0100 |
commit | c4506a3f15bba5d257cb4c6738800c5e00ecc9a2 (patch) | |
tree | f2f6356a33ca8b64d0a565ffb17c52b80013f479 /kbx/keybox-util.c | |
parent | wks: Always build gpg-wks-client. (diff) | |
download | gnupg2-c4506a3f15bba5d257cb4c6738800c5e00ecc9a2.tar.xz gnupg2-c4506a3f15bba5d257cb4c6738800c5e00ecc9a2.zip |
common: Rename keybox_file_rename to gnupg_rename_file.
* kbx/keybox-util.c (keybox_file_rename): Rename to ...
* common/sysutils.c (gnupg_rename_file): this. Change all callers.
Signed-off-by: Werner Koch <wk@gnupg.org>
Diffstat (limited to 'kbx/keybox-util.c')
-rw-r--r-- | kbx/keybox-util.c | 66 |
1 files changed, 1 insertions, 65 deletions
diff --git a/kbx/keybox-util.c b/kbx/keybox-util.c index aacd0a431..486753c0d 100644 --- a/kbx/keybox-util.c +++ b/kbx/keybox-util.c @@ -147,73 +147,9 @@ keybox_tmp_names (const char *filename, int for_keyring, return 0; } - -/* Wrapper for rename(2) to handle Windows peculiarities. If - * BLOCK_SIGNALS is not NULL and points to a variable set to true, all - * signals will be blocked by calling gnupg_block_all_signals; the - * caller needs to call gnupg_unblock_all_signals if that variable is - * still set to true on return. */ gpg_error_t keybox_file_rename (const char *oldname, const char *newname, int *block_signals) { - gpg_error_t err = 0; - - if (block_signals && *block_signals) - gnupg_block_all_signals (); - -#ifdef HAVE_DOSISH_SYSTEM - { - int wtime = 0; - - gnupg_remove (newname); - again: - if (rename (oldname, newname)) - { - if (GetLastError () == ERROR_SHARING_VIOLATION) - { - /* Another process has the file open. We do not use a - * lock for read but instead we wait until the other - * process has closed the file. This may take long but - * that would also be the case with a dotlock approach for - * read and write. Note that we don't need this on Unix - * due to the inode concept. - * - * So let's wait until the rename has worked. The retry - * intervals are 50, 100, 200, 400, 800, 50ms, ... */ - if (!wtime || wtime >= 800) - wtime = 50; - else - wtime *= 2; - - if (wtime >= 800) - log_info ("waiting for file '%s' to become accessible ...\n", - oldname); - - Sleep (wtime); - goto again; - } - err = gpg_error_from_syserror (); - } - } -#else /* Unix */ - { -#ifdef __riscos__ - gnupg_remove (newname); -#endif - if (rename (oldname, newname) ) - err = gpg_error_from_syserror (); - } -#endif /* Unix */ - - if (block_signals && *block_signals && err) - { - gnupg_unblock_all_signals (); - *block_signals = 0; - } - - if (err) - log_error ("renaming '%s' to '%s' failed: %s\n", - oldname, newname, gpg_strerror (err)); - return err; + return gnupg_rename_file (oldname, newname, block_signals); } |