summaryrefslogtreecommitdiffstats
path: root/kbx/keybox-util.c
diff options
context:
space:
mode:
authorWerner Koch <wk@gnupg.org>2016-11-16 17:43:59 +0100
committerWerner Koch <wk@gnupg.org>2016-11-16 17:43:59 +0100
commitc4506a3f15bba5d257cb4c6738800c5e00ecc9a2 (patch)
treef2f6356a33ca8b64d0a565ffb17c52b80013f479 /kbx/keybox-util.c
parentwks: Always build gpg-wks-client. (diff)
downloadgnupg2-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.c66
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);
}