[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