diff options
author | Gerald Carter <jerry@samba.org> | 2005-02-12 14:41:00 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 10:55:39 -0500 |
commit | f9a28748cfa89d020249ca24d8fcbab1a2bdd4f5 (patch) | |
tree | 42dabc581b70531bcb94fc3fda70d1201c4b90fd /source3 | |
parent | 70be7d71924d8ae23837c7555d65f12a0dfaa284 (diff) | |
download | samba-f9a28748cfa89d020249ca24d8fcbab1a2bdd4f5.tar.gz samba-f9a28748cfa89d020249ca24d8fcbab1a2bdd4f5.tar.bz2 samba-f9a28748cfa89d020249ca24d8fcbab1a2bdd4f5.zip |
r5359: BUG 2333: use the lpq command to pass in the correct printer name for cups_queue_get(). See comments in code for details
(This used to be commit 3eee00e0d0e9b58cdd35209691072b625813681c)
Diffstat (limited to 'source3')
-rw-r--r-- | source3/param/loadparm.c | 4 | ||||
-rw-r--r-- | source3/printing/print_cups.c | 19 |
2 files changed, 17 insertions, 6 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index 45245e2cfe..80843eda82 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -1226,7 +1226,9 @@ static void init_printer_values(service *pService) case PRINT_CUPS: #ifdef HAVE_CUPS - string_set(&pService->szLpqcommand, ""); + /* set the lpq command to contain the destination printer + name only. This is used by cups_queue_get() */ + string_set(&pService->szLpqcommand, "%p"); string_set(&pService->szLprmcommand, ""); string_set(&pService->szPrintcommand, ""); string_set(&pService->szLppausecommand, ""); diff --git a/source3/printing/print_cups.c b/source3/printing/print_cups.c index 59ab41b9f6..e6064564dc 100644 --- a/source3/printing/print_cups.c +++ b/source3/printing/print_cups.c @@ -670,12 +670,13 @@ static int cups_job_submit(int snum, struct printjob *pjob) * 'cups_queue_get()' - Get all the jobs in the print queue. */ -static int cups_queue_get(const char *printer_name, +static int cups_queue_get(const char *sharename, enum printing_types printing_type, char *lpq_command, print_queue_struct **q, print_status_struct *status) { + fstring printername; http_t *http = NULL; /* HTTP connection to server */ ipp_t *request = NULL, /* IPP Request */ *response = NULL; /* IPP Response */ @@ -711,7 +712,15 @@ static int cups_queue_get(const char *printer_name, *q = NULL; - DEBUG(5,("cups_queue_get(%s, %p, %p)\n", printer_name, q, status)); + /* HACK ALERT!!! The porblem with support the 'printer name' + option is that we key the tdb off the sharename. So we will + overload the lpq_command string to pass in the printername + (which is basically what we do for non-cups printers ... using + the lpq_command to get the queue listing). */ + + fstrcpy( printername, lpq_command ); + + DEBUG(5,("cups_queue_get(%s, %p, %p)\n", printername, q, status)); /* * Make sure we don't ask for passwords... @@ -733,7 +742,7 @@ static int cups_queue_get(const char *printer_name, * Generate the printer URI... */ - slprintf(uri, sizeof(uri) - 1, "ipp://localhost/printers/%s", printer_name); + slprintf(uri, sizeof(uri) - 1, "ipp://localhost/printers/%s", printername); /* * Build an IPP_GET_JOBS request, which requires the following @@ -936,14 +945,14 @@ static int cups_queue_get(const char *printer_name, */ if ((response = cupsDoRequest(http, request, "/")) == NULL) { - DEBUG(0,("Unable to get printer status for %s - %s\n", printer_name, + DEBUG(0,("Unable to get printer status for %s - %s\n", printername, ippErrorString(cupsLastError()))); *q = queue; goto out; } if (response->request.status.status_code >= IPP_OK_CONFLICT) { - DEBUG(0,("Unable to get printer status for %s - %s\n", printer_name, + DEBUG(0,("Unable to get printer status for %s - %s\n", printername, ippErrorString(response->request.status.status_code))); *q = queue; goto out; |