summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docs-xml/smbdotconf/printing/lppausecommand.xml1
-rw-r--r--docs-xml/smbdotconf/printing/lpqcommand.xml1
-rw-r--r--docs-xml/smbdotconf/printing/lpresumecommand.xml1
-rw-r--r--docs-xml/smbdotconf/printing/lprmcommand.xml1
-rw-r--r--docs-xml/smbdotconf/printing/printcommand.xml1
-rw-r--r--docs-xml/smbdotconf/printing/queuepausecommand.xml1
-rw-r--r--docs-xml/smbdotconf/printing/queueresumecommand.xml1
-rw-r--r--source3/printing/print_generic.c19
-rw-r--r--source3/printing/printing.c8
-rw-r--r--source3/utils/testparm.c2
10 files changed, 23 insertions, 13 deletions
diff --git a/docs-xml/smbdotconf/printing/lppausecommand.xml b/docs-xml/smbdotconf/printing/lppausecommand.xml
index 3aa134c..f2518d3 100644
--- a/docs-xml/smbdotconf/printing/lppausecommand.xml
+++ b/docs-xml/smbdotconf/printing/lppausecommand.xml
@@ -1,6 +1,7 @@
<samba:parameter name="lppause command"
context="S"
type="string"
+ constant="1"
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
<description>
<para>This parameter specifies the command to be
diff --git a/docs-xml/smbdotconf/printing/lpqcommand.xml b/docs-xml/smbdotconf/printing/lpqcommand.xml
index f3c17f2..f0161f3 100644
--- a/docs-xml/smbdotconf/printing/lpqcommand.xml
+++ b/docs-xml/smbdotconf/printing/lpqcommand.xml
@@ -1,6 +1,7 @@
<samba:parameter name="lpq command"
context="S"
type="string"
+ constant="1"
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
<description>
<para>This parameter specifies the command to be
diff --git a/docs-xml/smbdotconf/printing/lpresumecommand.xml b/docs-xml/smbdotconf/printing/lpresumecommand.xml
index 153ba76..2cee574 100644
--- a/docs-xml/smbdotconf/printing/lpresumecommand.xml
+++ b/docs-xml/smbdotconf/printing/lpresumecommand.xml
@@ -1,6 +1,7 @@
<samba:parameter name="lpresume command"
context="S"
type="string"
+ constant="1"
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
<description>
<para>This parameter specifies the command to be
diff --git a/docs-xml/smbdotconf/printing/lprmcommand.xml b/docs-xml/smbdotconf/printing/lprmcommand.xml
index 4b7f3dd..a595c12 100644
--- a/docs-xml/smbdotconf/printing/lprmcommand.xml
+++ b/docs-xml/smbdotconf/printing/lprmcommand.xml
@@ -1,6 +1,7 @@
<samba:parameter name="lprm command"
context="S"
type="string"
+ constant="1"
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
<description>
<para>This parameter specifies the command to be
diff --git a/docs-xml/smbdotconf/printing/printcommand.xml b/docs-xml/smbdotconf/printing/printcommand.xml
index c84e45f..42a7188 100644
--- a/docs-xml/smbdotconf/printing/printcommand.xml
+++ b/docs-xml/smbdotconf/printing/printcommand.xml
@@ -1,6 +1,7 @@
<samba:parameter name="print command"
context="S"
type="string"
+ constant="1"
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
<description>
<para>After a print job has finished spooling to
diff --git a/docs-xml/smbdotconf/printing/queuepausecommand.xml b/docs-xml/smbdotconf/printing/queuepausecommand.xml
index 5dca456..600a2ba 100644
--- a/docs-xml/smbdotconf/printing/queuepausecommand.xml
+++ b/docs-xml/smbdotconf/printing/queuepausecommand.xml
@@ -1,6 +1,7 @@
<samba:parameter name="queuepause command"
context="S"
type="string"
+ constant="1"
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
<description>
<para>This parameter specifies the command to be
diff --git a/docs-xml/smbdotconf/printing/queueresumecommand.xml b/docs-xml/smbdotconf/printing/queueresumecommand.xml
index 4a57333..431295a 100644
--- a/docs-xml/smbdotconf/printing/queueresumecommand.xml
+++ b/docs-xml/smbdotconf/printing/queueresumecommand.xml
@@ -1,6 +1,7 @@
<samba:parameter name="queueresume command"
context="S"
type="string"
+ constant="1"
xmlns:samba="http://www.samba.org/samba/DTD/samba-doc">
<description>
<para>This parameter specifies the command to be
diff --git a/source3/printing/print_generic.c b/source3/printing/print_generic.c
index d3c72dd..574f357 100644
--- a/source3/printing/print_generic.c
+++ b/source3/printing/print_generic.c
@@ -73,14 +73,17 @@ static int print_run_command(int snum, const char* printername, bool do_sub,
return -1;
}
+ syscmd = lp_string(ctx, syscmd);
+ if (syscmd == NULL) {
+ return -1;
+ }
+
if (do_sub && snum != -1) {
- syscmd = talloc_sub_full(ctx,
+ syscmd = talloc_sub_advanced(ctx,
lp_servicename(talloc_tos(), snum),
current_user_info.unix_name,
"",
get_current_gid(NULL),
- get_current_username(),
- current_user_info.domain,
syscmd);
if (!syscmd) {
return -1;
@@ -120,7 +123,7 @@ static int generic_job_pause(int snum, struct printjob *pjob)
/* need to pause the spooled entry */
slprintf(jobstr, sizeof(jobstr)-1, "%d", pjob->sysjob);
return print_run_command(snum, lp_printername(talloc_tos(), snum), True,
- lp_lppause_command(talloc_tos(), snum), NULL,
+ lp_lppause_command(snum), NULL,
"%j", jobstr,
NULL);
}
@@ -135,7 +138,7 @@ static int generic_job_resume(int snum, struct printjob *pjob)
/* need to pause the spooled entry */
slprintf(jobstr, sizeof(jobstr)-1, "%d", pjob->sysjob);
return print_run_command(snum, lp_printername(talloc_tos(), snum), True,
- lp_lpresume_command(talloc_tos(), snum), NULL,
+ lp_lpresume_command(snum), NULL,
"%j", jobstr,
NULL);
}
@@ -257,7 +260,7 @@ static int generic_job_submit(int snum, struct printjob *pjob,
/* send it to the system spooler */
ret = print_run_command(snum, lp_printername(talloc_tos(), snum), True,
- lp_print_command(talloc_tos(), snum), NULL,
+ lp_print_command(snum), NULL,
"%s", p,
"%J", jobname,
"%f", p,
@@ -310,7 +313,7 @@ static int generic_job_submit(int snum, struct printjob *pjob,
static int generic_queue_pause(int snum)
{
return print_run_command(snum, lp_printername(talloc_tos(), snum), True,
- lp_queuepause_command(talloc_tos(), snum), NULL, NULL);
+ lp_queuepause_command(snum), NULL, NULL);
}
/****************************************************************************
@@ -319,7 +322,7 @@ static int generic_queue_pause(int snum)
static int generic_queue_resume(int snum)
{
return print_run_command(snum, lp_printername(talloc_tos(), snum), True,
- lp_queueresume_command(talloc_tos(), snum), NULL, NULL);
+ lp_queueresume_command(snum), NULL, NULL);
}
/****************************************************************************
diff --git a/source3/printing/printing.c b/source3/printing/printing.c
index c6bf6ec..0f4db52 100644
--- a/source3/printing/printing.c
+++ b/source3/printing/printing.c
@@ -1717,7 +1717,7 @@ static void print_queue_update(struct messaging_context *msg_ctx,
/* don't strip out characters like '$' from the printername */
lpqcommand = talloc_string_sub2(ctx,
- lp_lpq_command(talloc_tos(), snum),
+ lp_lpq_command(snum),
"%p",
lp_printername(talloc_tos(), snum),
false, false, false);
@@ -1737,7 +1737,7 @@ static void print_queue_update(struct messaging_context *msg_ctx,
}
lprmcommand = talloc_string_sub2(ctx,
- lp_lprm_command(talloc_tos(), snum),
+ lp_lprm_command(snum),
"%p",
lp_printername(talloc_tos(), snum),
false, false, false);
@@ -2199,7 +2199,7 @@ static bool print_job_delete1(struct tevent_context *ev,
{
result = (*(current_printif->job_delete))(
lp_printername(talloc_tos(), snum),
- lp_lprm_command(talloc_tos(), snum),
+ lp_lprm_command(snum),
pjob);
/* Delete the tdb entry if the delete succeeded or the job hasn't
@@ -3027,7 +3027,7 @@ NTSTATUS print_job_end(struct messaging_context *msg_ctx, int snum,
/* don't strip out characters like '$' from the printername */
lpq_cmd = talloc_string_sub2(tmp_ctx,
- lp_lpq_command(talloc_tos(), snum),
+ lp_lpq_command(snum),
"%p",
lp_printername(talloc_tos(), snum),
false, false, false);
diff --git a/source3/utils/testparm.c b/source3/utils/testparm.c
index 9ba625d..f4e94b6 100644
--- a/source3/utils/testparm.c
+++ b/source3/utils/testparm.c
@@ -611,7 +611,7 @@ static void do_per_share_checks(int s)
"excludes octal 010 (S_IXGRP).\n\n",
lp_servicename(talloc_tos(), s));
}
- if (lp_printing(s) == PRINT_CUPS && *(lp_print_command(talloc_tos(), s)) != '\0') {
+ if (lp_printing(s) == PRINT_CUPS && *(lp_print_command(s)) != '\0') {
fprintf(stderr,
"Warning: Service %s defines a print command, but "
"parameter is ignored when using CUPS libraries.\n\n",