librpc Make ndrdump use printf() rather than having to mess with DEBUG()
authorAndrew Bartlett <abartlet@samba.org>
Wed, 27 Oct 2010 04:19:05 +0000 (15:19 +1100)
committerAndrew Bartlett <abartlet@samba.org>
Wed, 27 Oct 2010 04:42:06 +0000 (04:42 +0000)
This means it no longer needs to force the debug level etc.

(this builds on the fine work by Volker to create dump_data_cb())

Andrew Bartlett

librpc/ndr/libndr.h
librpc/ndr/ndr.c
librpc/tools/ndrdump.c

index 6bc96cada671ffc1e79fb305530a91eab8df3b60..06cc93a8919ed2b58180a5ed28a672ce38755fb1 100644 (file)
@@ -406,6 +406,7 @@ struct ndr_push *ndr_push_init_ctx(TALLOC_CTX *mem_ctx);
 DATA_BLOB ndr_push_blob(struct ndr_push *ndr);
 enum ndr_err_code ndr_push_expand(struct ndr_push *ndr, uint32_t extra_size);
 void ndr_print_debug_helper(struct ndr_print *ndr, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
+void ndr_print_printf_helper(struct ndr_print *ndr, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
 void ndr_print_string_helper(struct ndr_print *ndr, const char *format, ...) PRINTF_ATTRIBUTE(2,3);
 void ndr_print_debug(ndr_print_fn_t fn, const char *name, void *ptr);
 void ndr_print_union_debug(ndr_print_fn_t fn, const char *name, uint32_t level, void *ptr);
index 3f553a7cbc8a2800836406ad805cb30a6a4adac3..0e16a43525dd00633d74ff8172f8fb4649f4c9eb 100644 (file)
@@ -190,6 +190,25 @@ _PUBLIC_ void ndr_print_debug_helper(struct ndr_print *ndr, const char *format,
        free(s);
 }
 
+_PUBLIC_ void ndr_print_printf_helper(struct ndr_print *ndr, const char *format, ...) 
+{
+       va_list ap;
+       int i;
+
+       if (!ndr->no_newline) {
+               for (i=0;i<ndr->depth;i++) {
+                       printf("    ");
+               }
+       }
+
+       va_start(ap, format);
+       vprintf(format, ap);
+       va_end(ap);
+       if (!ndr->no_newline) {
+               printf("\n");
+       }
+}
+
 _PUBLIC_ void ndr_print_string_helper(struct ndr_print *ndr, const char *format, ...)
 {
        va_list ap;
index 6fc903fa323b043a69eece6bb625c7d210f4ffc6..b9b4bc7fd6bc3762aa64ee28adb2ccd853d0e5de 100644 (file)
@@ -127,13 +127,14 @@ static const struct ndr_interface_table *load_iface_from_plugin(const char *plug
        return p;
 }
 
+static void printf_cb(const char *buf, void *private_data)
+{
+       printf("%s", buf);
+}
+
 static void ndrdump_data(uint8_t *d, uint32_t l, bool force)
 {
-       if (force) {
-               dump_data(0, d, l);
-       } else {
-               dump_data_skip_zeros(0, d, l);
-       }
+       dump_data_cb(d, l, !force, printf_cb, NULL);
 }
 
  int main(int argc, const char *argv[])
@@ -172,10 +173,6 @@ static void ndrdump_data(uint8_t *d, uint32_t l, bool force)
                { NULL }
        };
 
-       if (DEBUGLEVEL < 1) {
-               DEBUGLEVEL = 1;
-       }
-
        ndr_table_init();
 
        /* Initialise samba stuff */
@@ -183,8 +180,6 @@ static void ndrdump_data(uint8_t *d, uint32_t l, bool force)
 
        setlinebuf(stdout);
 
-       dbf = x_stderr;
-
        setup_logging_stdout();
 
        pc = poptGetContext("ndrdump", argc, argv, long_options, 0);
@@ -354,7 +349,7 @@ static void ndrdump_data(uint8_t *d, uint32_t l, bool force)
        }
 
        ndr_print = talloc_zero(mem_ctx, struct ndr_print);
-       ndr_print->print = ndr_print_debug_helper;
+       ndr_print->print = ndr_print_printf_helper;
        ndr_print->depth = 1;
        f->ndr_print(ndr_print, function, flags, st);