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:
parent
854467851d
commit
da1fa20104
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user