diff options
author | Andrew Tridgell <tridge@samba.org> | 2000-06-09 02:59:50 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2000-06-09 02:59:50 +0000 |
commit | eee003da6aee5ffc00e318fc0390e6b19151a675 (patch) | |
tree | 3cdb43304603d5bc38c2b2609fa8696731c898d5 /source3/aparser/parser.c | |
parent | c3487b00dd1dde7fa0511211f466acc1c05d8f3d (diff) | |
download | samba-eee003da6aee5ffc00e318fc0390e6b19151a675.tar.gz samba-eee003da6aee5ffc00e318fc0390e6b19151a675.tar.xz samba-eee003da6aee5ffc00e318fc0390e6b19151a675.zip |
started adding support for relative, plus options for autoalignment
so the same parser generator can be uses for cifs and rpc
(This used to be commit c7829fa0d87081d9b3f33468527583e3b763916b)
Diffstat (limited to 'source3/aparser/parser.c')
-rw-r--r-- | source3/aparser/parser.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/source3/aparser/parser.c b/source3/aparser/parser.c index f831393973..c2348b84f9 100644 --- a/source3/aparser/parser.c +++ b/source3/aparser/parser.c @@ -1,5 +1,4 @@ -#include "includes.h" - +#include "parser.h" /******************************************************************* Attempt, if needed, to grow a data buffer. @@ -33,12 +32,7 @@ BOOL io_grow(io_struct *ps, uint32 extra_space) extra_space -= (ps->buffer_size - ps->data_offset); if(ps->buffer_size == 0) { - /* - * Ensure we have at least a PDU's length, or extra_space, whichever - * is greater. - */ - - new_size = MAX(MAX_PDU_FRAG_LEN,extra_space); + new_size = extra_space; if((new_data = malloc(new_size)) == NULL) { DEBUG(0,("io_grow: Malloc failure for size %u.\n", (unsigned int)new_size)); @@ -169,10 +163,12 @@ BOOL io_align4(io_struct *ps, int offset) BOOL io_align(io_struct *ps, int align) { - uint32 mod = ps->data_offset & (align-1); + uint32 mod; + + if (!ps->autoalign) return True; + + mod = ps->data_offset & (align-1); - return True; /* HACK! */ - if (align != 0 && mod != 0) { uint32 extra_space = (align - mod); if(!io_grow(ps, extra_space)) @@ -430,7 +426,7 @@ BOOL io_wstring(char *name, io_struct *ps, int depth, uint16 *data16s, int len, q = io_mem_get(ps, len * sizeof(uint16)); if (q == NULL) return False; - DBG_RW_PSVAL(False, name, depth, ps->data_offset, ps->io, ps->bigendian_data, q, data16s, len) + DBG_RW_PSVAL(True, name, depth, ps->data_offset, ps->io, ps->bigendian_data, q, data16s, len) ps->data_offset += (len * sizeof(uint16)); return True; |