From 13904f585cbc4ccd5a366c288e6a32af44c30d27 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 19 Sep 2000 22:32:56 +0000 Subject: param/loadparm.c: Fix based on Damian's code to stop printer scripts getting overwritten. rpc_parse/parse_spoolss.c: Tidyup to call function for relstring arrays. Win2000 now does "Add Printer" successfully !!!!! Jeremy. (This used to be commit d666b958bc335c7fceebeb7a6333d78bc421c30f) --- source3/param/loadparm.c | 184 +++++++++++++++++++++++++---------------------- 1 file changed, 97 insertions(+), 87 deletions(-) (limited to 'source3/param') diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 129a9396f3..883d03f6a4 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -988,6 +988,92 @@ static struct parm_struct parm_table[] = { }; +/*************************************************************************** +Initialise the sDefault parameter structure for the printer values. +***************************************************************************/ +static void init_printer_values(void) +{ + string_set(&sDefault.szPrinterDriver, ""); + string_set(&sDefault.szDriverFile, DRIVERFILE); + + /* choose defaults depending on the type of printing */ + switch (sDefault.iPrinting) + { + case PRINT_BSD: + case PRINT_AIX: + string_set(&sDefault.szLpqcommand, "lpq -P%p"); + string_set(&sDefault.szLprmcommand, "lprm -P%p %j"); + string_set(&sDefault.szPrintcommand, + "lpr -r -P%p %s"); + break; + + case PRINT_LPRNG: + case PRINT_PLP: + string_set(&sDefault.szLpqcommand, "lpq -P%p"); + string_set(&sDefault.szLprmcommand, "lprm -P%p %j"); + string_set(&sDefault.szPrintcommand, + "lpr -r -P%p %s"); + string_set(&sDefault.szQueuepausecommand, + "lpc stop %p"); + string_set(&sDefault.szQueueresumecommand, + "lpc start %p"); + string_set(&sDefault.szLppausecommand, + "lpc hold %p %j"); + string_set(&sDefault.szLpresumecommand, + "lpc release %p %j"); + break; + + case PRINT_CUPS: + string_set(&sDefault.szLpqcommand, + "/usr/bin/lpstat -o%p"); + string_set(&sDefault.szLprmcommand, + "/usr/bin/cancel %p-%j"); + string_set(&sDefault.szPrintcommand, + "/usr/bin/lp -d%p -oraw %s; rm %s"); + string_set(&sDefault.szQueuepausecommand, + "/usr/bin/disable %p"); + string_set(&sDefault.szQueueresumecommand, + "/usr/bin/enable %p"); + break; + + case PRINT_SYSV: + case PRINT_HPUX: + string_set(&sDefault.szLpqcommand, "lpstat -o%p"); + string_set(&sDefault.szLprmcommand, "cancel %p-%j"); + string_set(&sDefault.szPrintcommand, + "lp -c -d%p %s; rm %s"); + string_set(&sDefault.szQueuepausecommand, + "disable %p"); + string_set(&sDefault.szQueueresumecommand, + "enable %p"); +#ifndef HPUX + string_set(&sDefault.szLppausecommand, + "lp -i %p-%j -H hold"); + string_set(&sDefault.szLpresumecommand, + "lp -i %p-%j -H resume"); +#endif /* SYSV */ + break; + + case PRINT_QNX: + string_set(&sDefault.szLpqcommand, "lpq -P%p"); + string_set(&sDefault.szLprmcommand, "lprm -P%p %j"); + string_set(&sDefault.szPrintcommand, "lp -r -P%p %s"); + break; + + case PRINT_SOFTQ: + string_set(&sDefault.szLpqcommand, "qstat -l -d%p"); + string_set(&sDefault.szLprmcommand, + "qstat -s -j%j -c"); + string_set(&sDefault.szPrintcommand, + "lp -d%p -s %s; rm %s"); + string_set(&sDefault.szLppausecommand, + "qstat -s -j%j -h"); + string_set(&sDefault.szLpresumecommand, + "qstat -s -j%j -r"); + break; + + } +} /*************************************************************************** Initialise the global parameter structure. @@ -1009,9 +1095,10 @@ static void init_globals(void) string_set(parm_table[i].ptr, ""); string_set(&sDefault.szGuestaccount, GUEST_ACCOUNT); - string_set(&sDefault.szPrinterDriver, ""); string_set(&sDefault.fstype, FSTYPE_STRING); + init_printer_values(); + done_init = True; } @@ -1173,92 +1260,6 @@ static void init_globals(void) interpret_coding_system(KANJI); } -/*************************************************************************** -Initialise the sDefault parameter structure. -***************************************************************************/ -static void init_locals(void) -{ - string_set(&sDefault.szDriverFile, DRIVERFILE); - - /* choose defaults depending on the type of printing */ - switch (sDefault.iPrinting) - { - case PRINT_BSD: - case PRINT_AIX: - string_set(&sDefault.szLpqcommand, "lpq -P%p"); - string_set(&sDefault.szLprmcommand, "lprm -P%p %j"); - string_set(&sDefault.szPrintcommand, - "lpr -r -P%p %s"); - break; - - case PRINT_LPRNG: - case PRINT_PLP: - string_set(&sDefault.szLpqcommand, "lpq -P%p"); - string_set(&sDefault.szLprmcommand, "lprm -P%p %j"); - string_set(&sDefault.szPrintcommand, - "lpr -r -P%p %s"); - string_set(&sDefault.szQueuepausecommand, - "lpc stop %p"); - string_set(&sDefault.szQueueresumecommand, - "lpc start %p"); - string_set(&sDefault.szLppausecommand, - "lpc hold %p %j"); - string_set(&sDefault.szLpresumecommand, - "lpc release %p %j"); - break; - - case PRINT_CUPS: - string_set(&sDefault.szLpqcommand, - "/usr/bin/lpstat -o%p"); - string_set(&sDefault.szLprmcommand, - "/usr/bin/cancel %p-%j"); - string_set(&sDefault.szPrintcommand, - "/usr/bin/lp -d%p -oraw %s; rm %s"); - string_set(&sDefault.szQueuepausecommand, - "/usr/bin/disable %p"); - string_set(&sDefault.szQueueresumecommand, - "/usr/bin/enable %p"); - break; - - case PRINT_SYSV: - case PRINT_HPUX: - string_set(&sDefault.szLpqcommand, "lpstat -o%p"); - string_set(&sDefault.szLprmcommand, "cancel %p-%j"); - string_set(&sDefault.szPrintcommand, - "lp -c -d%p %s; rm %s"); - string_set(&sDefault.szQueuepausecommand, - "disable %p"); - string_set(&sDefault.szQueueresumecommand, - "enable %p"); -#ifndef HPUX - string_set(&sDefault.szLppausecommand, - "lp -i %p-%j -H hold"); - string_set(&sDefault.szLpresumecommand, - "lp -i %p-%j -H resume"); -#endif /* SYSV */ - break; - - case PRINT_QNX: - string_set(&sDefault.szLpqcommand, "lpq -P%p"); - string_set(&sDefault.szLprmcommand, "lprm -P%p %j"); - string_set(&sDefault.szPrintcommand, "lp -r -P%p %s"); - break; - - case PRINT_SOFTQ: - string_set(&sDefault.szLpqcommand, "qstat -l -d%p"); - string_set(&sDefault.szLprmcommand, - "qstat -s -j%j -c"); - string_set(&sDefault.szPrintcommand, - "lp -d%p -s %s; rm %s"); - string_set(&sDefault.szLppausecommand, - "qstat -s -j%j -h"); - string_set(&sDefault.szLpresumecommand, - "qstat -s -j%j -r"); - break; - - } -} - static TALLOC_CTX *lp_talloc; /******************************************************************* a @@ -2654,6 +2655,15 @@ static BOOL equal_parameter(parm_type type, void *ptr1, void *ptr2) return (False); } +/*************************************************************************** + Initialize any local varients in the sDefault table. +***************************************************************************/ + +void init_locals(void) +{ + /* None as yet. */ +} + /*************************************************************************** Process a new section (service). At this stage all sections are services. Later we'll have special sections that permit server parameters to be set. -- cgit