From 62c57cb4006ca8678ac5a94cdd1d31af3f9f0a21 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 2 Nov 2008 17:11:20 +0100 Subject: Remove use of global_loadparm when comparing nt status error - use global variable instead. --- libcli/util/ntstatus.h | 3 +++ source4/libcli/util/errormap.c | 4 +++- source4/param/loadparm.c | 2 ++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/libcli/util/ntstatus.h b/libcli/util/ntstatus.h index bf03d51d02..fa4553df1e 100644 --- a/libcli/util/ntstatus.h +++ b/libcli/util/ntstatus.h @@ -628,6 +628,9 @@ const char *get_nt_error_c_code(NTSTATUS nt_code); *****************************************************************************/ NTSTATUS nt_status_string_to_code(const char *nt_status_str); +/** Used by ntstatus_dos_equal: */ +extern bool ntstatus_check_dos_mapping; + #define NT_STATUS_IS_OK(x) (NT_STATUS_V(x) == 0) #define NT_STATUS_IS_ERR(x) ((NT_STATUS_V(x) & 0xc0000000) == 0xc0000000) /* checking for DOS error mapping here is ugly, but unfortunately the diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index 4260c0dd7d..5c0d0af8d8 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -1160,6 +1160,8 @@ static const struct { {NT_STATUS_OK, WERR_OK} }; +bool ntstatus_check_dos_mapping = true; + /* check if a DOS encoded NTSTATUS code maps to the given NTSTATUS code */ @@ -1169,7 +1171,7 @@ bool ntstatus_dos_equal(NTSTATUS status1, NTSTATUS status2) the mapping of dos codes, as we want to catch the cases where a forced dos code is needed */ - if (lp_nt_status_support(global_loadparm)) { + if (ntstatus_check_dos_mapping) { return NT_STATUS_V(status1) == NT_STATUS_V(status2); } diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 201013609e..b79be28ac0 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2480,6 +2480,8 @@ bool lp_load(struct loadparm_context *lp_ctx, const char *filename) reload_charcnv(lp_ctx); + ntstatus_check_dos_mapping = lp_nt_status_support(lp_ctx); + /* FIXME: Check locale in environment for this: */ if (strcmp(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx)) != 0) d_set_iconv(smb_iconv_open(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx))); -- cgit