From f453117569e04087ae461677717b14cdd65a4cd4 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Wed, 5 Sep 2012 15:03:31 +1000 Subject: [PATCH] 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 --- docs-xml/smbdotconf/printing/printing.xml | 6 +++++- lib/param/param_table.c | 4 ++++ source3/param/loadparm.c | 14 -------------- source3/utils/testparm.c | 2 -- 4 files changed, 9 insertions(+), 17 deletions(-) diff --git a/docs-xml/smbdotconf/printing/printing.xml b/docs-xml/smbdotconf/printing/printing.xml index c365594e1f12..eb5925f740f2 100644 --- a/docs-xml/smbdotconf/printing/printing.xml +++ b/docs-xml/smbdotconf/printing/printing.xml @@ -18,7 +18,11 @@ LPRNG, PLP, SYSV, HPUX, QNX, SOFTQ, - and CUPS. + CUPS and IPRINT. + + Be aware that CUPS and IPRINT are only available if the CUPS + development library was available at the time Samba was compiled + or packaged. To see what the defaults are for the other print commands when using the various options use the testparm diff --git a/lib/param/param_table.c b/lib/param/param_table.c index 4126d89c65ce..2aa392a683ba 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 1e418258d492..2c77691373da 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 105f1c5746ec..a9793ab4cd76 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[]) -- 2.34.1