summaryrefslogtreecommitdiff
path: root/src/os_win/os_filesize.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/os_win/os_filesize.c')
-rw-r--r--src/os_win/os_filesize.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/os_win/os_filesize.c b/src/os_win/os_filesize.c
index c51303d7215..7f231b5ba9a 100644
--- a/src/os_win/os_filesize.c
+++ b/src/os_win/os_filesize.c
@@ -15,8 +15,8 @@
int
__wt_filesize(WT_SESSION_IMPL *session, WT_FH *fh, wt_off_t *sizep)
{
- WT_DECL_RET;
LARGE_INTEGER size;
+ WT_DECL_RET;
WT_RET(__wt_verbose(
session, WT_VERB_FILEOPS, "%s: GetFileSizeEx", fh->name));
@@ -34,11 +34,11 @@ __wt_filesize(WT_SESSION_IMPL *session, WT_FH *fh, wt_off_t *sizep)
* Return the size of a file in bytes, given a file name.
*/
int
-__wt_filesize_name(
- WT_SESSION_IMPL *session, const char *filename, wt_off_t *sizep)
+__wt_filesize_name(WT_SESSION_IMPL *session,
+ const char *filename, bool silent, wt_off_t *sizep)
{
- WT_DECL_RET;
WIN32_FILE_ATTRIBUTE_DATA data;
+ WT_DECL_RET;
char *path;
WT_RET(__wt_filename(session, filename, &path));
@@ -47,10 +47,18 @@ __wt_filesize_name(
__wt_free(session, path);
- if (ret != 0)
+ if (ret != 0) {
*sizep =
((int64_t)data.nFileSizeHigh << 32) | data.nFileSizeLow;
+ return (0);
+ }
- /* Some callers expect failure, so don't log an error message. */
+ /*
+ * Some callers of this function expect failure if the file doesn't
+ * exist, and don't want an error message logged.
+ */
+ ret = __wt_errno();
+ if (!silent)
+ WT_RET_MSG(session, ret, "%s: GetFileAttributesEx", filename);
return (ret);
}