The branch, master has been updated via c201a341caee2bd88c9b37add75d004e1c8d4202 (commit) via 75c6bbea3b77dd283e0c9458dc85f0caca33399d (commit) via 80b3e5b36efb5f7c48b43e8f5d67a102ae71ebf5 (commit) via 8fa71b1a0858b5098b99478a869b3ffc9c41eccf (commit) via 135135e3a0a84d19d1bc6df1cc3c5813d1a244ec (commit) via aa9eac08cd2614eefca6c6bc673e07619a55f842 (commit) via aa60ffc6f8926a5d108ff8fbfb05f7612386f1bb (commit) from ae259575c447e61665c8e7070c476914161b953f (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit c201a341caee2bd88c9b37add75d004e1c8d4202 Author: Günther Deschner <g...@samba.org> Date: Thu Feb 12 18:04:06 2009 +0100 re-run make samba3-idl. Guenther commit 75c6bbea3b77dd283e0c9458dc85f0caca33399d Author: Günther Deschner <g...@samba.org> Date: Thu Feb 12 12:10:16 2009 +0100 s3-spoolss: add init_systemtime helper. Guenther commit 80b3e5b36efb5f7c48b43e8f5d67a102ae71ebf5 Author: Günther Deschner <g...@samba.org> Date: Thu Feb 12 17:45:09 2009 +0100 spoolss: always set version 2 in notify info and option structs. Guenther commit 8fa71b1a0858b5098b99478a869b3ffc9c41eccf Author: Günther Deschner <g...@samba.org> Date: Thu Feb 12 17:26:17 2009 +0100 spoolss: add spoolss_NotifyTable enum. Guenther commit 135135e3a0a84d19d1bc6df1cc3c5813d1a244ec Author: Günther Deschner <g...@samba.org> Date: Thu Feb 12 14:00:49 2009 +0100 spoolss: fix some cases in the spoolss_NotifyData union. Guenther commit aa9eac08cd2614eefca6c6bc673e07619a55f842 Author: Günther Deschner <g...@samba.org> Date: Wed Feb 11 21:32:18 2009 +0100 spoolss: add spoolss_DriverInfo8. Guenther commit aa60ffc6f8926a5d108ff8fbfb05f7612386f1bb Author: Günther Deschner <g...@samba.org> Date: Thu Feb 12 00:48:29 2009 +0100 spoolss: fix spoolss_AddPrinterEx IDL. Guenther ----------------------------------------------------------------------- Summary of changes: librpc/gen_ndr/cli_spoolss.c | 2 + librpc/gen_ndr/cli_spoolss.h | 1 + librpc/gen_ndr/ndr_spoolss.c | 343 ++++++++++---------- librpc/gen_ndr/ndr_spoolss.h | 7 +- librpc/gen_ndr/spoolss.h | 82 ++++-- librpc/gen_ndr/srv_spoolss.c | 13 + librpc/idl/spoolss.idl | 76 +++-- source3/Makefile.in | 1 + source3/include/proto.h | 5 + .../eventlog.h => rpc_client/init_spoolss.c} | 39 ++-- 10 files changed, 321 insertions(+), 248 deletions(-) copy source3/{include/eventlog.h => rpc_client/init_spoolss.c} (55%) Changeset truncated at 500 lines: diff --git a/librpc/gen_ndr/cli_spoolss.c b/librpc/gen_ndr/cli_spoolss.c index 2f15cb3..6225d2d 100644 --- a/librpc/gen_ndr/cli_spoolss.c +++ b/librpc/gen_ndr/cli_spoolss.c @@ -3314,6 +3314,7 @@ NTSTATUS rpccli_spoolss_AddPrinterEx(struct rpc_pipe_client *cli, struct security_descriptor *secdesc /* [in] [unique] */, uint32_t ulevel /* [in] */, union spoolss_UserLevel userlevel /* [in] [switch_is(ulevel)] */, + struct policy_handle *handle /* [out] [ref] */, WERROR *werror) { struct spoolss_AddPrinterEx r; @@ -3351,6 +3352,7 @@ NTSTATUS rpccli_spoolss_AddPrinterEx(struct rpc_pipe_client *cli, } /* Return variables */ + *handle = *r.out.handle; /* Return result */ if (werror) { diff --git a/librpc/gen_ndr/cli_spoolss.h b/librpc/gen_ndr/cli_spoolss.h index 6903aa6..34c50a0 100644 --- a/librpc/gen_ndr/cli_spoolss.h +++ b/librpc/gen_ndr/cli_spoolss.h @@ -420,6 +420,7 @@ NTSTATUS rpccli_spoolss_AddPrinterEx(struct rpc_pipe_client *cli, struct security_descriptor *secdesc /* [in] [unique] */, uint32_t ulevel /* [in] */, union spoolss_UserLevel userlevel /* [in] [switch_is(ulevel)] */, + struct policy_handle *handle /* [out] [ref] */, WERROR *werror); NTSTATUS rpccli_spoolss_47(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, diff --git a/librpc/gen_ndr/ndr_spoolss.c b/librpc/gen_ndr/ndr_spoolss.c index 5525ad4..1bb419b 100644 --- a/librpc/gen_ndr/ndr_spoolss.c +++ b/librpc/gen_ndr/ndr_spoolss.c @@ -57,6 +57,65 @@ _PUBLIC_ void ndr_print_spoolss_Time(struct ndr_print *ndr, const char *name, co ndr->depth--; } +static size_t ndr_size_spoolss_Time(const struct spoolss_Time *r, struct smb_iconv_convenience *ic, int flags) +{ + return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_spoolss_Time, ic); +} + +static enum ndr_err_code ndr_push_spoolss_TimeCtr(struct ndr_push *ndr, int ndr_flags, const struct spoolss_TimeCtr *r) +{ + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 4)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_size_spoolss_Time(r->time, ndr->iconv_convenience, ndr->flags))); + NDR_CHECK(ndr_push_unique_ptr(ndr, r->time)); + } + if (ndr_flags & NDR_BUFFERS) { + if (r->time) { + NDR_CHECK(ndr_push_spoolss_Time(ndr, NDR_SCALARS, r->time)); + } + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_spoolss_TimeCtr(struct ndr_pull *ndr, int ndr_flags, struct spoolss_TimeCtr *r) +{ + uint32_t _ptr_time; + TALLOC_CTX *_mem_save_time_0; + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 4)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size)); + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_time)); + if (_ptr_time) { + NDR_PULL_ALLOC(ndr, r->time); + } else { + r->time = NULL; + } + } + if (ndr_flags & NDR_BUFFERS) { + if (r->time) { + _mem_save_time_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->time, 0); + NDR_CHECK(ndr_pull_spoolss_Time(ndr, NDR_SCALARS, r->time)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_time_0, 0); + } + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_spoolss_TimeCtr(struct ndr_print *ndr, const char *name, const struct spoolss_TimeCtr *r) +{ + ndr_print_struct(ndr, name, "spoolss_TimeCtr"); + ndr->depth++; + ndr_print_uint32(ndr, "size", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_spoolss_Time(r->time, ndr->iconv_convenience, ndr->flags):r->size); + ndr_print_ptr(ndr, "time", r->time); + ndr->depth++; + if (r->time) { + ndr_print_spoolss_Time(ndr, "time", r->time); + } + ndr->depth--; + ndr->depth--; +} + static enum ndr_err_code ndr_push_spoolss_PrinterInfo0(struct ndr_push *ndr, int ndr_flags, const struct spoolss_PrinterInfo0 *r) { if (ndr_flags & NDR_SCALARS) { @@ -10023,7 +10082,7 @@ static enum ndr_err_code ndr_push_spoolss_NotifyOptionsContainer(struct ndr_push uint32_t cntr_options_1; if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_push_align(ndr, 4)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->version)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 2)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->flags)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->count)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->options)); @@ -10089,7 +10148,7 @@ _PUBLIC_ void ndr_print_spoolss_NotifyOptionsContainer(struct ndr_print *ndr, co uint32_t cntr_options_1; ndr_print_struct(ndr, name, "spoolss_NotifyOptionsContainer"); ndr->depth++; - ndr_print_uint32(ndr, "version", r->version); + ndr_print_uint32(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?2:r->version); ndr_print_uint32(ndr, "flags", r->flags); ndr_print_uint32(ndr, "count", r->count); ndr_print_ptr(ndr, "options", r->options); @@ -10110,7 +10169,7 @@ _PUBLIC_ void ndr_print_spoolss_NotifyOptionsContainer(struct ndr_print *ndr, co ndr->depth--; } -static enum ndr_err_code ndr_push_spoolss_NotifyUTF16String(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyUTF16String *r) +static enum ndr_err_code ndr_push_spoolss_NotifyString(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyString *r) { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_push_align(ndr, 4)); @@ -10126,7 +10185,7 @@ static enum ndr_err_code ndr_push_spoolss_NotifyUTF16String(struct ndr_push *ndr return NDR_ERR_SUCCESS; } -static enum ndr_err_code ndr_pull_spoolss_NotifyUTF16String(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyUTF16String *r) +static enum ndr_err_code ndr_pull_spoolss_NotifyString(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyString *r) { uint32_t _ptr_string; TALLOC_CTX *_mem_save_string_0; @@ -10155,68 +10214,9 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyUTF16String(struct ndr_pull *ndr return NDR_ERR_SUCCESS; } -_PUBLIC_ void ndr_print_spoolss_NotifyUTF16String(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyUTF16String *r) -{ - ndr_print_struct(ndr, name, "spoolss_NotifyUTF16String"); - ndr->depth++; - ndr_print_uint32(ndr, "size", r->size); - ndr_print_ptr(ndr, "string", r->string); - ndr->depth++; - if (r->string) { - ndr_print_string(ndr, "string", r->string); - } - ndr->depth--; - ndr->depth--; -} - -static enum ndr_err_code ndr_push_spoolss_NotifyDOSString(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyDOSString *r) -{ - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_push_align(ndr, 4)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size)); - NDR_CHECK(ndr_push_unique_ptr(ndr, r->string)); - } - if (ndr_flags & NDR_BUFFERS) { - if (r->string) { - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->size)); - NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->string, r->size, sizeof(uint8_t), CH_DOS)); - } - } - return NDR_ERR_SUCCESS; -} - -static enum ndr_err_code ndr_pull_spoolss_NotifyDOSString(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyDOSString *r) +_PUBLIC_ void ndr_print_spoolss_NotifyString(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyString *r) { - uint32_t _ptr_string; - TALLOC_CTX *_mem_save_string_0; - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_pull_align(ndr, 4)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->size)); - NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_string)); - if (_ptr_string) { - NDR_PULL_ALLOC(ndr, r->string); - } else { - r->string = NULL; - } - } - if (ndr_flags & NDR_BUFFERS) { - if (r->string) { - _mem_save_string_0 = NDR_PULL_GET_MEM_CTX(ndr); - NDR_PULL_SET_MEM_CTX(ndr, r->string, 0); - NDR_CHECK(ndr_pull_array_size(ndr, &r->string)); - NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->string, ndr_get_array_size(ndr, &r->string), sizeof(uint8_t), CH_DOS)); - NDR_PULL_SET_MEM_CTX(ndr, _mem_save_string_0, 0); - } - if (r->string) { - NDR_CHECK(ndr_check_array_size(ndr, (void*)&r->string, r->size)); - } - } - return NDR_ERR_SUCCESS; -} - -_PUBLIC_ void ndr_print_spoolss_NotifyDOSString(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyDOSString *r) -{ - ndr_print_struct(ndr, name, "spoolss_NotifyDOSString"); + ndr_print_struct(ndr, name, "spoolss_NotifyString"); ndr->depth++; ndr_print_uint32(ndr, "size", r->size); ndr_print_ptr(ndr, "string", r->string); @@ -10228,104 +10228,32 @@ _PUBLIC_ void ndr_print_spoolss_NotifyDOSString(struct ndr_print *ndr, const cha ndr->depth--; } -static enum ndr_err_code ndr_push_spoolss_NotifyBlobData(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyBlobData *r) -{ - uint32_t cntr_data_0; - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_push_align(ndr, 2)); - for (cntr_data_0 = 0; cntr_data_0 < 8; cntr_data_0++) { - NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->data[cntr_data_0])); - } - } - if (ndr_flags & NDR_BUFFERS) { - } - return NDR_ERR_SUCCESS; -} - -static enum ndr_err_code ndr_pull_spoolss_NotifyBlobData(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyBlobData *r) +static enum ndr_err_code ndr_push_spoolss_NotifyTable(struct ndr_push *ndr, int ndr_flags, enum spoolss_NotifyTable r) { - uint32_t cntr_data_0; - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_pull_align(ndr, 2)); - for (cntr_data_0 = 0; cntr_data_0 < 8; cntr_data_0++) { - NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->data[cntr_data_0])); - } - } - if (ndr_flags & NDR_BUFFERS) { - } + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r)); return NDR_ERR_SUCCESS; } -_PUBLIC_ void ndr_print_spoolss_NotifyBlobData(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyBlobData *r) +static enum ndr_err_code ndr_pull_spoolss_NotifyTable(struct ndr_pull *ndr, int ndr_flags, enum spoolss_NotifyTable *r) { - uint32_t cntr_data_0; - ndr_print_struct(ndr, name, "spoolss_NotifyBlobData"); - ndr->depth++; - ndr->print(ndr, "%s: ARRAY(%d)", "data", (int)8); - ndr->depth++; - for (cntr_data_0=0;cntr_data_0<8;cntr_data_0++) { - char *idx_0=NULL; - if (asprintf(&idx_0, "[%d]", cntr_data_0) != -1) { - ndr_print_uint16(ndr, "data", r->data[cntr_data_0]); - free(idx_0); - } - } - ndr->depth--; - ndr->depth--; -} - -static enum ndr_err_code ndr_push_spoolss_NotifyBlob(struct ndr_push *ndr, int ndr_flags, const struct spoolss_NotifyBlob *r) -{ - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_push_align(ndr, 4)); - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->len)); - NDR_CHECK(ndr_push_unique_ptr(ndr, r->data)); - } - if (ndr_flags & NDR_BUFFERS) { - if (r->data) { - NDR_CHECK(ndr_push_spoolss_NotifyBlobData(ndr, NDR_SCALARS, r->data)); - } - } + uint32_t v; + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &v)); + *r = v; return NDR_ERR_SUCCESS; } -static enum ndr_err_code ndr_pull_spoolss_NotifyBlob(struct ndr_pull *ndr, int ndr_flags, struct spoolss_NotifyBlob *r) +_PUBLIC_ void ndr_print_spoolss_NotifyTable(struct ndr_print *ndr, const char *name, enum spoolss_NotifyTable r) { - uint32_t _ptr_data; - TALLOC_CTX *_mem_save_data_0; - if (ndr_flags & NDR_SCALARS) { - NDR_CHECK(ndr_pull_align(ndr, 4)); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->len)); - NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_data)); - if (_ptr_data) { - NDR_PULL_ALLOC(ndr, r->data); - } else { - r->data = NULL; - } - } - if (ndr_flags & NDR_BUFFERS) { - if (r->data) { - _mem_save_data_0 = NDR_PULL_GET_MEM_CTX(ndr); - NDR_PULL_SET_MEM_CTX(ndr, r->data, 0); - NDR_CHECK(ndr_pull_spoolss_NotifyBlobData(ndr, NDR_SCALARS, r->data)); - NDR_PULL_SET_MEM_CTX(ndr, _mem_save_data_0, 0); - } - } - return NDR_ERR_SUCCESS; -} + const char *val = NULL; -_PUBLIC_ void ndr_print_spoolss_NotifyBlob(struct ndr_print *ndr, const char *name, const struct spoolss_NotifyBlob *r) -{ - ndr_print_struct(ndr, name, "spoolss_NotifyBlob"); - ndr->depth++; - ndr_print_uint32(ndr, "len", r->len); - ndr_print_ptr(ndr, "data", r->data); - ndr->depth++; - if (r->data) { - ndr_print_spoolss_NotifyBlobData(ndr, "data", r->data); + switch (r) { + case NOTIFY_TABLE_DWORD: val = "NOTIFY_TABLE_DWORD"; break; + case NOTIFY_TABLE_STRING: val = "NOTIFY_TABLE_STRING"; break; + case NOTIFY_TABLE_DEVMODE: val = "NOTIFY_TABLE_DEVMODE"; break; + case NOTIFY_TABLE_TIME: val = "NOTIFY_TABLE_TIME"; break; + case NOTIFY_TABLE_SECURITYDESCRIPTOR: val = "NOTIFY_TABLE_SECURITYDESCRIPTOR"; break; } - ndr->depth--; - ndr->depth--; + ndr_print_enum(ndr, name, "ENUM", val, r); } static enum ndr_err_code ndr_push_spoolss_NotifyData(struct ndr_push *ndr, int ndr_flags, const union spoolss_NotifyData *r) @@ -10335,23 +10263,26 @@ static enum ndr_err_code ndr_push_spoolss_NotifyData(struct ndr_push *ndr, int n NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, level)); switch (level) { case 1: { - NDR_CHECK(ndr_push_dlong(ndr, NDR_SCALARS, r->integer)); + uint32_t cntr_integer_0; + for (cntr_integer_0 = 0; cntr_integer_0 < 2; cntr_integer_0++) { + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->integer[cntr_integer_0])); + } break; } case 2: { - NDR_CHECK(ndr_push_spoolss_NotifyUTF16String(ndr, NDR_SCALARS, &r->utf16_string)); + NDR_CHECK(ndr_push_spoolss_NotifyString(ndr, NDR_SCALARS, &r->string)); break; } case 3: { - NDR_CHECK(ndr_push_spoolss_NotifyDOSString(ndr, NDR_SCALARS, &r->ascii_string)); + NDR_CHECK(ndr_push_unique_ptr(ndr, r->devmode)); break; } case 4: { - NDR_CHECK(ndr_push_spoolss_NotifyBlob(ndr, NDR_SCALARS, &r->blob)); + NDR_CHECK(ndr_push_spoolss_TimeCtr(ndr, NDR_SCALARS, &r->time)); break; } case 5: { - NDR_CHECK(ndr_push_spoolss_NotifyDOSString(ndr, NDR_SCALARS, &r->ascii_string)); + NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_SCALARS, &r->sd)); break; } default: @@ -10365,19 +10296,21 @@ static enum ndr_err_code ndr_push_spoolss_NotifyData(struct ndr_push *ndr, int n break; case 2: - NDR_CHECK(ndr_push_spoolss_NotifyUTF16String(ndr, NDR_BUFFERS, &r->utf16_string)); + NDR_CHECK(ndr_push_spoolss_NotifyString(ndr, NDR_BUFFERS, &r->string)); break; case 3: - NDR_CHECK(ndr_push_spoolss_NotifyDOSString(ndr, NDR_BUFFERS, &r->ascii_string)); + if (r->devmode) { + NDR_CHECK(ndr_push_spoolss_DeviceMode(ndr, NDR_SCALARS, r->devmode)); + } break; case 4: - NDR_CHECK(ndr_push_spoolss_NotifyBlob(ndr, NDR_BUFFERS, &r->blob)); + NDR_CHECK(ndr_push_spoolss_TimeCtr(ndr, NDR_BUFFERS, &r->time)); break; case 5: - NDR_CHECK(ndr_push_spoolss_NotifyDOSString(ndr, NDR_BUFFERS, &r->ascii_string)); + NDR_CHECK(ndr_push_sec_desc_buf(ndr, NDR_BUFFERS, &r->sd)); break; default: @@ -10391,6 +10324,7 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyData(struct ndr_pull *ndr, int n { int level; uint32_t _level; + TALLOC_CTX *_mem_save_devmode_0; level = ndr_pull_get_switch_value(ndr, r); if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &_level)); @@ -10399,23 +10333,32 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyData(struct ndr_pull *ndr, int n } switch (level) { case 1: { - NDR_CHECK(ndr_pull_dlong(ndr, NDR_SCALARS, &r->integer)); + uint32_t cntr_integer_0; + for (cntr_integer_0 = 0; cntr_integer_0 < 2; cntr_integer_0++) { + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->integer[cntr_integer_0])); + } break; } case 2: { - NDR_CHECK(ndr_pull_spoolss_NotifyUTF16String(ndr, NDR_SCALARS, &r->utf16_string)); + NDR_CHECK(ndr_pull_spoolss_NotifyString(ndr, NDR_SCALARS, &r->string)); break; } case 3: { - NDR_CHECK(ndr_pull_spoolss_NotifyDOSString(ndr, NDR_SCALARS, &r->ascii_string)); + uint32_t _ptr_devmode; + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode)); + if (_ptr_devmode) { + NDR_PULL_ALLOC(ndr, r->devmode); + } else { + r->devmode = NULL; + } break; } case 4: { - NDR_CHECK(ndr_pull_spoolss_NotifyBlob(ndr, NDR_SCALARS, &r->blob)); + NDR_CHECK(ndr_pull_spoolss_TimeCtr(ndr, NDR_SCALARS, &r->time)); break; } case 5: { - NDR_CHECK(ndr_pull_spoolss_NotifyDOSString(ndr, NDR_SCALARS, &r->ascii_string)); + NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_SCALARS, &r->sd)); break; } default: @@ -10428,19 +10371,24 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyData(struct ndr_pull *ndr, int n break; case 2: - NDR_CHECK(ndr_pull_spoolss_NotifyUTF16String(ndr, NDR_BUFFERS, &r->utf16_string)); + NDR_CHECK(ndr_pull_spoolss_NotifyString(ndr, NDR_BUFFERS, &r->string)); break; case 3: - NDR_CHECK(ndr_pull_spoolss_NotifyDOSString(ndr, NDR_BUFFERS, &r->ascii_string)); + if (r->devmode) { + _mem_save_devmode_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->devmode, 0); + NDR_CHECK(ndr_pull_spoolss_DeviceMode(ndr, NDR_SCALARS, r->devmode)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0); + } break; case 4: - NDR_CHECK(ndr_pull_spoolss_NotifyBlob(ndr, NDR_BUFFERS, &r->blob)); + NDR_CHECK(ndr_pull_spoolss_TimeCtr(ndr, NDR_BUFFERS, &r->time)); break; case 5: - NDR_CHECK(ndr_pull_spoolss_NotifyDOSString(ndr, NDR_BUFFERS, &r->ascii_string)); + NDR_CHECK(ndr_pull_sec_desc_buf(ndr, NDR_BUFFERS, &r->sd)); break; default: @@ -10453,27 +10401,42 @@ static enum ndr_err_code ndr_pull_spoolss_NotifyData(struct ndr_pull *ndr, int n _PUBLIC_ void ndr_print_spoolss_NotifyData(struct ndr_print *ndr, const char *name, const union spoolss_NotifyData *r) { int level; + uint32_t cntr_integer_0; level = ndr_print_get_switch_value(ndr, r); ndr_print_union(ndr, name, level, "spoolss_NotifyData"); switch (level) { case 1: - ndr_print_dlong(ndr, "integer", r->integer); + ndr->print(ndr, "%s: ARRAY(%d)", "integer", (int)2); + ndr->depth++; + for (cntr_integer_0=0;cntr_integer_0<2;cntr_integer_0++) { + char *idx_0=NULL; + if (asprintf(&idx_0, "[%d]", cntr_integer_0) != -1) { + ndr_print_uint32(ndr, "integer", r->integer[cntr_integer_0]); + free(idx_0); + } + } + ndr->depth--; break; case 2: - ndr_print_spoolss_NotifyUTF16String(ndr, "utf16_string", &r->utf16_string); + ndr_print_spoolss_NotifyString(ndr, "string", &r->string); break; case 3: - ndr_print_spoolss_NotifyDOSString(ndr, "ascii_string", &r->ascii_string); + ndr_print_ptr(ndr, "devmode", r->devmode); + ndr->depth++; + if (r->devmode) { + ndr_print_spoolss_DeviceMode(ndr, "devmode", r->devmode); + } + ndr->depth--; break; case 4: -- Samba Shared Repository