mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
s3-printing: avoid mixing cups backend code with nt_printing code in cups_pull_comment_location.
Guenther
This commit is contained in:
parent
772839640e
commit
3da91b786e
@ -4897,7 +4897,10 @@ bool aix_cache_reload(void);
|
||||
/* The following definitions come from printing/print_cups.c */
|
||||
|
||||
bool cups_cache_reload(void);
|
||||
bool cups_pull_comment_location(NT_PRINTER_INFO_LEVEL_2 *printer);
|
||||
bool cups_pull_comment_location(TALLOC_CTX *mem_ctx,
|
||||
const char *printername,
|
||||
char **comment,
|
||||
char **location);
|
||||
|
||||
/* The following definitions come from printing/print_generic.c */
|
||||
|
||||
|
@ -3831,8 +3831,17 @@ static WERROR get_a_printer_2_default(NT_PRINTER_INFO_LEVEL_2 *info,
|
||||
if (get_loc_com && (enum printing_types)lp_printing(snum) == PRINT_CUPS ) {
|
||||
/* Pull the location and comment strings from cups if we don't
|
||||
already have one */
|
||||
if ( !strlen(info->location) || !strlen(info->comment) )
|
||||
cups_pull_comment_location( info );
|
||||
if ( !strlen(info->location) || !strlen(info->comment) ) {
|
||||
char *comment = NULL;
|
||||
char *location = NULL;
|
||||
if (cups_pull_comment_location(info, info->sharename,
|
||||
&comment, &location)) {
|
||||
strlcpy(info->comment, comment, sizeof(info->comment));
|
||||
fstrcpy(info->location, location);
|
||||
TALLOC_FREE(comment);
|
||||
TALLOC_FREE(location);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@ -3953,8 +3962,17 @@ static WERROR get_a_printer_2(NT_PRINTER_INFO_LEVEL_2 *info,
|
||||
if (get_loc_com && (enum printing_types)lp_printing(snum) == PRINT_CUPS ) {
|
||||
/* Pull the location and comment strings from cups if we don't
|
||||
already have one */
|
||||
if ( !strlen(info->location) || !strlen(info->comment) )
|
||||
cups_pull_comment_location( info );
|
||||
if ( !strlen(info->location) || !strlen(info->comment) ) {
|
||||
char *location = NULL;
|
||||
comment = NULL;
|
||||
if (cups_pull_comment_location(info, info->sharename,
|
||||
&comment, &location)) {
|
||||
strlcpy(info->comment, comment, sizeof(info->comment));
|
||||
fstrcpy(info->location, location);
|
||||
TALLOC_FREE(comment);
|
||||
TALLOC_FREE(location);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -1631,7 +1631,10 @@ struct printif cups_printif =
|
||||
cups_job_submit,
|
||||
};
|
||||
|
||||
bool cups_pull_comment_location(NT_PRINTER_INFO_LEVEL_2 *printer)
|
||||
bool cups_pull_comment_location(TALLOC_CTX *mem_ctx,
|
||||
const char *printername,
|
||||
char **comment,
|
||||
char **location)
|
||||
{
|
||||
TALLOC_CTX *frame = talloc_stackframe();
|
||||
http_t *http = NULL; /* HTTP connection to server */
|
||||
@ -1652,7 +1655,7 @@ bool cups_pull_comment_location(NT_PRINTER_INFO_LEVEL_2 *printer)
|
||||
bool ret = False;
|
||||
size_t size;
|
||||
|
||||
DEBUG(5, ("pulling %s location\n", printer->sharename));
|
||||
DEBUG(5, ("pulling %s location\n", printername));
|
||||
|
||||
/*
|
||||
* Make sure we don't ask for passwords...
|
||||
@ -1691,7 +1694,7 @@ bool cups_pull_comment_location(NT_PRINTER_INFO_LEVEL_2 *printer)
|
||||
if (server) {
|
||||
goto out;
|
||||
}
|
||||
if (!push_utf8_talloc(frame, &sharename, printer->sharename, &size)) {
|
||||
if (!push_utf8_talloc(frame, &sharename, printername, &size)) {
|
||||
goto out;
|
||||
}
|
||||
slprintf(uri, sizeof(uri) - 1, "ipp://%s/printers/%s",
|
||||
@ -1743,40 +1746,30 @@ bool cups_pull_comment_location(NT_PRINTER_INFO_LEVEL_2 *printer)
|
||||
|
||||
/* Grab the comment if we don't have one */
|
||||
if ( (strcmp(attr->name, "printer-info") == 0)
|
||||
&& (attr->value_tag == IPP_TAG_TEXT)
|
||||
&& !strlen(printer->comment) )
|
||||
&& (attr->value_tag == IPP_TAG_TEXT))
|
||||
{
|
||||
char *comment = NULL;
|
||||
if (!pull_utf8_talloc(frame,
|
||||
&comment,
|
||||
if (!pull_utf8_talloc(mem_ctx,
|
||||
comment,
|
||||
attr->values[0].string.text,
|
||||
&size)) {
|
||||
goto out;
|
||||
}
|
||||
DEBUG(5,("cups_pull_comment_location: Using cups comment: %s\n",
|
||||
comment));
|
||||
strlcpy(printer->comment,
|
||||
comment,
|
||||
sizeof(printer->comment));
|
||||
*comment));
|
||||
}
|
||||
|
||||
/* Grab the location if we don't have one */
|
||||
if ( (strcmp(attr->name, "printer-location") == 0)
|
||||
&& (attr->value_tag == IPP_TAG_TEXT)
|
||||
&& !strlen(printer->location) )
|
||||
&& (attr->value_tag == IPP_TAG_TEXT))
|
||||
{
|
||||
char *location = NULL;
|
||||
if (!pull_utf8_talloc(frame,
|
||||
&location,
|
||||
if (!pull_utf8_talloc(mem_ctx,
|
||||
location,
|
||||
attr->values[0].string.text,
|
||||
&size)) {
|
||||
goto out;
|
||||
}
|
||||
DEBUG(5,("cups_pull_comment_location: Using cups location: %s\n",
|
||||
location));
|
||||
strlcpy(printer->location,
|
||||
location,
|
||||
sizeof(printer->location));
|
||||
*location));
|
||||
}
|
||||
|
||||
attr = attr->next;
|
||||
|
Loading…
Reference in New Issue
Block a user