[SCM] Samba Shared Repository - branch master updated

Günther Deschner gd at samba.org
Wed Apr 28 15:24:17 MDT 2010


The branch, master has been updated
       via  db3a1b9... s4-selftest: skip RAP-PRINTING tests.
       via  8878be3... s3-selftest: enable RAP-PRINTING against s3.
       via  d535448... s3-lanman: support level 0 NetPrintQEnum RAP query.
       via  2c5b3fc... s4-smbtorture: link in ../../librpc/gen_ndr/ndr_rap.o.
       via  bdfb9a4... s4-smbtorture: add test for rap_NetPrintQEnum.
       via  03d8312... s4-smbtorture: add RAP-PRINTING suite.
       via  1764bce... s4-smbtorture: add smbcli_rap_netprintqenum.
       via  42003e5... s3: re-run make samba3-idl
       via  b666028... rap: add rap_NetPrintQEnum to IDL.
      from  ac09506... Connect set security descriptor into SMB2 code.

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


- Log -----------------------------------------------------------------
commit db3a1b9d515dadc43bca5b2fc3217ca2ef2f00a6
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 28 23:20:46 2010 +0200

    s4-selftest: skip RAP-PRINTING tests.
    
    Guenther

commit 8878be3c456c8562558024c1fef3a73e9eb71d82
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 28 23:19:33 2010 +0200

    s3-selftest: enable RAP-PRINTING against s3.
    
    Guenther

commit d53544800fffd07b01ae77dac0d391c8e0c3dd79
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 28 23:11:37 2010 +0200

    s3-lanman: support level 0 NetPrintQEnum RAP query.
    
    Guenther

commit 2c5b3fc40b4b8e288463a98c9edbcf07f2cfbd73
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 28 23:08:14 2010 +0200

    s4-smbtorture: link in ../../librpc/gen_ndr/ndr_rap.o.
    
    Guenther

commit bdfb9a43d33ab0bff84591914566a8dff3f4cb46
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 28 18:29:18 2010 +0200

    s4-smbtorture: add test for rap_NetPrintQEnum.
    
    Guenther

commit 03d83128dd9d24d9aabeef51895f8995ae5a3b81
Author: Günther Deschner <gd at samba.org>
Date:   Sat Apr 24 00:45:40 2010 +0200

    s4-smbtorture: add RAP-PRINTING suite.
    
    Guenther

commit 1764bcecf2f0fd388a888835019a8e064e6c30fa
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 28 12:50:58 2010 +0200

    s4-smbtorture: add smbcli_rap_netprintqenum.
    
    Guenther

commit 42003e5661549ed9c4f34174509c0f4977510f30
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 28 17:43:47 2010 +0200

    s3: re-run make samba3-idl
    
    Guenther

commit b66602898a2b99bc1628b7a3f7571926959d8e21
Author: Günther Deschner <gd at samba.org>
Date:   Wed Apr 28 12:50:45 2010 +0200

    rap: add rap_NetPrintQEnum to IDL.
    
    Guenther

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

Summary of changes:
 librpc/gen_ndr/rap.h                  |  196 +++++++++++++++++++++++++++++++++
 librpc/idl/rap.idl                    |  166 ++++++++++++++++++++++++++++
 source3/script/tests/test_posix_s3.sh |    2 +-
 source3/smbd/lanman.c                 |    1 +
 source4/librpc/config.mk              |    5 +
 source4/librpc/wscript_build          |    5 +
 source4/selftest/skip                 |    1 +
 source4/torture/config.mk             |    4 +-
 source4/torture/rap/printing.c        |  124 +++++++++++++++++++++
 source4/torture/rap/rap.c             |  111 ++++++++++++++++++-
 source4/torture/wscript_build         |    4 +-
 11 files changed, 613 insertions(+), 6 deletions(-)
 create mode 100644 source4/torture/rap/printing.c


Changeset truncated at 500 lines:

diff --git a/librpc/gen_ndr/rap.h b/librpc/gen_ndr/rap.h
index 6c5f154..e4a02ba 100644
--- a/librpc/gen_ndr/rap.h
+++ b/librpc/gen_ndr/rap.h
@@ -411,6 +411,185 @@ union rap_server_info {
 	struct rap_server_info_1 info1;/* [case] */
 }/* [nodiscriminant] */;
 
+enum rap_PrintQStatusCode
+#ifndef USE_UINT_ENUMS
+ {
+	PRQ_ACTIVE=(int)(0x0000),
+	PRQ_PAUSE=(int)(0x0001),
+	PRQ_ERROR=(int)(0x0002),
+	PRQ_PENDING=(int)(0x0003)
+}
+#else
+ { __donnot_use_enum_rap_PrintQStatusCode=0x7FFFFFFF}
+#define PRQ_ACTIVE ( 0x0000 )
+#define PRQ_PAUSE ( 0x0001 )
+#define PRQ_ERROR ( 0x0002 )
+#define PRQ_PENDING ( 0x0003 )
+#endif
+;
+
+struct rap_PrintQueue0 {
+	uint8_t PrintQName[13];
+};
+
+struct rap_PrintQueue1 {
+	uint8_t PrintQName[13];
+	uint8_t Pad1;
+	uint16_t Priority;
+	uint16_t StartTime;
+	uint16_t UntilTime;
+	const char *SeparatorPageFilename;/* [charset(DOS),relative_short] */
+	uint16_t SeparatorPageFilenameHigh;
+	const char *PrintProcessorDllName;/* [charset(DOS),relative_short] */
+	uint16_t PrintProcessorDllNameHigh;
+	const char *PrintDestinationsName;/* [charset(DOS),relative_short] */
+	uint16_t PrintDestinationsNameHigh;
+	const char *PrintParameterString;/* [charset(DOS),relative_short] */
+	uint16_t PrintParameterStringHigh;
+	const char *CommentString;/* [charset(DOS),relative_short] */
+	uint16_t CommentStringHigh;
+	enum rap_PrintQStatusCode PrintQStatus;
+	uint16_t PrintJobCount;
+};
+
+struct rap_PrintQueue2 {
+	char _empty_;
+};
+
+struct rap_PrintQueue3 {
+	const char *PrintQueueName;/* [charset(DOS),relative_short] */
+	uint16_t PrintQueueNameHigh;
+	uint16_t Priority;
+	uint16_t StartTime;
+	uint16_t UntilTime;
+	uint16_t Pad;
+	const char *SeparatorPageFilename;/* [charset(DOS),relative_short] */
+	uint16_t SeparatorPageFilenameHigh;
+	const char *PrintProcessorDllName;/* [charset(DOS),relative_short] */
+	uint16_t PrintProcessorDllNameHigh;
+	const char *PrintParameterString;/* [charset(DOS),relative_short] */
+	uint16_t PrintParameterStringHigh;
+	const char *CommentString;/* [charset(DOS),relative_short] */
+	uint16_t CommentStringHigh;
+	enum rap_PrintQStatusCode PrintQStatus;
+	uint16_t PrintJobCount;
+	const char *Printers;/* [charset(DOS),relative_short] */
+	uint16_t PrintersHigh;
+	const char *DriverName;/* [charset(DOS),relative_short] */
+	uint16_t DriverNameHigh;
+	const char *PrintDriverData;/* [charset(DOS),relative_short] */
+	uint16_t PrintDriverDataHigh;
+};
+
+struct rap_PrintQueue4 {
+	char _empty_;
+};
+
+struct rap_PrintQueue5 {
+	const char *PrintQueueName;/* [charset(DOS),relative_short] */
+	uint16_t PrintQueueNameHigh;
+};
+
+union rap_printq_info {
+	struct rap_PrintQueue0 info0;/* [case(0)] */
+	struct rap_PrintQueue1 info1;/* [case] */
+	struct rap_PrintQueue2 info2;/* [case(2)] */
+	struct rap_PrintQueue3 info3;/* [case(3)] */
+	struct rap_PrintQueue4 info4;/* [case(4)] */
+	struct rap_PrintQueue5 info5;/* [case(5)] */
+}/* [nodiscriminant] */;
+
+enum rap_PrintJStatusCode
+#ifndef USE_UINT_ENUMS
+ {
+	PRJ_QS_QUEUED=(int)(0x0000),
+	PRJ_QS_PAUSED=(int)(0x0001),
+	PRJ_QS_SPOOLING=(int)(0x0002),
+	PRJ_QS_PRINTING=(int)(0x0003),
+	PRJ_QS_ERROR=(int)(0x0010)
+}
+#else
+ { __donnot_use_enum_rap_PrintJStatusCode=0x7FFFFFFF}
+#define PRJ_QS_QUEUED ( 0x0000 )
+#define PRJ_QS_PAUSED ( 0x0001 )
+#define PRJ_QS_SPOOLING ( 0x0002 )
+#define PRJ_QS_PRINTING ( 0x0003 )
+#define PRJ_QS_ERROR ( 0x0010 )
+#endif
+;
+
+struct rap_PrintJobInfo0 {
+	uint16_t JobID;
+};
+
+struct rap_PrintJobInfo1 {
+	uint16_t JobID;
+	uint8_t UserName[21];
+	uint8_t Pad;
+	uint8_t NotifyName[16];
+	uint8_t DataType[10];
+	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;
+	uint32_t JobSize;
+	const char *JobCommentString;/* [charset(DOS),relative_short] */
+	uint16_t JobCommentStringHigh;
+};
+
+struct rap_PrintJobInfo2 {
+	uint16_t JobID;
+	uint16_t Priority;
+	const char *UserName;/* [charset(DOS),relative_short] */
+	uint16_t UserNameHigh;
+	uint16_t JobPosition;
+	enum rap_PrintJStatusCode JobStatus;
+	uint32_t TimeSubmitted;
+	uint32_t JobSize;
+	const char *JobCommentString;/* [charset(DOS),relative_short] */
+	uint16_t JobCommentStringHigh;
+	const char *DocumentName;/* [charset(DOS),relative_short] */
+	uint16_t DocumentNameHigh;
+};
+
+struct rap_PrintJobInfo3 {
+	uint16_t JobID;
+	uint16_t Priority;
+	const char *UserName;/* [charset(DOS),relative_short] */
+	uint16_t UserNameHigh;
+	uint16_t JobPosition;
+	enum rap_PrintJStatusCode JobStatus;
+	uint32_t TimeSubmitted;
+	uint32_t JobSize;
+	const char *JobCommentString;/* [charset(DOS),relative_short] */
+	uint16_t JobCommentStringHigh;
+	const char *DocumentName;/* [charset(DOS),relative_short] */
+	uint16_t DocumentNameHigh;
+	const char *NotifyName;/* [charset(DOS),relative_short] */
+	uint16_t NotifyNameHigh;
+	const char *DataType;/* [charset(DOS),relative_short] */
+	uint16_t DataTypeHigh;
+	const char *PrintParameterString;/* [charset(DOS),relative_short] */
+	uint16_t PrintParameterStringHigh;
+	const char *StatusString;/* [charset(DOS),relative_short] */
+	uint16_t StatusStringHigh;
+	const char *QueueName;/* [charset(DOS),relative_short] */
+	uint16_t QueueNameHigh;
+	const char *PrintProcessorName;/* [charset(DOS),relative_short] */
+	uint16_t PrintProcessorNameHigh;
+	const char *PrintProcessorParams;/* [charset(DOS),relative_short] */
+	uint16_t PrintProcessorParamsHigh;
+	const char *DriverName;/* [charset(DOS),relative_short] */
+	uint16_t DriverNameHigh;
+	const char *DriverDataOffset;/* [charset(DOS),relative_short] */
+	uint16_t DriverDataOffsetHigh;
+	const char *PrinterNameOffset;/* [charset(DOS),relative_short] */
+	uint16_t PrinterNameOffsetHigh;
+};
+
 
 struct rap_NetShareEnum {
 	struct {
@@ -463,4 +642,21 @@ struct rap_WserverGetInfo {
 
 };
 
+
+struct rap_NetPrintQEnum {
+	struct {
+		uint16_t level;
+		uint16_t bufsize;
+	} in;
+
+	struct {
+		uint16_t status;
+		uint16_t convert;
+		uint16_t count;
+		uint16_t available;
+		union rap_printq_info *info;/* [ref,switch_is(level)] */
+	} out;
+
+};
+
 #endif /* _HEADER_rap */
diff --git a/librpc/idl/rap.idl b/librpc/idl/rap.idl
index 3ba1ad5..9259d4c 100644
--- a/librpc/idl/rap.idl
+++ b/librpc/idl/rap.idl
@@ -385,6 +385,172 @@ interface rap
 		[out,switch_is(level)] rap_server_info info
 	);
 
+	typedef [public] enum {
+		PRQ_ACTIVE	= 0x0000,
+		PRQ_PAUSE	= 0x0001,
+		PRQ_ERROR	= 0x0002,
+		PRQ_PENDING	= 0x0003
+	} rap_PrintQStatusCode;
+
+	typedef struct {
+		uint8 PrintQName[13];
+	} rap_PrintQueue0;
+
+	typedef struct {
+		uint8 PrintQName[13];
+		uint8 Pad1;
+		uint16 Priority;
+		uint16 StartTime;
+		uint16 UntilTime;
+		[relative_short] [string,charset(DOS)] uint8 *SeparatorPageFilename;
+		uint16 SeparatorPageFilenameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintProcessorDllName;
+		uint16 PrintProcessorDllNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintDestinationsName;
+		uint16 PrintDestinationsNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintParameterString;
+		uint16 PrintParameterStringHigh;
+		[relative_short] [string,charset(DOS)] uint8 *CommentString;
+		uint16 CommentStringHigh;
+		rap_PrintQStatusCode PrintQStatus;
+		uint16 PrintJobCount;
+	} rap_PrintQueue1;
+
+	typedef struct {
+	} rap_PrintQueue2;
+
+	typedef struct {
+		[relative_short] [string,charset(DOS)] uint8 *PrintQueueName;
+		uint16 PrintQueueNameHigh;
+		uint16 Priority;
+		uint16 StartTime;
+		uint16 UntilTime;
+		uint16 Pad;
+		[relative_short] [string,charset(DOS)] uint8 *SeparatorPageFilename;
+		uint16 SeparatorPageFilenameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintProcessorDllName;
+		uint16 PrintProcessorDllNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintParameterString;
+		uint16 PrintParameterStringHigh;
+		[relative_short] [string,charset(DOS)] uint8 *CommentString;
+		uint16 CommentStringHigh;
+		rap_PrintQStatusCode PrintQStatus;
+		uint16 PrintJobCount;
+		[relative_short] [string,charset(DOS)] uint8 *Printers;
+		uint16 PrintersHigh;
+		[relative_short] [string,charset(DOS)] uint8 *DriverName;
+		uint16 DriverNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintDriverData;
+		uint16 PrintDriverDataHigh;
+	} rap_PrintQueue3;
+
+	typedef struct {
+	} rap_PrintQueue4;
+
+	typedef struct {
+		[relative_short] [string,charset(DOS)] uint8 *PrintQueueName;
+		uint16 PrintQueueNameHigh;
+	} rap_PrintQueue5;
+
+	typedef [nodiscriminant] union {
+		[case(0)] rap_PrintQueue0 info0;
+		[case(1)] rap_PrintQueue1 info1;
+		[case(2)] rap_PrintQueue2 info2;
+		[case(3)] rap_PrintQueue3 info3;
+		[case(4)] rap_PrintQueue4 info4;
+		[case(5)] rap_PrintQueue5 info5;
+	} rap_printq_info;
+
+	typedef [public] enum {
+		PRJ_QS_QUEUED	= 0x0000,
+		PRJ_QS_PAUSED	= 0x0001,
+		PRJ_QS_SPOOLING	= 0x0002,
+		PRJ_QS_PRINTING	= 0x0003,
+		PRJ_QS_ERROR	= 0x0010
+	} rap_PrintJStatusCode;
+
+	typedef struct {
+		uint16 JobID;
+	} rap_PrintJobInfo0;
+
+	typedef struct {
+		uint16 JobID;
+		uint8 UserName[21];
+		uint8 Pad;
+		uint8 NotifyName[16];
+		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;
+		uint32 JobSize;
+		[relative_short] [string,charset(DOS)] uint8 *JobCommentString;
+		uint16 JobCommentStringHigh;
+	} rap_PrintJobInfo1;
+
+	typedef struct {
+		uint16 JobID;
+		uint16 Priority;
+		[relative_short] [string,charset(DOS)] uint8 *UserName;
+		uint16 UserNameHigh;
+		uint16 JobPosition;
+		rap_PrintJStatusCode JobStatus;
+		uint32 TimeSubmitted;
+		uint32 JobSize;
+		[relative_short] [string,charset(DOS)] uint8 *JobCommentString;
+		uint16 JobCommentStringHigh;
+		[relative_short] [string,charset(DOS)] uint8 *DocumentName;
+		uint16 DocumentNameHigh;
+	} rap_PrintJobInfo2;
+
+	typedef struct {
+		uint16 JobID;
+		uint16 Priority;
+		[relative_short] [string,charset(DOS)] uint8 *UserName;
+		uint16 UserNameHigh;
+		uint16 JobPosition;
+		rap_PrintJStatusCode JobStatus;
+		uint32 TimeSubmitted;
+		uint32 JobSize;
+		[relative_short] [string,charset(DOS)] uint8 *JobCommentString;
+		uint16 JobCommentStringHigh;
+		[relative_short] [string,charset(DOS)] uint8 *DocumentName;
+		uint16 DocumentNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *NotifyName;
+		uint16 NotifyNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *DataType;
+		uint16 DataTypeHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintParameterString;
+		uint16 PrintParameterStringHigh;
+		[relative_short] [string,charset(DOS)] uint8 *StatusString;
+		uint16 StatusStringHigh;
+		[relative_short] [string,charset(DOS)] uint8 *QueueName;
+		uint16 QueueNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintProcessorName;
+		uint16 PrintProcessorNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrintProcessorParams;
+		uint16 PrintProcessorParamsHigh;
+		[relative_short] [string,charset(DOS)] uint8 *DriverName;
+		uint16 DriverNameHigh;
+		[relative_short] [string,charset(DOS)] uint8 *DriverDataOffset;
+		uint16 DriverDataOffsetHigh;
+		[relative_short] [string,charset(DOS)] uint8 *PrinterNameOffset;
+		uint16 PrinterNameOffsetHigh;
+	} rap_PrintJobInfo3;
+
+	[public] void rap_NetPrintQEnum(
+		[in] uint16 level,
+		[in] uint16 bufsize,
+		[out] uint16 status,
+		[out] uint16 convert,
+		[out] uint16 count,
+		[out] uint16 available,
+		[out,switch_is(level)] rap_printq_info *info
+	);
+
 	/* Parameter description strings for RAP calls   */
 	/* Names are defined name for RAP call with _REQ */
 	/* appended to end.                              */
diff --git a/source3/script/tests/test_posix_s3.sh b/source3/script/tests/test_posix_s3.sh
index 0bd982a..47fb2c6 100755
--- a/source3/script/tests/test_posix_s3.sh
+++ b/source3/script/tests/test_posix_s3.sh
@@ -55,7 +55,7 @@ local="LOCAL-NSS-WRAPPER LOCAL-NDR"
 
 winbind="WINBIND-STRUCT WINBIND-WBCLIENT"
 
-rap="RAP-BASIC RAP-RPC"
+rap="RAP-BASIC RAP-RPC RAP-PRINTING"
 
 # NOTE: to enable the UNIX-WHOAMI test, we need to change the default share
 # config to allow guest access. I'm not sure whether this would break other
diff --git a/source3/smbd/lanman.c b/source3/smbd/lanman.c
index e3c94cf..65b9e39 100644
--- a/source3/smbd/lanman.c
+++ b/source3/smbd/lanman.c
@@ -669,6 +669,7 @@ static void fill_printq_info(int uLevel,
 			     struct spoolss_PrinterInfo2 *printer_info)
 {
 	switch (uLevel) {
+	case 0:
 	case 1:
 	case 2:
 		PACKS(desc,"B13", printer_info->printername);
diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk
index de9fa6d..78e7d18 100644
--- a/source4/librpc/config.mk
+++ b/source4/librpc/config.mk
@@ -575,6 +575,11 @@ PUBLIC_DEPENDENCIES = dcerpc NDR_KEYSVC
 
 RPC_NDR_KEYSVC_OBJ_FILES = ../librpc/gen_ndr/ndr_keysvc_c.o
 
+[SUBSYSTEM::NDR_RAP]
+PUBLIC_DEPENDENCIES = LIBNDR
+
+NDR_RAP_OBJ_FILES = ../librpc/gen_ndr/ndr_rap.o
+
 [SUBSYSTEM::NDR_DCERPC]
 PUBLIC_DEPENDENCIES = LIBNDR
 
diff --git a/source4/librpc/wscript_build b/source4/librpc/wscript_build
index f9a5eab..01449bb 100644
--- a/source4/librpc/wscript_build
+++ b/source4/librpc/wscript_build
@@ -263,6 +263,11 @@ bld.SAMBA_SUBSYSTEM('NDR_KEYSVC',
 	public_deps='LIBNDR'
 	)
 
+bld.SAMBA_SUBSYSTEM('NDR_RAP',
+	source='../../librpc/gen_ndr/ndr_rap.c',
+	public_deps='LIBNDR'
+	)
+
 
 bld.SAMBA_SUBSYSTEM('NDR_KRB5PAC',
 	source='../../librpc/ndr/ndr_krb5pac.c ../../librpc/gen_ndr/ndr_krb5pac.c',
diff --git a/source4/selftest/skip b/source4/selftest/skip
index 4061589..06acff2 100644
--- a/source4/selftest/skip
+++ b/source4/selftest/skip
@@ -63,6 +63,7 @@ raw.offline 			# Samba 4 doesn't have much offline support yet
 rpc.autoidl  # this one just generates a lot of noise, and is no longer useful
 samba4.rpc.countcalls # this is not useful now we have full IDL
 samba4.rap.scan # same thing here - we have docs now
+samba4.rap.printing # Not provided by Samba 4
 samba4.gensec.python # not finished
 bench # don't run benchmarks in our selftest
 trans2.scan # uses huge number of file descriptors
diff --git a/source4/torture/config.mk b/source4/torture/config.mk
index 3315865..3d566c0 100644
--- a/source4/torture/config.mk
+++ b/source4/torture/config.mk
@@ -136,11 +136,11 @@ mkinclude drs/config.mk
 OUTPUT_TYPE = MERGED_OBJ
 SUBSYSTEM = smbtorture
 INIT_FUNCTION = torture_rap_init
-PRIVATE_DEPENDENCIES = TORTURE_UTIL LIBCLI_SMB
+PRIVATE_DEPENDENCIES = TORTURE_UTIL LIBCLI_SMB NDR_RAP
 # End SUBSYSTEM TORTURE_RAP
 #################################
 
-TORTURE_RAP_OBJ_FILES = $(torturesrcdir)/rap/rap.o $(torturesrcdir)/rap/rpc.o
+TORTURE_RAP_OBJ_FILES = $(torturesrcdir)/rap/rap.o $(torturesrcdir)/rap/rpc.o $(torturesrcdir)/rap/printing.o
 
 $(eval $(call proto_header_template,$(torturesrcdir)/rap/proto.h,$(TORTURE_RAP_OBJ_FILES:.o=.c)))
 
diff --git a/source4/torture/rap/printing.c b/source4/torture/rap/printing.c
new file mode 100644
index 0000000..b57151a
--- /dev/null
+++ b/source4/torture/rap/printing.c
@@ -0,0 +1,124 @@
+/*
+   Unix SMB/CIFS implementation.
+   test suite for SMB printing operations
+
+   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/>.


-- 
Samba Shared Repository


More information about the samba-cvs mailing list