summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Bartlett <abartlet@samba.org>2012-09-05 15:03:31 +1000
committerAndrew Bartlett <abartlet@samba.org>2012-09-06 11:16:11 +1000
commitf453117569e04087ae461677717b14cdd65a4cd4 (patch)
tree65fcd1816e2edb947fa736752ed237e04b65af34
parente00ac55994ad7d067f7f628ae4157f0d23f819c4 (diff)
downloadsamba-f453117569e04087ae461677717b14cdd65a4cd4.tar.gz
samba-f453117569e04087ae461677717b14cdd65a4cd4.tar.bz2
samba-f453117569e04087ae461677717b14cdd65a4cd4.zip
s3-printing: Restrict printing=cups to systems with cups development headers at build time
This means that instead of failing due to the default commandline values not being quite correct that we clearly fail at loadparm and testparm time when parsing the printing= line. Andrew Bartlett
-rw-r--r--docs-xml/smbdotconf/printing/printing.xml6
-rw-r--r--lib/param/param_table.c4
-rw-r--r--source3/param/loadparm.c14
-rw-r--r--source3/utils/testparm.c2
4 files changed, 9 insertions, 17 deletions
diff --git a/docs-xml/smbdotconf/printing/printing.xml b/docs-xml/smbdotconf/printing/printing.xml
index c365594e1f..eb5925f740 100644
--- a/docs-xml/smbdotconf/printing/printing.xml
+++ b/docs-xml/smbdotconf/printing/printing.xml
@@ -18,7 +18,11 @@
<constant>LPRNG</constant>, <constant>PLP</constant>,
<constant>SYSV</constant>, <constant>HPUX</constant>,
<constant>QNX</constant>, <constant>SOFTQ</constant>,
- and <constant>CUPS</constant>.</para>
+ <constant>CUPS</constant> and <constant>IPRINT</constant>.</para>
+
+ <para>Be aware that CUPS and IPRINT are only available if the CUPS
+ development library was available at the time Samba was compiled
+ or packaged.</para>
<para>To see what the defaults are for the other print
commands when using the various options use the <citerefentry><refentrytitle>testparm</refentrytitle>
diff --git a/lib/param/param_table.c b/lib/param/param_table.c
index 4126d89c65..2aa392a683 100644
--- a/lib/param/param_table.c
+++ b/lib/param/param_table.c
@@ -186,8 +186,12 @@ static const struct enum_list enum_printing[] = {
{PRINT_QNX, "qnx"},
{PRINT_PLP, "plp"},
{PRINT_LPRNG, "lprng"},
+#ifdef HAVE_CUPS
{PRINT_CUPS, "cups"},
+#endif
+#ifdef HAVE_IPRINT
{PRINT_IPRINT, "iprint"},
+#endif
{PRINT_LPRNT, "nt"},
{PRINT_LPROS2, "os2"},
#if defined(DEVELOPER) || defined(ENABLE_SELFTEST)
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index 1e418258d4..2c77691373 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -408,7 +408,6 @@ static void init_printer_values(struct loadparm_service *pService)
case PRINT_CUPS:
case PRINT_IPRINT:
-#ifdef HAVE_CUPS
/* set the lpq command to contain the destination printer
name only. This is used by cups_queue_get() */
string_set(&pService->szLpqcommand, "%p");
@@ -418,15 +417,6 @@ static void init_printer_values(struct loadparm_service *pService)
string_set(&pService->szLpresumecommand, "");
string_set(&pService->szQueuepausecommand, "");
string_set(&pService->szQueueresumecommand, "");
-#else
- string_set(&pService->szLpqcommand, "lpq -P'%p'");
- string_set(&pService->szLprmcommand, "lprm -P'%p' %j");
- string_set(&pService->szPrintcommand, "lpr -P'%p' %s; rm %s");
- string_set(&pService->szLppausecommand, "lp -i '%p-%j' -H hold");
- string_set(&pService->szLpresumecommand, "lp -i '%p-%j' -H resume");
- string_set(&pService->szQueuepausecommand, "disable '%p'");
- string_set(&pService->szQueueresumecommand, "enable '%p'");
-#endif /* HAVE_CUPS */
break;
case PRINT_SYSV:
@@ -5284,11 +5274,7 @@ const char *lp_printcapname(void)
return Globals.szPrintcapname;
if (sDefault.iPrinting == PRINT_CUPS) {
-#ifdef HAVE_CUPS
return "cups";
-#else
- return "lpstat";
-#endif
}
if (sDefault.iPrinting == PRINT_BSD)
diff --git a/source3/utils/testparm.c b/source3/utils/testparm.c
index 105f1c5746..a9793ab4cd 100644
--- a/source3/utils/testparm.c
+++ b/source3/utils/testparm.c
@@ -333,13 +333,11 @@ static void do_per_share_checks(int s)
"%s. Map system can only work if force create mode "
"excludes octal 010 (S_IXGRP).\n", lp_servicename(talloc_tos(), s));
}
-#ifdef HAVE_CUPS
if (lp_printing(s) == PRINT_CUPS && *(lp_printcommand(talloc_tos(), s)) != '\0') {
fprintf(stderr,"Warning: Service %s defines a print command, but \
rameter is ignored when using CUPS libraries.\n",
lp_servicename(talloc_tos(), s) );
}
-#endif
}
int main(int argc, const char *argv[])