add uint16 support, start to parse more of spoolss
authorAndrew Tridgell <tridge@samba.org>
Sun, 14 May 2000 14:44:59 +0000 (14:44 +0000)
committerAndrew Tridgell <tridge@samba.org>
Sun, 14 May 2000 14:44:59 +0000 (14:44 +0000)
source/aparser/parser.c
source/aparser/parser.h
source/aparser/spool.struct

index 72042ba9f746c9a6e23985c18815a1be8f3d683c..a324f804f864448cff75fd39dcaa66d1d0b7ece3 100644 (file)
@@ -304,3 +304,19 @@ BOOL prs_uint32s(BOOL charmode, char *name, prs_struct *ps, int depth, uint32 *d
 
        return True;
 }
+
+/*******************************************************************
+ Stream a uint16.
+ ********************************************************************/
+
+BOOL prs_uint16(char *name, prs_struct *ps, int depth, uint16 *data16)
+{
+       char *q = prs_mem_get(ps, sizeof(uint16));
+       if (q == NULL)
+               return False;
+
+       DBG_RW_SVAL(name, depth, ps->data_offset, ps->io, ps->bigendian_data, q, *data16)
+       ps->data_offset += sizeof(uint16);
+
+       return True;
+}
index ec3fc7edc2743abb29c5d63eb980c63bfa1b9a65..843d0c7a11834a4849f5fe63a21b7d122c15d794 100644 (file)
@@ -63,4 +63,5 @@ void dump_data(int level,char *buf1,int len);
 BOOL prs_uint16s(BOOL charmode, char *name, prs_struct *ps, int depth, uint16 *data16s, int len);
 BOOL prs_uint32s(BOOL charmode, char *name, prs_struct *ps, int depth, uint32 *data32s, int len);
 BOOL prs_pointer(char *desc, prs_struct *ps, int depth, void **p);
+BOOL prs_uint16(char *name, prs_struct *ps, int depth, uint16 *data16);
 
index 319a09941dc6f8439fbfb5ab4201e3d1103d6087..3e959e8f44b2b0980097ff11a8468ad702d0d275 100644 (file)
@@ -1,5 +1,5 @@
 module spool
-test PRINTER_DRIVER_INFO_LEVEL_3
+test SPOOL_NOTIFY_INFO
 
 struct BUFFER5 {
        .align 4;
@@ -74,3 +74,34 @@ struct PRINTER_DRIVER_INFO {
              case 6 PRINTER_DRIVER_INFO_LEVEL_6 info_6;
        }
 };
+
+
+struct NOTIFY_DATA_VALUE {
+       uint32 value0;
+       uint32 value1;
+};
+
+struct NOTIFY_DATA_STRING {
+       uint32 length;
+       {length} uint16 string;
+};
+
+struct SPOOL_NOTIFY_INFO_DATA {
+       uint16 type;
+       uint16 field;
+       uint32 reserved;
+       uint32 id;
+       union enc_type *notify_data {
+               case 1 NOTIFY_DATA_VALUE value;
+               case 0 NOTIFY_DATA_STRING string;
+       }
+       uint32 size;
+       uint32 enc_type;
+};
+
+struct SPOOL_NOTIFY_INFO {
+       uint32 version;
+       uint32 flags;
+       uint32 count;
+       SPOOL_NOTIFY_INFO_DATA *data;
+};