The branch, master has been updated
       via  6156a4b... s4-smbtorture: test all levels in test_netprintqgetinfo 
and test_netprintqenum.
       via  e8aaf40... s4-smbtorture: add rap_pull_rap_PrintQueue4.
       via  e85824d... s4-smbtorture: add rap_pull_rap_PrintQueue2.
       via  e13f2ed... s3: re-run make samba3-idl.
       via  7dd67f6... rap: fill in rap_PrintQueue4 IDL.
       via  131c51d... s3: re-run make samba3-idl.
       via  696e554... rap: fix jobinfo IDL.
       via  9d9fc4c... s4-smbtorture: fix parsing of rap_pull_rap_PrintQueue1 
and rap_pull_rap_PrintQueue2.
       via  1cb7b8d... s3: re-run make samba3-idl.
       via  4fc3aef... rap: fix some rap_PrintQueue IDL structures.
       via  37901bb... s4-smbtorture: add test_netprintjob() to RAP-PRINTING.
      from  1f69a7a... Attempt to fix bug #7399 - SMB2: QUERY_DIRECTORY is 
returning invalid values.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 6156a4b73b6cb90bb31d927f0c07e6d53442481b
Author: Günther Deschner <[email protected]>
Date:   Thu Apr 29 19:26:12 2010 +0200

    s4-smbtorture: test all levels in test_netprintqgetinfo and 
test_netprintqenum.
    
    Guenther

commit e8aaf4087b10a5aa88f3a3d2810a6a332fa2697e
Author: Günther Deschner <[email protected]>
Date:   Thu Apr 29 19:24:20 2010 +0200

    s4-smbtorture: add rap_pull_rap_PrintQueue4.
    
    Guenther

commit e85824d9170644493e839c1ac2a82f7bd8345994
Author: Günther Deschner <[email protected]>
Date:   Thu Apr 29 19:23:53 2010 +0200

    s4-smbtorture: add rap_pull_rap_PrintQueue2.
    
    Guenther

commit e13f2ed296f8f0432fb2f5035f724c4ad917f42c
Author: Günther Deschner <[email protected]>
Date:   Fri Apr 30 01:20:34 2010 +0200

    s3: re-run make samba3-idl.
    
    Guenther

commit 7dd67f6d035c827f3917f3ddcb056ec43fe37cb1
Author: Günther Deschner <[email protected]>
Date:   Thu Apr 29 19:21:59 2010 +0200

    rap: fill in rap_PrintQueue4 IDL.
    
    Guenther

commit 131c51db382ddbeff61492f9b82b4bc283a9b0b3
Author: Günther Deschner <[email protected]>
Date:   Fri Apr 30 01:19:53 2010 +0200

    s3: re-run make samba3-idl.
    
    Guenther

commit 696e554e80a8ac9b3caea6c1afead14d1555ee95
Author: Günther Deschner <[email protected]>
Date:   Thu Apr 29 19:20:07 2010 +0200

    rap: fix jobinfo IDL.
    
    Guenther

commit 9d9fc4cfe7f058baaf7d251a4d468d72e681e62c
Author: Günther Deschner <[email protected]>
Date:   Thu Apr 29 19:21:40 2010 +0200

    s4-smbtorture: fix parsing of rap_pull_rap_PrintQueue1 and 
rap_pull_rap_PrintQueue2.
    
    Guenther

commit 1cb7b8ded66e0f9a7204b850ca2132d1392dfc6e
Author: Günther Deschner <[email protected]>
Date:   Fri Apr 30 01:19:20 2010 +0200

    s3: re-run make samba3-idl.
    
    Guenther

commit 4fc3aefc518af94de8c985ad177ff70c5df229ad
Author: Günther Deschner <[email protected]>
Date:   Thu Apr 29 19:20:56 2010 +0200

    rap: fix some rap_PrintQueue IDL structures.
    
    Guenther

commit 37901bb96a7436f9b34e198d7de0b754b09612da
Author: Günther Deschner <[email protected]>
Date:   Thu Apr 29 19:24:50 2010 +0200

    s4-smbtorture: add test_netprintjob() to RAP-PRINTING.
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 librpc/gen_ndr/ndr_rap.c       |  226 ++++++++++++++++++++++++++++++++++++----
 librpc/gen_ndr/ndr_rap.h       |    1 +
 librpc/gen_ndr/rap.h           |   19 ++--
 librpc/idl/rap.idl             |   18 ++--
 source4/torture/rap/printing.c |   74 +++++++++++++-
 source4/torture/rap/rap.c      |   66 +++++++++++-
 6 files changed, 361 insertions(+), 43 deletions(-)


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/ndr_rap.c b/librpc/gen_ndr/ndr_rap.c
index 1488b34..c1a3889 100644
--- a/librpc/gen_ndr/ndr_rap.c
+++ b/librpc/gen_ndr/ndr_rap.c
@@ -562,17 +562,17 @@ static enum ndr_err_code 
ndr_push_rap_PrintJobInfo1(struct ndr_push *ndr, int nd
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 5));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->JobID));
-               NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->UserName, 
21));
+               NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->UserName, 21, 
sizeof(uint8_t), CH_DOS));
                NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->Pad));
-               NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->NotifyName, 
16));
-               NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->DataType, 
10));
+               NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->NotifyName, 16, 
sizeof(uint8_t), CH_DOS));
+               NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->DataType, 10, 
sizeof(uint8_t), CH_DOS));
                NDR_CHECK(ndr_push_short_relative_ptr1(ndr, 
r->PrintParameterString));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 
r->PrintParameterStringHigh));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->JobPosition));
                NDR_CHECK(ndr_push_rap_PrintJStatusCode(ndr, NDR_SCALARS, 
r->JobStatus));
                NDR_CHECK(ndr_push_short_relative_ptr1(ndr, 
r->JobStatusString));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 
r->JobStatusStringHigh));
-               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->TimeSubmitted));
+               NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->TimeSubmitted));
                NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->JobSize));
                NDR_CHECK(ndr_push_short_relative_ptr1(ndr, 
r->JobCommentString));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 
r->JobCommentStringHigh));
@@ -615,10 +615,10 @@ static enum ndr_err_code 
ndr_pull_rap_PrintJobInfo1(struct ndr_pull *ndr, int nd
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 5));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->JobID));
-               NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->UserName, 
21));
+               NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->UserName, 21, 
sizeof(uint8_t), CH_DOS));
                NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->Pad));
-               NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->NotifyName, 
16));
-               NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->DataType, 
10));
+               NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->NotifyName, 
16, sizeof(uint8_t), CH_DOS));
+               NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->DataType, 10, 
sizeof(uint8_t), CH_DOS));
                NDR_CHECK(ndr_pull_relative_ptr_short(ndr, 
&_ptr_PrintParameterString));
                if (_ptr_PrintParameterString) {
                        NDR_PULL_ALLOC(ndr, r->PrintParameterString);
@@ -637,7 +637,7 @@ static enum ndr_err_code ndr_pull_rap_PrintJobInfo1(struct 
ndr_pull *ndr, int nd
                        r->JobStatusString = NULL;
                }
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, 
&r->JobStatusStringHigh));
-               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->TimeSubmitted));
+               NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->TimeSubmitted));
                NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->JobSize));
                NDR_CHECK(ndr_pull_relative_ptr_short(ndr, 
&_ptr_JobCommentString));
                if (_ptr_JobCommentString) {
@@ -704,10 +704,10 @@ _PUBLIC_ void ndr_print_rap_PrintJobInfo1(struct 
ndr_print *ndr, const char *nam
        ndr_print_struct(ndr, name, "rap_PrintJobInfo1");
        ndr->depth++;
        ndr_print_uint16(ndr, "JobID", r->JobID);
-       ndr_print_array_uint8(ndr, "UserName", r->UserName, 21);
+       ndr_print_string(ndr, "UserName", r->UserName);
        ndr_print_uint8(ndr, "Pad", r->Pad);
-       ndr_print_array_uint8(ndr, "NotifyName", r->NotifyName, 16);
-       ndr_print_array_uint8(ndr, "DataType", r->DataType, 10);
+       ndr_print_string(ndr, "NotifyName", r->NotifyName);
+       ndr_print_string(ndr, "DataType", r->DataType);
        ndr_print_ptr(ndr, "PrintParameterString", r->PrintParameterString);
        ndr->depth++;
        if (r->PrintParameterString) {
@@ -724,7 +724,7 @@ _PUBLIC_ void ndr_print_rap_PrintJobInfo1(struct ndr_print 
*ndr, const char *nam
        }
        ndr->depth--;
        ndr_print_uint16(ndr, "JobStatusStringHigh", r->JobStatusStringHigh);
-       ndr_print_uint32(ndr, "TimeSubmitted", r->TimeSubmitted);
+       ndr_print_time_t(ndr, "TimeSubmitted", r->TimeSubmitted);
        ndr_print_uint32(ndr, "JobSize", r->JobSize);
        ndr_print_ptr(ndr, "JobCommentString", r->JobCommentString);
        ndr->depth++;
@@ -736,6 +736,176 @@ _PUBLIC_ void ndr_print_rap_PrintJobInfo1(struct 
ndr_print *ndr, const char *nam
        ndr->depth--;
 }
 
+static enum ndr_err_code ndr_push_rap_PrintJobInfo2(struct ndr_push *ndr, int 
ndr_flags, const struct rap_PrintJobInfo2 *r)
+{
+       if (ndr_flags & NDR_SCALARS) {
+               NDR_CHECK(ndr_push_align(ndr, 5));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->JobID));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->Priority));
+               NDR_CHECK(ndr_push_short_relative_ptr1(ndr, r->UserName));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->UserNameHigh));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->JobPosition));
+               NDR_CHECK(ndr_push_rap_PrintJStatusCode(ndr, NDR_SCALARS, 
r->JobStatus));
+               NDR_CHECK(ndr_push_time_t(ndr, NDR_SCALARS, r->TimeSubmitted));
+               NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->JobSize));
+               NDR_CHECK(ndr_push_short_relative_ptr1(ndr, 
r->JobCommentString));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 
r->JobCommentStringHigh));
+               NDR_CHECK(ndr_push_short_relative_ptr1(ndr, r->DocumentName));
+               NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, 
r->DocumentNameHigh));
+               NDR_CHECK(ndr_push_trailer_align(ndr, 5));
+       }
+       if (ndr_flags & NDR_BUFFERS) {
+               if (r->UserName) {
+                       NDR_CHECK(ndr_push_short_relative_ptr2(ndr, 
r->UserName));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 
ndr_charset_length(r->UserName, CH_DOS)));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 
ndr_charset_length(r->UserName, CH_DOS)));
+                       NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, 
r->UserName, ndr_charset_length(r->UserName, CH_DOS), sizeof(uint8_t), CH_DOS));
+               }
+               if (r->JobCommentString) {
+                       NDR_CHECK(ndr_push_short_relative_ptr2(ndr, 
r->JobCommentString));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 
ndr_charset_length(r->JobCommentString, CH_DOS)));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 
ndr_charset_length(r->JobCommentString, CH_DOS)));
+                       NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, 
r->JobCommentString, ndr_charset_length(r->JobCommentString, CH_DOS), 
sizeof(uint8_t), CH_DOS));
+               }
+               if (r->DocumentName) {
+                       NDR_CHECK(ndr_push_short_relative_ptr2(ndr, 
r->DocumentName));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 
ndr_charset_length(r->DocumentName, CH_DOS)));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
+                       NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 
ndr_charset_length(r->DocumentName, CH_DOS)));
+                       NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, 
r->DocumentName, ndr_charset_length(r->DocumentName, CH_DOS), sizeof(uint8_t), 
CH_DOS));
+               }
+       }
+       return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_rap_PrintJobInfo2(struct ndr_pull *ndr, int 
ndr_flags, struct rap_PrintJobInfo2 *r)
+{
+       uint16_t _ptr_UserName;
+       TALLOC_CTX *_mem_save_UserName_0;
+       uint16_t _ptr_JobCommentString;
+       TALLOC_CTX *_mem_save_JobCommentString_0;
+       uint16_t _ptr_DocumentName;
+       TALLOC_CTX *_mem_save_DocumentName_0;
+       if (ndr_flags & NDR_SCALARS) {
+               NDR_CHECK(ndr_pull_align(ndr, 5));
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->JobID));
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->Priority));
+               NDR_CHECK(ndr_pull_relative_ptr_short(ndr, &_ptr_UserName));
+               if (_ptr_UserName) {
+                       NDR_PULL_ALLOC(ndr, r->UserName);
+                       NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->UserName, 
_ptr_UserName));
+               } else {
+                       r->UserName = NULL;
+               }
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->UserNameHigh));
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->JobPosition));
+               NDR_CHECK(ndr_pull_rap_PrintJStatusCode(ndr, NDR_SCALARS, 
&r->JobStatus));
+               NDR_CHECK(ndr_pull_time_t(ndr, NDR_SCALARS, &r->TimeSubmitted));
+               NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->JobSize));
+               NDR_CHECK(ndr_pull_relative_ptr_short(ndr, 
&_ptr_JobCommentString));
+               if (_ptr_JobCommentString) {
+                       NDR_PULL_ALLOC(ndr, r->JobCommentString);
+                       NDR_CHECK(ndr_pull_relative_ptr1(ndr, 
r->JobCommentString, _ptr_JobCommentString));
+               } else {
+                       r->JobCommentString = NULL;
+               }
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, 
&r->JobCommentStringHigh));
+               NDR_CHECK(ndr_pull_relative_ptr_short(ndr, &_ptr_DocumentName));
+               if (_ptr_DocumentName) {
+                       NDR_PULL_ALLOC(ndr, r->DocumentName);
+                       NDR_CHECK(ndr_pull_relative_ptr1(ndr, r->DocumentName, 
_ptr_DocumentName));
+               } else {
+                       r->DocumentName = NULL;
+               }
+               NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, 
&r->DocumentNameHigh));
+               NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
+       }
+       if (ndr_flags & NDR_BUFFERS) {
+               if (r->UserName) {
+                       uint32_t _relative_save_offset;
+                       _relative_save_offset = ndr->offset;
+                       NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->UserName));
+                       _mem_save_UserName_0 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->UserName, 0);
+                       NDR_CHECK(ndr_pull_array_size(ndr, &r->UserName));
+                       NDR_CHECK(ndr_pull_array_length(ndr, &r->UserName));
+                       if (ndr_get_array_length(ndr, &r->UserName) > 
ndr_get_array_size(ndr, &r->UserName)) {
+                               return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, 
"Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, 
&r->UserName), ndr_get_array_length(ndr, &r->UserName));
+                       }
+                       NDR_CHECK(ndr_check_string_terminator(ndr, 
ndr_get_array_length(ndr, &r->UserName), sizeof(uint8_t)));
+                       NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, 
&r->UserName, ndr_get_array_length(ndr, &r->UserName), sizeof(uint8_t), 
CH_DOS));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_UserName_0, 0);
+               }
+               if (r->JobCommentString) {
+                       uint32_t _relative_save_offset;
+                       _relative_save_offset = ndr->offset;
+                       NDR_CHECK(ndr_pull_relative_ptr2(ndr, 
r->JobCommentString));
+                       _mem_save_JobCommentString_0 = 
NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->JobCommentString, 0);
+                       NDR_CHECK(ndr_pull_array_size(ndr, 
&r->JobCommentString));
+                       NDR_CHECK(ndr_pull_array_length(ndr, 
&r->JobCommentString));
+                       if (ndr_get_array_length(ndr, &r->JobCommentString) > 
ndr_get_array_size(ndr, &r->JobCommentString)) {
+                               return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, 
"Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, 
&r->JobCommentString), ndr_get_array_length(ndr, &r->JobCommentString));
+                       }
+                       NDR_CHECK(ndr_check_string_terminator(ndr, 
ndr_get_array_length(ndr, &r->JobCommentString), sizeof(uint8_t)));
+                       NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, 
&r->JobCommentString, ndr_get_array_length(ndr, &r->JobCommentString), 
sizeof(uint8_t), CH_DOS));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_JobCommentString_0, 
0);
+               }
+               if (r->DocumentName) {
+                       uint32_t _relative_save_offset;
+                       _relative_save_offset = ndr->offset;
+                       NDR_CHECK(ndr_pull_relative_ptr2(ndr, r->DocumentName));
+                       _mem_save_DocumentName_0 = NDR_PULL_GET_MEM_CTX(ndr);
+                       NDR_PULL_SET_MEM_CTX(ndr, r->DocumentName, 0);
+                       NDR_CHECK(ndr_pull_array_size(ndr, &r->DocumentName));
+                       NDR_CHECK(ndr_pull_array_length(ndr, &r->DocumentName));
+                       if (ndr_get_array_length(ndr, &r->DocumentName) > 
ndr_get_array_size(ndr, &r->DocumentName)) {
+                               return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, 
"Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, 
&r->DocumentName), ndr_get_array_length(ndr, &r->DocumentName));
+                       }
+                       NDR_CHECK(ndr_check_string_terminator(ndr, 
ndr_get_array_length(ndr, &r->DocumentName), sizeof(uint8_t)));
+                       NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, 
&r->DocumentName, ndr_get_array_length(ndr, &r->DocumentName), sizeof(uint8_t), 
CH_DOS));
+                       NDR_PULL_SET_MEM_CTX(ndr, _mem_save_DocumentName_0, 0);
+               }
+       }
+       return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_rap_PrintJobInfo2(struct ndr_print *ndr, const char 
*name, const struct rap_PrintJobInfo2 *r)
+{
+       ndr_print_struct(ndr, name, "rap_PrintJobInfo2");
+       ndr->depth++;
+       ndr_print_uint16(ndr, "JobID", r->JobID);
+       ndr_print_uint16(ndr, "Priority", r->Priority);
+       ndr_print_ptr(ndr, "UserName", r->UserName);
+       ndr->depth++;
+       if (r->UserName) {
+               ndr_print_string(ndr, "UserName", r->UserName);
+       }
+       ndr->depth--;
+       ndr_print_uint16(ndr, "UserNameHigh", r->UserNameHigh);
+       ndr_print_uint16(ndr, "JobPosition", r->JobPosition);
+       ndr_print_rap_PrintJStatusCode(ndr, "JobStatus", r->JobStatus);
+       ndr_print_time_t(ndr, "TimeSubmitted", r->TimeSubmitted);
+       ndr_print_uint32(ndr, "JobSize", r->JobSize);
+       ndr_print_ptr(ndr, "JobCommentString", r->JobCommentString);
+       ndr->depth++;
+       if (r->JobCommentString) {
+               ndr_print_string(ndr, "JobCommentString", r->JobCommentString);
+       }
+       ndr->depth--;
+       ndr_print_uint16(ndr, "JobCommentStringHigh", r->JobCommentStringHigh);
+       ndr_print_ptr(ndr, "DocumentName", r->DocumentName);
+       ndr->depth++;
+       if (r->DocumentName) {
+               ndr_print_string(ndr, "DocumentName", r->DocumentName);
+       }
+       ndr->depth--;
+       ndr_print_uint16(ndr, "DocumentNameHigh", r->DocumentNameHigh);
+       ndr->depth--;
+}
+
 _PUBLIC_ enum ndr_err_code ndr_push_rap_PrintQStatusCode(struct ndr_push *ndr, 
int ndr_flags, enum rap_PrintQStatusCode r)
 {
        NDR_CHECK(ndr_push_enum_uint1632(ndr, NDR_SCALARS, r));
@@ -767,7 +937,7 @@ static enum ndr_err_code ndr_push_rap_PrintQueue0(struct 
ndr_push *ndr, int ndr_
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 1));
-               NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->PrintQName, 
13));
+               NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->PrintQName, 13, 
sizeof(uint8_t), CH_DOS));
                NDR_CHECK(ndr_push_trailer_align(ndr, 1));
        }
        if (ndr_flags & NDR_BUFFERS) {
@@ -779,7 +949,7 @@ static enum ndr_err_code ndr_pull_rap_PrintQueue0(struct 
ndr_pull *ndr, int ndr_
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 1));
-               NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->PrintQName, 
13));
+               NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->PrintQName, 
13, sizeof(uint8_t), CH_DOS));
                NDR_CHECK(ndr_pull_trailer_align(ndr, 1));
        }
        if (ndr_flags & NDR_BUFFERS) {
@@ -791,7 +961,7 @@ _PUBLIC_ void ndr_print_rap_PrintQueue0(struct ndr_print 
*ndr, const char *name,
 {
        ndr_print_struct(ndr, name, "rap_PrintQueue0");
        ndr->depth++;
-       ndr_print_array_uint8(ndr, "PrintQName", r->PrintQName, 13);
+       ndr_print_string(ndr, "PrintQName", r->PrintQName);
        ndr->depth--;
 }
 
@@ -799,7 +969,7 @@ static enum ndr_err_code ndr_push_rap_PrintQueue1(struct 
ndr_push *ndr, int ndr_
 {
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_push_align(ndr, 5));
-               NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->PrintQName, 
13));
+               NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->PrintQName, 13, 
sizeof(uint8_t), CH_DOS));
                NDR_CHECK(ndr_push_uint8(ndr, NDR_SCALARS, r->Pad1));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->Priority));
                NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->StartTime));
@@ -872,7 +1042,7 @@ static enum ndr_err_code ndr_pull_rap_PrintQueue1(struct 
ndr_pull *ndr, int ndr_
        TALLOC_CTX *_mem_save_CommentString_0;
        if (ndr_flags & NDR_SCALARS) {
                NDR_CHECK(ndr_pull_align(ndr, 5));
-               NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->PrintQName, 
13));
+               NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->PrintQName, 
13, sizeof(uint8_t), CH_DOS));
                NDR_CHECK(ndr_pull_uint8(ndr, NDR_SCALARS, &r->Pad1));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->Priority));
                NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->StartTime));
@@ -1005,7 +1175,7 @@ _PUBLIC_ void ndr_print_rap_PrintQueue1(struct ndr_print 
*ndr, const char *name,
 {
        ndr_print_struct(ndr, name, "rap_PrintQueue1");
        ndr->depth++;
-       ndr_print_array_uint8(ndr, "PrintQName", r->PrintQName, 13);
+       ndr_print_string(ndr, "PrintQName", r->PrintQName);
        ndr_print_uint8(ndr, "Pad1", r->Pad1);
        ndr_print_uint16(ndr, "Priority", r->Priority);
        ndr_print_uint16(ndr, "StartTime", r->StartTime);
@@ -1467,10 +1637,14 @@ _PUBLIC_ void ndr_print_rap_PrintQueue3(struct 
ndr_print *ndr, const char *name,
 static enum ndr_err_code ndr_push_rap_PrintQueue4(struct ndr_push *ndr, int 
ndr_flags, const struct rap_PrintQueue4 *r)
 {
        if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_push_align(ndr, 1));
-               NDR_CHECK(ndr_push_trailer_align(ndr, 1));
+               NDR_CHECK(ndr_push_align(ndr, 5));
+               NDR_CHECK(ndr_push_rap_PrintQueue3(ndr, NDR_SCALARS, 
&r->queue));
+               NDR_CHECK(ndr_push_rap_PrintJobInfo2(ndr, NDR_SCALARS, 
&r->job));
+               NDR_CHECK(ndr_push_trailer_align(ndr, 5));
        }
        if (ndr_flags & NDR_BUFFERS) {
+               NDR_CHECK(ndr_push_rap_PrintQueue3(ndr, NDR_BUFFERS, 
&r->queue));
+               NDR_CHECK(ndr_push_rap_PrintJobInfo2(ndr, NDR_BUFFERS, 
&r->job));
        }
        return NDR_ERR_SUCCESS;
 }
@@ -1478,10 +1652,14 @@ static enum ndr_err_code 
ndr_push_rap_PrintQueue4(struct ndr_push *ndr, int ndr_
 static enum ndr_err_code ndr_pull_rap_PrintQueue4(struct ndr_pull *ndr, int 
ndr_flags, struct rap_PrintQueue4 *r)
 {
        if (ndr_flags & NDR_SCALARS) {
-               NDR_CHECK(ndr_pull_align(ndr, 1));
-               NDR_CHECK(ndr_pull_trailer_align(ndr, 1));
+               NDR_CHECK(ndr_pull_align(ndr, 5));
+               NDR_CHECK(ndr_pull_rap_PrintQueue3(ndr, NDR_SCALARS, 
&r->queue));
+               NDR_CHECK(ndr_pull_rap_PrintJobInfo2(ndr, NDR_SCALARS, 
&r->job));
+               NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
        }
        if (ndr_flags & NDR_BUFFERS) {
+               NDR_CHECK(ndr_pull_rap_PrintQueue3(ndr, NDR_BUFFERS, 
&r->queue));
+               NDR_CHECK(ndr_pull_rap_PrintJobInfo2(ndr, NDR_BUFFERS, 
&r->job));
        }
        return NDR_ERR_SUCCESS;
 }
@@ -1490,6 +1668,8 @@ _PUBLIC_ void ndr_print_rap_PrintQueue4(struct ndr_print 
*ndr, const char *name,
 {
        ndr_print_struct(ndr, name, "rap_PrintQueue4");
        ndr->depth++;
+       ndr_print_rap_PrintQueue3(ndr, "queue", &r->queue);
+       ndr_print_rap_PrintJobInfo2(ndr, "job", &r->job);
        ndr->depth--;
 }
 
@@ -1616,6 +1796,7 @@ static enum ndr_err_code ndr_push_rap_printq_info(struct 
ndr_push *ndr, int ndr_
                        break;
 
                        case 4:
+                               NDR_CHECK(ndr_push_rap_PrintQueue4(ndr, 
NDR_BUFFERS, &r->info4));
                        break;
 
                        case 5:
@@ -1682,6 +1863,7 @@ static enum ndr_err_code ndr_pull_rap_printq_info(struct 
ndr_pull *ndr, int ndr_
                        break;
 
                        case 4:
+                               NDR_CHECK(ndr_pull_rap_PrintQueue4(ndr, 
NDR_BUFFERS, &r->info4));
                        break;
 
                        case 5:
diff --git a/librpc/gen_ndr/ndr_rap.h b/librpc/gen_ndr/ndr_rap.h
index cb46248..0bd455c 100644
--- a/librpc/gen_ndr/ndr_rap.h
+++ b/librpc/gen_ndr/ndr_rap.h
@@ -35,6 +35,7 @@ enum ndr_err_code ndr_push_rap_PrintJStatusCode(struct 
ndr_push *ndr, int ndr_fl
 enum ndr_err_code ndr_pull_rap_PrintJStatusCode(struct ndr_pull *ndr, int 
ndr_flags, enum rap_PrintJStatusCode *r);
 void ndr_print_rap_PrintJStatusCode(struct ndr_print *ndr, const char *name, 
enum rap_PrintJStatusCode r);
 void ndr_print_rap_PrintJobInfo1(struct ndr_print *ndr, const char *name, 
const struct rap_PrintJobInfo1 *r);
+void ndr_print_rap_PrintJobInfo2(struct ndr_print *ndr, const char *name, 
const struct rap_PrintJobInfo2 *r);
 enum ndr_err_code ndr_push_rap_PrintQStatusCode(struct ndr_push *ndr, int 
ndr_flags, enum rap_PrintQStatusCode r);
 enum ndr_err_code ndr_pull_rap_PrintQStatusCode(struct ndr_pull *ndr, int 
ndr_flags, enum rap_PrintQStatusCode *r);
 void ndr_print_rap_PrintQStatusCode(struct ndr_print *ndr, const char *name, 
enum rap_PrintQStatusCode r);
diff --git a/librpc/gen_ndr/rap.h b/librpc/gen_ndr/rap.h
index b209fd4..97ece53 100644
--- a/librpc/gen_ndr/rap.h
+++ b/librpc/gen_ndr/rap.h
@@ -436,17 +436,17 @@ struct rap_PrintJobInfo0 {
 
 struct rap_PrintJobInfo1 {
        uint16_t JobID;
-       uint8_t UserName[21];
+       const char *UserName;/* [charset(DOS)] */
        uint8_t Pad;
-       uint8_t NotifyName[16];
-       uint8_t DataType[10];
+       const char *NotifyName;/* [charset(DOS)] */
+       const char *DataType;/* [charset(DOS)] */
        const char *PrintParameterString;/* [charset(DOS),relative_short] */
        uint16_t PrintParameterStringHigh;
        uint16_t JobPosition;
        enum rap_PrintJStatusCode JobStatus;
        const char *JobStatusString;/* [charset(DOS),relative_short] */
        uint16_t JobStatusStringHigh;
-       uint32_t TimeSubmitted;
+       time_t TimeSubmitted;
        uint32_t JobSize;
        const char *JobCommentString;/* [charset(DOS),relative_short] */
        uint16_t JobCommentStringHigh;
@@ -459,7 +459,7 @@ struct rap_PrintJobInfo2 {
        uint16_t UserNameHigh;
        uint16_t JobPosition;
        enum rap_PrintJStatusCode JobStatus;
-       uint32_t TimeSubmitted;
+       time_t TimeSubmitted;
        uint32_t JobSize;
        const char *JobCommentString;/* [charset(DOS),relative_short] */
        uint16_t JobCommentStringHigh;
@@ -474,7 +474,7 @@ struct rap_PrintJobInfo3 {
        uint16_t UserNameHigh;
        uint16_t JobPosition;
        enum rap_PrintJStatusCode JobStatus;
-       uint32_t TimeSubmitted;
+       time_t TimeSubmitted;
        uint32_t JobSize;
        const char *JobCommentString;/* [charset(DOS),relative_short] */
        uint16_t JobCommentStringHigh;
@@ -520,11 +520,11 @@ enum rap_PrintQStatusCode
 ;
 
 struct rap_PrintQueue0 {
-       uint8_t PrintQName[13];
+       const char *PrintQName;/* [charset(DOS)] */
 };
 
 struct rap_PrintQueue1 {
-       uint8_t PrintQName[13];
+       const char *PrintQName;/* [charset(DOS)] */
        uint8_t Pad1;
        uint16_t Priority;
        uint16_t StartTime;
@@ -574,7 +574,8 @@ struct rap_PrintQueue3 {
 };
 
 struct rap_PrintQueue4 {
-       char _empty_;
+       struct rap_PrintQueue3 queue;
+       struct rap_PrintJobInfo2 job;
 };
 
 struct rap_PrintQueue5 {
diff --git a/librpc/idl/rap.idl b/librpc/idl/rap.idl
index 52a9c60..ebdf5fe 100644
--- a/librpc/idl/rap.idl
+++ b/librpc/idl/rap.idl
@@ -400,17 +400,17 @@ interface rap
 
        typedef struct {
                uint16 JobID;
-               uint8 UserName[21];
+               [charset(DOS)] uint8 UserName[21];
                uint8 Pad;
-               uint8 NotifyName[16];
-               uint8 DataType[10];
+               [charset(DOS)] uint8 NotifyName[16];
+               [charset(DOS)] uint8 DataType[10];
                [relative_short] [string,charset(DOS)] uint8 
*PrintParameterString;
                uint16 PrintParameterStringHigh;
                uint16 JobPosition;
                rap_PrintJStatusCode JobStatus;
                [relative_short] [string,charset(DOS)] uint8 *JobStatusString;
                uint16 JobStatusStringHigh;
-               uint32 TimeSubmitted;
+               time_t TimeSubmitted;
                uint32 JobSize;
                [relative_short] [string,charset(DOS)] uint8 *JobCommentString;
                uint16 JobCommentStringHigh;
@@ -423,7 +423,7 @@ interface rap
                uint16 UserNameHigh;
                uint16 JobPosition;
                rap_PrintJStatusCode JobStatus;
-               uint32 TimeSubmitted;
+               time_t TimeSubmitted;
                uint32 JobSize;
                [relative_short] [string,charset(DOS)] uint8 *JobCommentString;
                uint16 JobCommentStringHigh;
@@ -438,7 +438,7 @@ interface rap
                uint16 UserNameHigh;
                uint16 JobPosition;
                rap_PrintJStatusCode JobStatus;
-               uint32 TimeSubmitted;
+               time_t TimeSubmitted;
                uint32 JobSize;
                [relative_short] [string,charset(DOS)] uint8 *JobCommentString;
                uint16 JobCommentStringHigh;
@@ -474,11 +474,11 @@ interface rap
        } rap_PrintQStatusCode;
 
        typedef struct {
-               uint8 PrintQName[13];
+               [charset(DOS)] uint8 PrintQName[13];
        } rap_PrintQueue0;
 
        typedef struct {
-               uint8 PrintQName[13];
+               [charset(DOS)] uint8 PrintQName[13];
                uint8 Pad1;
                uint16 Priority;
                uint16 StartTime;


-- 
Samba Shared Repository

Reply via email to