1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-25 23:21:54 +03:00

s3-spoolss: Get the printer location from cups.

Signed-off-by: Günther Deschner <gd@samba.org>
This commit is contained in:
Andreas Schneider 2011-05-13 10:28:20 +02:00 committed by Günther Deschner
parent 854467851d
commit da1fa20104

View File

@ -52,6 +52,7 @@
#include "rpc_server/spoolss/srv_spoolss_nt.h" #include "rpc_server/spoolss/srv_spoolss_nt.h"
#include "util_tdb.h" #include "util_tdb.h"
#include "libsmb/libsmb.h" #include "libsmb/libsmb.h"
#include "printing/printer_list.h"
/* macros stolen from s4 spoolss server */ /* macros stolen from s4 spoolss server */
#define SPOOLSS_BUFFER_UNION(fn,info,level) \ #define SPOOLSS_BUFFER_UNION(fn,info,level) \
@ -2879,7 +2880,21 @@ static void spoolss_notify_location(struct messaging_context *msg_ctx,
struct spoolss_PrinterInfo2 *pinfo2, struct spoolss_PrinterInfo2 *pinfo2,
TALLOC_CTX *mem_ctx) TALLOC_CTX *mem_ctx)
{ {
SETUP_SPOOLSS_NOTIFY_DATA_STRING(data, pinfo2->location); const char *loc = pinfo2->location;
NTSTATUS status;
status = printer_list_get_printer(mem_ctx,
pinfo2->sharename,
NULL,
&loc,
NULL);
if (NT_STATUS_IS_OK(status)) {
if (loc == NULL) {
loc = pinfo2->location;
}
}
SETUP_SPOOLSS_NOTIFY_DATA_STRING(data, loc);
} }
/******************************************************************* /*******************************************************************
@ -4011,8 +4026,24 @@ static WERROR construct_printer_info2(TALLOC_CTX *mem_ctx,
} }
W_ERROR_HAVE_NO_MEMORY(r->comment); W_ERROR_HAVE_NO_MEMORY(r->comment);
r->location = talloc_strdup(mem_ctx, info2->location); r->location = talloc_strdup(mem_ctx, info2->location);
if (info2->location[0] == '\0') {
const char *loc = NULL;
NTSTATUS nt_status;
nt_status = printer_list_get_printer(mem_ctx,
info2->sharename,
NULL,
&loc,
NULL);
if (NT_STATUS_IS_OK(nt_status)) {
if (loc != NULL) {
r->location = talloc_strdup(mem_ctx, loc);
}
}
}
W_ERROR_HAVE_NO_MEMORY(r->location); W_ERROR_HAVE_NO_MEMORY(r->location);
r->sepfile = talloc_strdup(mem_ctx, info2->sepfile); r->sepfile = talloc_strdup(mem_ctx, info2->sepfile);
W_ERROR_HAVE_NO_MEMORY(r->sepfile); W_ERROR_HAVE_NO_MEMORY(r->sepfile);
r->printprocessor = talloc_strdup(mem_ctx, info2->printprocessor); r->printprocessor = talloc_strdup(mem_ctx, info2->printprocessor);