diff options
author | Ralph Boehme <slow@samba.org> | 2018-11-16 14:24:35 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2019-08-08 20:24:31 +0000 |
commit | f58026b30b2bf9d60222d39947d07ee858ee5756 (patch) | |
tree | 087cbefa3f00fef6fe0c82abff2778e4fd73e4b3 /source3/rpc_server | |
parent | b5731a94bbc95fa001059d488a2c16a988127619 (diff) | |
download | samba-f58026b30b2bf9d60222d39947d07ee858ee5756.tar.gz |
s3:mdssvc: mds_dalloc_dump() -> dalloc_dump()
Move mds_dalloc_dump() to dalloc and rename it to dalloc_dump().
Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Diffstat (limited to 'source3/rpc_server')
-rw-r--r-- | source3/rpc_server/mdssvc/dalloc.c | 171 | ||||
-rw-r--r-- | source3/rpc_server/mdssvc/dalloc.h | 2 | ||||
-rw-r--r-- | source3/rpc_server/mdssvc/mdssvc.c | 173 | ||||
-rw-r--r-- | source3/rpc_server/mdssvc/mdssvc.h | 1 |
4 files changed, 176 insertions, 171 deletions
diff --git a/source3/rpc_server/mdssvc/dalloc.c b/source3/rpc_server/mdssvc/dalloc.c index 28944b809f1..23193fee70a 100644 --- a/source3/rpc_server/mdssvc/dalloc.c +++ b/source3/rpc_server/mdssvc/dalloc.c @@ -18,6 +18,10 @@ #include "replace.h" #include <talloc.h> #include "dalloc.h" +#include "marshalling.h" +#include "lib/util/charset/charset.h" +#include "lib/util/talloc_stack.h" +#include "system/time.h" /** * Dynamic Datastore @@ -230,3 +234,170 @@ int dalloc_stradd(DALLOC_CTX *d, const char *string) return 0; } + +static char *tab_level(TALLOC_CTX *mem_ctx, int level) +{ + int i; + char *string = talloc_array(mem_ctx, char, level + 1); + + for (i = 0; i < level; i++) { + string[i] = '\t'; + } + + string[i] = '\0'; + return string; +} + +char *dalloc_dump(DALLOC_CTX *dd, int nestinglevel) +{ + const char *type; + int n, result; + uint64_t i; + sl_bool_t bl; + sl_time_t t; + struct tm *tm; + char datestring[256]; + sl_cnids_t cnids; + char *logstring, *nested_logstring; + char *tab_string1, *tab_string2; + void *p; + bool ok; + char *utf8string; + size_t utf8len; + + tab_string1 = tab_level(dd, nestinglevel); + if (tab_string1 == NULL) { + return NULL; + } + tab_string2 = tab_level(dd, nestinglevel + 1); + if (tab_string2 == NULL) { + return NULL; + } + + logstring = talloc_asprintf(dd, + "%s%s(#%lu): {\n", + tab_string1, + talloc_get_name(dd), + dalloc_size(dd)); + if (logstring == NULL) { + return NULL; + } + + for (n = 0; n < dalloc_size(dd); n++) { + type = dalloc_get_name(dd, n); + if (type == NULL) { + return NULL; + } + p = dalloc_get_object(dd, n); + if (p == NULL) { + return NULL; + } + if (strcmp(type, "DALLOC_CTX") == 0 + || strcmp(type, "sl_array_t") == 0 + || strcmp(type, "sl_filemeta_t") == 0 + || strcmp(type, "sl_dict_t") == 0) { + nested_logstring = dalloc_dump(p, nestinglevel + 1); + if (nested_logstring == NULL) { + return NULL; + } + logstring = talloc_strdup_append(logstring, + nested_logstring); + } else if (strcmp(type, "uint64_t") == 0) { + memcpy(&i, p, sizeof(uint64_t)); + logstring = talloc_asprintf_append( + logstring, + "%suint64_t: 0x%04jx\n", + tab_string2, (uintmax_t)i); + } else if (strcmp(type, "char *") == 0) { + logstring = talloc_asprintf_append( + logstring, + "%sstring: %s\n", + tab_string2, + (char *)p); + } else if (strcmp(type, "smb_ucs2_t *") == 0) { + ok = convert_string_talloc(talloc_tos(), + CH_UTF16LE, + CH_UTF8, + p, + talloc_get_size(p), + &utf8string, + &utf8len); + if (!ok) { + return NULL; + } + logstring = talloc_asprintf_append( + logstring, + "%sUTF16-string: %s\n", + tab_string2, + utf8string); + TALLOC_FREE(utf8string); + } else if (strcmp(type, "sl_bool_t") == 0) { + memcpy(&bl, p, sizeof(sl_bool_t)); + logstring = talloc_asprintf_append( + logstring, + "%sbool: %s\n", + tab_string2, + bl ? "true" : "false"); + } else if (strcmp(type, "sl_nil_t") == 0) { + logstring = talloc_asprintf_append( + logstring, + "%snil\n", + tab_string2); + } else if (strcmp(type, "sl_time_t") == 0) { + memcpy(&t, p, sizeof(sl_time_t)); + tm = localtime(&t.tv_sec); + if (tm == NULL) { + return NULL; + } + result = strftime(datestring, + sizeof(datestring), + "%Y-%m-%d %H:%M:%S", tm); + if (result == 0) { + return NULL; + } + logstring = talloc_asprintf_append( + logstring, + "%ssl_time_t: %s.%06lu\n", + tab_string2, + datestring, + (unsigned long)t.tv_usec); + } else if (strcmp(type, "sl_cnids_t") == 0) { + memcpy(&cnids, p, sizeof(sl_cnids_t)); + logstring = talloc_asprintf_append( + logstring, + "%sCNIDs: unkn1: 0x%" PRIx16 ", unkn2: 0x%" PRIx32 "\n", + tab_string2, + cnids.ca_unkn1, + cnids.ca_context); + if (logstring == NULL) { + return NULL; + } + if (cnids.ca_cnids) { + nested_logstring = dalloc_dump( + cnids.ca_cnids, + nestinglevel + 2); + if (!nested_logstring) { + return NULL; + } + logstring = talloc_strdup_append(logstring, + nested_logstring); + } + } else { + logstring = talloc_asprintf_append( + logstring, + "%stype: %s\n", + tab_string2, + type); + } + if (logstring == NULL) { + return NULL; + } + } + logstring = talloc_asprintf_append(logstring, + "%s}\n", + tab_string1); + if (logstring == NULL) { + return NULL; + } + return logstring; +} diff --git a/source3/rpc_server/mdssvc/dalloc.h b/source3/rpc_server/mdssvc/dalloc.h index b268893160b..69650b8a7a0 100644 --- a/source3/rpc_server/mdssvc/dalloc.h +++ b/source3/rpc_server/mdssvc/dalloc.h @@ -160,4 +160,6 @@ extern int dalloc_stradd(DALLOC_CTX *d, const char *string); extern void *_dalloc_new(TALLOC_CTX *mem_ctx, const char *type); extern int _dalloc_add_talloc_chunk(DALLOC_CTX *d, void *obj, const char *type, size_t size); +extern char *dalloc_dump(DALLOC_CTX *dd, int nestinglevel); + #endif /* DALLOC_H */ diff --git a/source3/rpc_server/mdssvc/mdssvc.c b/source3/rpc_server/mdssvc/mdssvc.c index 2090841d8be..514672f2d76 100644 --- a/source3/rpc_server/mdssvc/mdssvc.c +++ b/source3/rpc_server/mdssvc/mdssvc.c @@ -79,173 +79,6 @@ static bool slrpc_close_query(struct mds_ctx *mds_ctx, * Misc utility functions ************************************************/ -static char *tab_level(TALLOC_CTX *mem_ctx, int level) -{ - int i; - char *string = talloc_array(mem_ctx, char, level + 1); - - for (i = 0; i < level; i++) { - string[i] = '\t'; - } - - string[i] = '\0'; - return string; -} - -char *mds_dalloc_dump(DALLOC_CTX *dd, int nestinglevel) -{ - const char *type; - int n, result; - uint64_t i; - sl_bool_t bl; - sl_time_t t; - struct tm *tm; - char datestring[256]; - sl_cnids_t cnids; - char *logstring, *nested_logstring; - char *tab_string1, *tab_string2; - void *p; - bool ok; - char *utf8string; - size_t utf8len; - - tab_string1 = tab_level(dd, nestinglevel); - if (tab_string1 == NULL) { - return NULL; - } - tab_string2 = tab_level(dd, nestinglevel + 1); - if (tab_string2 == NULL) { - return NULL; - } - - logstring = talloc_asprintf(dd, - "%s%s(#%lu): {\n", - tab_string1, - talloc_get_name(dd), - dalloc_size(dd)); - if (logstring == NULL) { - return NULL; - } - - for (n = 0; n < dalloc_size(dd); n++) { - type = dalloc_get_name(dd, n); - if (type == NULL) { - return NULL; - } - p = dalloc_get_object(dd, n); - if (p == NULL) { - return NULL; - } - if (strcmp(type, "DALLOC_CTX") == 0 - || strcmp(type, "sl_array_t") == 0 - || strcmp(type, "sl_filemeta_t") == 0 - || strcmp(type, "sl_dict_t") == 0) { - nested_logstring = mds_dalloc_dump(p, nestinglevel + 1); - if (nested_logstring == NULL) { - return NULL; - } - logstring = talloc_strdup_append(logstring, - nested_logstring); - } else if (strcmp(type, "uint64_t") == 0) { - memcpy(&i, p, sizeof(uint64_t)); - logstring = talloc_asprintf_append( - logstring, - "%suint64_t: 0x%04jx\n", - tab_string2, (uintmax_t)i); - } else if (strcmp(type, "char *") == 0) { - logstring = talloc_asprintf_append( - logstring, - "%sstring: %s\n", - tab_string2, - (char *)p); - } else if (strcmp(type, "smb_ucs2_t *") == 0) { - ok = convert_string_talloc(talloc_tos(), - CH_UTF16LE, - CH_UTF8, - p, - talloc_get_size(p), - &utf8string, - &utf8len); - if (!ok) { - return NULL; - } - logstring = talloc_asprintf_append( - logstring, - "%sUTF16-string: %s\n", - tab_string2, - utf8string); - TALLOC_FREE(utf8string); - } else if (strcmp(type, "sl_bool_t") == 0) { - memcpy(&bl, p, sizeof(sl_bool_t)); - logstring = talloc_asprintf_append( - logstring, - "%sbool: %s\n", - tab_string2, - bl ? "true" : "false"); - } else if (strcmp(type, "sl_nil_t") == 0) { - logstring = talloc_asprintf_append( - logstring, - "%snil\n", - tab_string2); - } else if (strcmp(type, "sl_time_t") == 0) { - memcpy(&t, p, sizeof(sl_time_t)); - tm = localtime(&t.tv_sec); - if (tm == NULL) { - return NULL; - } - result = strftime(datestring, - sizeof(datestring), - "%Y-%m-%d %H:%M:%S", tm); - if (result == 0) { - return NULL; - } - logstring = talloc_asprintf_append( - logstring, - "%ssl_time_t: %s.%06lu\n", - tab_string2, - datestring, - (unsigned long)t.tv_usec); - } else if (strcmp(type, "sl_cnids_t") == 0) { - memcpy(&cnids, p, sizeof(sl_cnids_t)); - logstring = talloc_asprintf_append( - logstring, - "%sCNIDs: unkn1: 0x%" PRIx16 ", unkn2: 0x%" PRIx32 "\n", - tab_string2, - cnids.ca_unkn1, - cnids.ca_context); - if (logstring == NULL) { - return NULL; - } - if (cnids.ca_cnids) { - nested_logstring = mds_dalloc_dump( - cnids.ca_cnids, - nestinglevel + 2); - if (!nested_logstring) { - return NULL; - } - logstring = talloc_strdup_append(logstring, - nested_logstring); - } - } else { - logstring = talloc_asprintf_append( - logstring, - "%stype: %s\n", - tab_string2, - type); - } - if (logstring == NULL) { - return NULL; - } - } - logstring = talloc_asprintf_append(logstring, - "%s}\n", - tab_string1); - if (logstring == NULL) { - return NULL; - } - return logstring; -} - /** * Add requested metadata for a query result element * @@ -1071,7 +904,7 @@ static bool slrpc_open_query(struct mds_ctx *mds_ctx, } slq->reqinfo = talloc_steal(slq, reqinfo); - DEBUG(10, ("requested attributes: %s", mds_dalloc_dump(reqinfo, 0))); + DEBUG(10, ("requested attributes: %s", dalloc_dump(reqinfo, 0))); cnids = dalloc_value_for_key(query, "DALLOC_CTX", 0, "DALLOC_CTX", 1, "kMDQueryItemArray"); @@ -1793,7 +1626,7 @@ bool mds_dispatch(struct mds_ctx *mds_ctx, goto cleanup; } - DEBUG(5, ("%s", mds_dalloc_dump(query, 0))); + DEBUG(5, ("%s", dalloc_dump(query, 0))); rpccmd = dalloc_get(query, "DALLOC_CTX", 0, "DALLOC_CTX", 0, "char *", 0); @@ -1823,7 +1656,7 @@ bool mds_dispatch(struct mds_ctx *mds_ctx, goto cleanup; } - DEBUG(5, ("%s", mds_dalloc_dump(reply, 0))); + DEBUG(5, ("%s", dalloc_dump(reply, 0))); len = sl_pack(reply, (char *)response_blob->spotlight_blob, response_blob->size); diff --git a/source3/rpc_server/mdssvc/mdssvc.h b/source3/rpc_server/mdssvc/mdssvc.h index 6836e65ea06..361ca044fd2 100644 --- a/source3/rpc_server/mdssvc/mdssvc.h +++ b/source3/rpc_server/mdssvc/mdssvc.h @@ -158,7 +158,6 @@ struct mds_ctx *mds_init_ctx(TALLOC_CTX *mem_ctx, extern bool mds_dispatch(struct mds_ctx *query_ctx, struct mdssvc_blob *request_blob, struct mdssvc_blob *response_blob); -extern char *mds_dalloc_dump(DALLOC_CTX *dd, int nestinglevel); bool mds_add_result(struct sl_query *slq, const char *path); #endif /* _MDSSVC_H */ |