summaryrefslogtreecommitdiff
path: root/bdb/os/os_rename.c
diff options
context:
space:
mode:
Diffstat (limited to 'bdb/os/os_rename.c')
-rw-r--r--bdb/os/os_rename.c27
1 files changed, 14 insertions, 13 deletions
diff --git a/bdb/os/os_rename.c b/bdb/os/os_rename.c
index 8108bba67d9..2569a9c3186 100644
--- a/bdb/os/os_rename.c
+++ b/bdb/os/os_rename.c
@@ -1,14 +1,14 @@
/*-
* See the file LICENSE for redistribution information.
*
- * Copyright (c) 1997, 1998, 1999, 2000
+ * Copyright (c) 1997-2002
* Sleepycat Software. All rights reserved.
*/
#include "db_config.h"
#ifndef lint
-static const char revid[] = "$Id: os_rename.c,v 11.6 2000/04/14 16:56:33 ubell Exp $";
+static const char revid[] = "$Id: os_rename.c,v 11.12 2002/07/12 18:56:52 bostic Exp $";
#endif /* not lint */
#ifndef NO_SYSTEM_INCLUDES
@@ -19,28 +19,29 @@ static const char revid[] = "$Id: os_rename.c,v 11.6 2000/04/14 16:56:33 ubell E
#endif
#include "db_int.h"
-#include "os_jump.h"
/*
* __os_rename --
- * Rename a file.
+ * Rename a file. If flags is non-zero, then errors are OK and we
+ * should not output an error message.
*
- * PUBLIC: int __os_rename __P((DB_ENV *, const char *, const char *));
+ * PUBLIC: int __os_rename __P((DB_ENV *,
+ * PUBLIC: const char *, const char *, u_int32_t));
*/
int
-__os_rename(dbenv, old, new)
+__os_rename(dbenv, old, new, flags)
DB_ENV *dbenv;
const char *old, *new;
+ u_int32_t flags;
{
int ret;
- ret = __db_jump.j_rename != NULL ?
- __db_jump.j_rename(old, new) : rename(old, new);
-
- if (ret == -1) {
- ret = __os_get_errno();
- __db_err(dbenv, "Rename %s %s: %s", old, new, strerror(ret));
- }
+ do {
+ ret = DB_GLOBAL(j_rename) != NULL ?
+ DB_GLOBAL(j_rename)(old, new) : rename(old, new);
+ } while (ret != 0 && (ret = __os_get_errno()) == EINTR);
+ if (ret != 0 && flags == 0)
+ __db_err(dbenv, "rename %s %s: %s", old, new, strerror(ret));
return (ret);
}