[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Fri May 14 06:13:29 MDT 2010


The branch, master has been updated
       via  566418f... ntprinting: add ntprinting.idl.
      from  3408c94... wafsamba: use -D_XOPEN_SOURCE=700 for the build

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


- Log -----------------------------------------------------------------
commit 566418f1a1c6514333965069cda435598fb0a2d4
Author: Günther Deschner <gd at samba.org>
Date:   Wed May 12 00:26:24 2010 +0200

    ntprinting: add ntprinting.idl.
    
    This generates convenient unmarshalling routines for pulling out spoolss related
    information out of ntprinters.tdb, ntforms.tdb and ntdrivers.tdb.
    
    Guenther

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

Summary of changes:
 librpc/idl/ntprinting.idl   |  152 +++++++++++++++++++++++++++++++++++++++++++
 librpc/ndr/ndr_ntprinting.c |   69 +++++++++++++++++++
 librpc/ndr/ndr_ntprinting.h |   25 +++++++
 3 files changed, 246 insertions(+), 0 deletions(-)
 create mode 100644 librpc/idl/ntprinting.idl
 create mode 100644 librpc/ndr/ndr_ntprinting.c
 create mode 100644 librpc/ndr/ndr_ntprinting.h


Changeset truncated at 500 lines:

diff --git a/librpc/idl/ntprinting.idl b/librpc/idl/ntprinting.idl
new file mode 100644
index 0000000..9098291
--- /dev/null
+++ b/librpc/idl/ntprinting.idl
@@ -0,0 +1,152 @@
+#include "idl_types.h"
+
+/*
+  old s3 spoolss tdb on-disc interface definitions
+*/
+
+[
+	pointer_default(unique),
+	helpstring("s3 printing tdb formats"),
+	uuid("a025d3cb-c605-40d6-86e1-4cff18e7dd94"),
+	helper("../librpc/ndr/ndr_ntprinting.h")
+]
+interface ntprinting
+{
+	/* Samba 3 tdb storage format: forms
+	 * "dddddddd" */
+
+	typedef [flag(NDR_NOALIGN),public] struct {
+		uint32 position;
+		uint32 flag;
+		uint32 width;
+		uint32 length;
+		uint32 left;
+		uint32 top;
+		uint32 right;
+		uint32 bottom;
+	} ntprinting_form;
+
+	void decode_ntprinting_form(
+		[in] ntprinting_form form
+		);
+
+	/* Samba 3 tdb storage format: drivers
+	 * "dffffffff" followed by a remaining buffer of "f" array */
+
+	typedef [flag(NDR_NOALIGN),public] struct {
+		uint32 version;
+		utf8string name;
+		utf8string environment;
+		utf8string driverpath;
+		utf8string datafile;
+		utf8string configfile;
+		utf8string helpfile;
+		utf8string monitorname;
+		utf8string defaultdatatype;
+		[flag(STR_UTF8|STR_NOTERM|NDR_REMAINING)] string_array dependent_files;
+	} ntprinting_driver;
+
+	void decode_ntprinting_driver(
+		[in] ntprinting_driver driver
+		);
+
+	/* Samba 3 tdb storage format: devicemode
+	 * "p" ptr to devicemode
+	 * "ffwwwwwwwwwwwwwwwwwwdddddddddddddd"
+	 * "p" ptr to devicemode private data
+	 * "B" private data blob */
+
+	typedef [flag(NDR_NOALIGN),public] struct {
+		/* uint32 devicemode_ptr; */
+		utf8string devicename;
+		utf8string formname;
+		uint16 specversion;
+		uint16 driverversion;
+		uint16 size;
+		uint16 driverextra;
+		uint16 orientation;
+		uint16 papersize;
+		uint16 paperlength;
+		uint16 paperwidth;
+		uint16 scale;
+		uint16 copies;
+		uint16 defaultsource;
+		uint16 printquality;
+		uint16 color;
+		uint16 duplex;
+		uint16 yresolution;
+		uint16 ttoption;
+		uint16 collate;
+		uint16 logpixels;
+		uint32 fields;
+		uint32 bitsperpel;
+		uint32 pelswidth;
+		uint32 pelsheight;
+		uint32 displayflags;
+		uint32 displayfrequency;
+		uint32 icmmethod;
+		uint32 icmintent;
+		uint32 mediatype;
+		uint32 dithertype;
+		uint32 reserved1;
+		uint32 reserved2;
+		uint32 panningwidth;
+		uint32 panningheight;
+		DATA_BLOB *nt_dev_private;
+	} ntprinting_devicemode;
+
+	/* Samba 3 tdb storage format: printer_data
+	 * "p" ptr to printer_data
+	 * "fdB" */
+
+	typedef [flag(NDR_NOALIGN),public] struct {
+		uint32 ptr;
+		utf8string name;
+		uint32 type;
+		DATA_BLOB data;
+	} ntprinting_printer_data;
+
+	/* Samba 3 tdb storage format: printer_info
+	 * "dddddddddddfffffPfffff" */
+
+	typedef [flag(NDR_NOALIGN),public] struct {
+		uint32 attributes;
+		uint32 priority;
+		uint32 default_priority;
+		uint32 starttime;
+		uint32 untiltime;
+		uint32 status;
+		uint32 cjobs;
+		uint32 averageppm;
+		uint32 changeid;
+		uint32 c_setprinter;
+		uint32 setuptime;
+		utf8string servername;
+		utf8string printername;
+		utf8string sharename;
+		utf8string portname;
+		utf8string drivername;
+		utf8string comment;
+		utf8string location;
+		utf8string sepfile;
+		utf8string printprocessor;
+		utf8string datatype;
+		utf8string parameters;
+	} ntprinting_printer_info;
+
+	/* Abstract Samba 3 printer
+	 * printer_info
+	 * followed by ntprinting_devicemode
+	 * followed by remaining buffer of ntprinting_printer_data array */
+
+	typedef [flag(NDR_NOALIGN),public,nopull] struct {
+		ntprinting_printer_info info;
+		ntprinting_devicemode *devmode;
+		uint32 count;
+		ntprinting_printer_data printer_data[count];
+	} ntprinting_printer;
+
+	void decode_ntprinting_printer(
+		[in] ntprinting_printer printer
+		);
+}
diff --git a/librpc/ndr/ndr_ntprinting.c b/librpc/ndr/ndr_ntprinting.c
new file mode 100644
index 0000000..87b743d
--- /dev/null
+++ b/librpc/ndr/ndr_ntprinting.c
@@ -0,0 +1,69 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   routines for marshalling/unmarshalling special ntprinting structures
+
+   Copyright (C) Guenther Deschner 2010
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "../librpc/gen_ndr/ndr_ntprinting.h"
+
+_PUBLIC_ enum ndr_err_code ndr_pull_ntprinting_printer(struct ndr_pull *ndr, int ndr_flags, struct ntprinting_printer *r)
+{
+	uint32_t _ptr_devmode;
+	TALLOC_CTX *_mem_save_devmode_0;
+	{
+		uint32_t _flags_save_STRUCT = ndr->flags;
+		ndr_set_flags(&ndr->flags, LIBNDR_FLAG_NOALIGN);
+		if (ndr_flags & NDR_SCALARS) {
+			NDR_CHECK(ndr_pull_align(ndr, 5));
+			NDR_CHECK(ndr_pull_ntprinting_printer_info(ndr, NDR_SCALARS, &r->info));
+			NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_devmode));
+			if (_ptr_devmode) {
+				NDR_PULL_ALLOC(ndr, r->devmode);
+			} else {
+				r->devmode = NULL;
+			}
+		}
+		if (ndr_flags & NDR_BUFFERS) {
+			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_ntprinting_devicemode(ndr, NDR_SCALARS|NDR_BUFFERS, r->devmode));
+				NDR_PULL_SET_MEM_CTX(ndr, _mem_save_devmode_0, 0);
+			}
+		}
+		if (ndr_flags & NDR_SCALARS) {
+			r->count = 0;
+			NDR_PULL_ALLOC_N(ndr, r->printer_data, r->count);
+			while (ndr->offset + 4 <= ndr->data_size) {
+				uint32_t ptr = 0;
+				ptr = IVAL(ndr->data, ndr->offset);
+				if (ptr == 0) {
+					break;
+				}
+				r->printer_data = talloc_realloc(ndr, r->printer_data, struct ntprinting_printer_data, r->count + 1);
+				NDR_ERR_HAVE_NO_MEMORY(r->printer_data);
+				NDR_CHECK(ndr_pull_ntprinting_printer_data(ndr, NDR_SCALARS, &r->printer_data[r->count]));
+				r->count++;
+			}
+			NDR_CHECK(ndr_pull_trailer_align(ndr, 5));
+		}
+		ndr->flags = _flags_save_STRUCT;
+	}
+	return NDR_ERR_SUCCESS;
+}
diff --git a/librpc/ndr/ndr_ntprinting.h b/librpc/ndr/ndr_ntprinting.h
new file mode 100644
index 0000000..8bda430
--- /dev/null
+++ b/librpc/ndr/ndr_ntprinting.h
@@ -0,0 +1,25 @@
+/*
+   Unix SMB/CIFS implementation.
+
+   routines for marshalling/unmarshalling special ntprinting structures
+
+   Copyright (C) Guenther Deschner 2010
+
+   This program is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3 of the License, or
+   (at your option) any later version.
+
+   This program is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+   GNU General Public License for more details.
+
+   You should have received a copy of the GNU General Public License
+   along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "includes.h"
+#include "../librpc/gen_ndr/ndr_ntprinting.h"
+
+_PUBLIC_ enum ndr_err_code ndr_pull_ntprinting_printer(struct ndr_pull *ndr, int ndr_flags, struct ntprinting_printer *r);


-- 
Samba Shared Repository


More information about the samba-cvs mailing list