diff options
Diffstat (limited to 'source3/libsmb')
-rw-r--r-- | source3/libsmb/nterr.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/source3/libsmb/nterr.c b/source3/libsmb/nterr.c index 774e50e700..d88e650c9c 100644 --- a/source3/libsmb/nterr.c +++ b/source3/libsmb/nterr.c @@ -647,6 +647,7 @@ nt_err_code_struct nt_err_desc[] = const char *nt_errstr(NTSTATUS nt_code) { + static pstring msg; int idx = 0; #ifdef HAVE_LDAP @@ -655,6 +656,8 @@ const char *nt_errstr(NTSTATUS nt_code) } #endif + slprintf(msg, sizeof(msg), "NT code 0x%08x", NT_STATUS_V(nt_code)); + while (nt_errs[idx].nt_errstr != NULL) { if (NT_STATUS_EQUAL(nt_errs[idx].nt_errcode, nt_code)) { return nt_errs[idx].nt_errstr; @@ -662,8 +665,7 @@ const char *nt_errstr(NTSTATUS nt_code) idx++; } - return talloc_asprintf(talloc_tos(), "NT code 0x%08x", - NT_STATUS_V(nt_code)); + return msg; } /************************************************************************ @@ -687,6 +689,28 @@ const char *get_friendly_nt_error_msg(NTSTATUS nt_code) } /***************************************************************************** + Returns an NT_STATUS constant as a string for inclusion in autogen C code. + *****************************************************************************/ + +const char *get_nt_error_c_code(NTSTATUS nt_code) +{ + static pstring out; + int idx = 0; + + while (nt_errs[idx].nt_errstr != NULL) { + if (NT_STATUS_V(nt_errs[idx].nt_errcode) == + NT_STATUS_V(nt_code)) { + return nt_errs[idx].nt_errstr; + } + idx++; + } + + slprintf(out, sizeof(out), "NT_STATUS(0x%08x)", NT_STATUS_V(nt_code)); + + return out; +} + +/***************************************************************************** Returns the NT_STATUS constant matching the string supplied (as an NTSTATUS) *****************************************************************************/ |