diff options
Diffstat (limited to 'src/os_win/os_filesize.c')
-rw-r--r-- | src/os_win/os_filesize.c | 20 |
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); } |