From 5748d17934357aa740ea7c54e2e166368b81b91f Mon Sep 17 00:00:00 2001 From: Casey Bodley Date: Tue, 28 Sep 2010 12:45:13 -0400 Subject: [PATCH] cosmetic: map_lookup_error() Signed-off-by: Casey Bodley --- daemon/lookup.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/daemon/lookup.c b/daemon/lookup.c index 17a800f..58bec3e 100644 --- a/daemon/lookup.c +++ b/daemon/lookup.c @@ -169,6 +169,17 @@ out: return status; } +static int map_lookup_error(int status, bool_t is_last_component) +{ + switch (status) { + case NFS4ERR_NOENT: + if (is_last_component) return ERROR_FILE_NOT_FOUND; + else return ERROR_PATH_NOT_FOUND; + case NFS4ERR_MOVED: return ERROR_FILESYSTEM_ABSENT; + default: return nfs_to_windows_error(status, ERROR_FILE_NOT_FOUND); + } +} + static int server_lookup( IN nfs41_session *session, IN nfs41_path_fh *dir, @@ -237,7 +248,6 @@ static int server_lookup( path_fh_copy(&res->referral->parent, file); res->referral->name.name = args->lookup[i].name->name; res->referral->name.len = args->lookup[i].name->len; - return ERROR_FILESYSTEM_ABSENT; } status = res->getfh[i].status; if (status) break; status = res->getattr[i].status; if (status) break; @@ -270,12 +280,7 @@ static int server_lookup( } } out: - status = nfs_to_windows_error(status, ERROR_FILE_NOT_FOUND); - - /* use PATH_NOT_FOUND for all but the last name */ - if (status == ERROR_FILE_NOT_FOUND && i != count-1) - status = ERROR_PATH_NOT_FOUND; - return status; + return map_lookup_error(status, i == count-1); } static uint32_t max_lookup_components(