diff options
Diffstat (limited to 'bdb/os/os_rename.c')
-rw-r--r-- | bdb/os/os_rename.c | 27 |
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); } |