Refactor libnetapi error string functions a bit.
authorGünther Deschner <gd@samba.org>
Fri, 11 Jan 2008 13:47:23 +0000 (14:47 +0100)
committerGünther Deschner <gd@samba.org>
Fri, 11 Jan 2008 14:09:54 +0000 (15:09 +0100)
Guenther
(This used to be commit 3b450a8bcc97b6d03c4b7b9373a3a382c0fcea30)

source3/lib/netapi/netapi.c
source3/lib/netapi/netapi.h

index d4cb3a9fe2f2d7c14f29915a9f9ac9fb23765384..ce00054e6e9adb2ed8df3323dba6f1d15b589903 100644 (file)
@@ -192,8 +192,7 @@ NET_API_STATUS libnetapi_set_workgroup(struct libnetapi_ctx *ctx,
 /****************************************************************
 ****************************************************************/
 
-const char *libnetapi_errstr(struct libnetapi_ctx *ctx,
-                            NET_API_STATUS status)
+const char *libnetapi_errstr(NET_API_STATUS status)
 {
        if (status & 0xc0000000) {
                return get_friendly_nt_error_msg(NT_STATUS(status));
@@ -220,9 +219,23 @@ NET_API_STATUS libnetapi_set_error_string(struct libnetapi_ctx *ctx,
 /****************************************************************
 ****************************************************************/
 
-const char *libnetapi_get_error_string(struct libnetapi_ctx *ctx)
+const char *libnetapi_get_error_string(struct libnetapi_ctx *ctx,
+                                      NET_API_STATUS status)
 {
-       return ctx->error_string;
+       struct libnetapi_ctx *tmp_ctx = ctx;
+
+       if (!tmp_ctx) {
+               status = libnetapi_getctx(&tmp_ctx);
+               if (status != 0) {
+                       return NULL;
+               }
+       }
+
+       if (tmp_ctx->error_string) {
+               return tmp_ctx->error_string;
+       }
+
+       return libnetapi_errstr(status);
 }
 
 /****************************************************************
index 4a40b32fc95d4239cbc4200d54db21f4321bea58..61cece119ff6836500ad4e750674ccb2d45cd2c1 100644 (file)
@@ -46,9 +46,10 @@ NET_API_STATUS libnetapi_get_debuglevel(struct libnetapi_ctx *ctx, char **debugl
 NET_API_STATUS libnetapi_set_username(struct libnetapi_ctx *ctx, const char *username);
 NET_API_STATUS libnetapi_set_password(struct libnetapi_ctx *ctx, const char *password);
 NET_API_STATUS libnetapi_set_workgroup(struct libnetapi_ctx *ctx, const char *workgroup);
-const char *libnetapi_errstr(struct libnetapi_ctx *ctx, NET_API_STATUS status);
+const char *libnetapi_errstr(NET_API_STATUS status);
 NET_API_STATUS libnetapi_set_error_string(struct libnetapi_ctx *ctx, const char *error_string);
-const char *libnetapi_get_error_string(struct libnetapi_ctx *ctx);
+const char *libnetapi_get_error_string(struct libnetapi_ctx *ctx, NET_API_STATUS status);
+
 
 /****************************************************************
 ****************************************************************/