svn commit: samba r5782 - in branches/SAMBA_4_0/source/utils: .
tpot at samba.org
tpot at samba.org
Sun Mar 13 03:16:07 GMT 2005
Author: tpot
Date: 2005-03-13 03:16:07 +0000 (Sun, 13 Mar 2005)
New Revision: 5782
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5782
Log:
Use standard input for reading packet data if filename not specified.
Modified:
branches/SAMBA_4_0/source/utils/ndrdump.c
Changeset:
Modified: branches/SAMBA_4_0/source/utils/ndrdump.c
===================================================================
--- branches/SAMBA_4_0/source/utils/ndrdump.c 2005-03-13 02:48:16 UTC (rev 5781)
+++ branches/SAMBA_4_0/source/utils/ndrdump.c 2005-03-13 03:16:07 UTC (rev 5782)
@@ -21,6 +21,7 @@
#include "includes.h"
#include "lib/cmdline/popt_common.h"
#include "system/iconv.h"
+#include "system/filesys.h"
static const struct dcerpc_interface_call *find_function(
const struct dcerpc_interface_table *p,
@@ -70,6 +71,32 @@
exit(1);
}
+static char *stdin_load(TALLOC_CTX *mem_ctx, size_t *size)
+{
+ int num_read, total_len = 0;
+ char buf[255];
+ char *result = NULL;
+
+ while((num_read = read(STDIN_FILENO, buf, 255)) > 0) {
+
+ if (result) {
+ result = (char *) talloc_realloc(
+ mem_ctx, result, char *, total_len + num_read);
+ } else {
+ result = talloc_size(mem_ctx, num_read);
+ }
+
+ memcpy(result + total_len, buf, num_read);
+
+ total_len += num_read;
+ }
+
+ if (size)
+ *size = total_len;
+
+ return result;
+}
+
int main(int argc, const char *argv[])
{
const struct dcerpc_interface_table *p;
@@ -100,7 +127,7 @@
pc = poptGetContext("ndrdump", argc, argv, long_options, 0);
- poptSetOtherOptionHelp(pc, "<pipe> <function> <inout> <filename>");
+ poptSetOtherOptionHelp(pc, "<pipe> <function> <inout> [<filename>]");
while ((opt = poptGetNextOpt(pc)) != -1) {
}
@@ -124,7 +151,7 @@
inout = poptGetArg(pc);
filename = poptGetArg(pc);
- if (!function || !inout || !filename) {
+ if (!function || !inout) {
poptPrintUsage(pc, stderr, 0);
show_functions(p);
exit(1);
@@ -180,9 +207,16 @@
}
}
- data = (uint8_t *)file_load(filename, &size);
+ if (filename)
+ data = (uint8_t *)file_load(filename, &size);
+ else
+ data = (uint8_t *)stdin_load(mem_ctx, &size);
+
if (!data) {
- perror(filename);
+ if (filename)
+ perror(filename);
+ else
+ perror("stdin");
exit(1);
}
More information about the samba-cvs
mailing list