summaryrefslogtreecommitdiff
path: root/source3/rpc_parse/parse_prs.c
diff options
context:
space:
mode:
authorMartin Pool <mbp@samba.org>2002-01-02 07:48:07 +0000
committerMartin Pool <mbp@samba.org>2002-01-02 07:48:07 +0000
commit4f3a2be2b9b566a33c5205142666e7e697d8f93f (patch)
tree96ec4817c055f8ecffa04bc456d6285422b54d94 /source3/rpc_parse/parse_prs.c
parenta3f891dbd2e9ee1681e3c8295cd62a877c727d4f (diff)
downloadsamba-4f3a2be2b9b566a33c5205142666e7e697d8f93f.tar.gz
samba-4f3a2be2b9b566a33c5205142666e7e697d8f93f.tar.bz2
samba-4f3a2be2b9b566a33c5205142666e7e697d8f93f.zip
Add prs_dump_before to dump everything from the start of the prs
buffer up to the current position, and use this to dump pipe buffers just before parsing. (This used to be commit 92a3ab274e6cf09a8ba39b91f8bbacba6de40b37)
Diffstat (limited to 'source3/rpc_parse/parse_prs.c')
-rw-r--r--source3/rpc_parse/parse_prs.c27
1 files changed, 23 insertions, 4 deletions
diff --git a/source3/rpc_parse/parse_prs.c b/source3/rpc_parse/parse_prs.c
index f902210b7b..8bb9f1c70a 100644
--- a/source3/rpc_parse/parse_prs.c
+++ b/source3/rpc_parse/parse_prs.c
@@ -23,11 +23,30 @@
#include "includes.h"
-/*******************************************************************
-dump a prs to a file
- ********************************************************************/
+/**
+ * Dump a prs to a file: from the current location through to the end.
+ **/
void prs_dump(char *name, int v, prs_struct *ps)
{
+ prs_dump_region(name, v, ps, ps->data_offset, ps->buffer_size);
+}
+
+
+/**
+ * Dump from the start of the prs to the current location.
+ **/
+void prs_dump_before(char *name, int v, prs_struct *ps)
+{
+ prs_dump_region(name, v, ps, 0, ps->data_offset);
+}
+
+
+/**
+ * Dump everything from the start of the prs up to the current location.
+ **/
+void prs_dump_region(char *name, int v, prs_struct *ps,
+ int from_off, int to_off)
+{
int fd, i;
pstring fname;
if (DEBUGLEVEL < 50) return;
@@ -41,7 +60,7 @@ void prs_dump(char *name, int v, prs_struct *ps)
if (fd != -1 || errno != EEXIST) break;
}
if (fd != -1) {
- write(fd, ps->data_p + ps->data_offset, ps->buffer_size - ps->data_offset);
+ write(fd, ps->data_p + from_off, to_off - from_off);
close(fd);
DEBUG(0,("created %s\n", fname));
}