mirror of
https://github.com/samba-team/samba.git
synced 2025-03-05 20:58:40 +03:00
Support printer info 7, used for publishing
(This used to be commit 3c9726454ea6beb8d5d308805caecb86395c7ad2)
This commit is contained in:
parent
2e6c2a1456
commit
34c7d48033
@ -989,6 +989,13 @@ typedef struct printer_info_5
|
||||
}
|
||||
PRINTER_INFO_5;
|
||||
|
||||
typedef struct printer_info_7
|
||||
{
|
||||
UNISTR guid; /* text form of printer guid */
|
||||
uint32 action;
|
||||
}
|
||||
PRINTER_INFO_7;
|
||||
|
||||
typedef struct spool_q_enumprinters
|
||||
{
|
||||
uint32 flags;
|
||||
@ -1480,6 +1487,14 @@ typedef struct spool_printer_info_level_3
|
||||
}
|
||||
SPOOL_PRINTER_INFO_LEVEL_3;
|
||||
|
||||
typedef struct spool_printer_info_level_7
|
||||
{
|
||||
uint32 guid_ptr;
|
||||
uint32 action;
|
||||
UNISTR2 guid;
|
||||
}
|
||||
SPOOL_PRINTER_INFO_LEVEL_7;
|
||||
|
||||
typedef struct spool_printer_info_level
|
||||
{
|
||||
uint32 level;
|
||||
@ -1487,6 +1502,7 @@ typedef struct spool_printer_info_level
|
||||
SPOOL_PRINTER_INFO_LEVEL_1 *info_1;
|
||||
SPOOL_PRINTER_INFO_LEVEL_2 *info_2;
|
||||
SPOOL_PRINTER_INFO_LEVEL_3 *info_3;
|
||||
SPOOL_PRINTER_INFO_LEVEL_7 *info_7;
|
||||
}
|
||||
SPOOL_PRINTER_INFO_LEVEL;
|
||||
|
||||
|
@ -2658,6 +2658,26 @@ BOOL smb_io_printer_info_5(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_5 *info,
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Parse a PRINTER_INFO_7 structure.
|
||||
********************************************************************/
|
||||
|
||||
BOOL smb_io_printer_info_7(char *desc, NEW_BUFFER *buffer, PRINTER_INFO_7 *info, int depth)
|
||||
{
|
||||
prs_struct *ps=&buffer->prs;
|
||||
|
||||
prs_debug(ps, depth, desc, "smb_io_printer_info_7");
|
||||
depth++;
|
||||
|
||||
buffer->struct_start=prs_offset(ps);
|
||||
|
||||
if (!smb_io_relstr("guid", buffer, depth, &info->guid))
|
||||
return False;
|
||||
if (!prs_uint32("action", ps, depth, &info->action))
|
||||
return False;
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
Parse a PORT_INFO_1 structure.
|
||||
********************************************************************/
|
||||
@ -3425,6 +3445,19 @@ uint32 spoolss_size_printer_info_3(PRINTER_INFO_3 *info)
|
||||
return the size required by a struct in the stream
|
||||
********************************************************************/
|
||||
|
||||
uint32 spoolss_size_printer_info_7(PRINTER_INFO_7 *info)
|
||||
{
|
||||
uint32 size=0;
|
||||
|
||||
size+=size_of_relative_string( &info->guid );
|
||||
size+=size_of_uint32( &info->action );
|
||||
return size;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
return the size required by a struct in the stream
|
||||
********************************************************************/
|
||||
|
||||
uint32 spoolss_size_printer_driver_info_1(DRIVER_INFO_1 *info)
|
||||
{
|
||||
int size=0;
|
||||
@ -4826,6 +4859,24 @@ BOOL spool_io_printer_info_level_2(char *desc, SPOOL_PRINTER_INFO_LEVEL_2 *il, p
|
||||
return True;
|
||||
}
|
||||
|
||||
BOOL spool_io_printer_info_level_7(char *desc, SPOOL_PRINTER_INFO_LEVEL_7 *il, prs_struct *ps, int depth)
|
||||
{
|
||||
prs_debug(ps, depth, desc, "spool_io_printer_info_level_7");
|
||||
depth++;
|
||||
|
||||
if(!prs_align(ps))
|
||||
return False;
|
||||
|
||||
if(!prs_uint32("guid_ptr", ps, depth, &il->guid_ptr))
|
||||
return False;
|
||||
if(!prs_uint32("action", ps, depth, &il->action))
|
||||
return False;
|
||||
|
||||
if(!smb_io_unistr2("servername", &il->guid, il->guid_ptr, ps, depth))
|
||||
return False;
|
||||
return True;
|
||||
}
|
||||
|
||||
/*******************************************************************
|
||||
********************************************************************/
|
||||
|
||||
@ -4891,6 +4942,13 @@ BOOL spool_io_printer_info_level(char *desc, SPOOL_PRINTER_INFO_LEVEL *il, prs_s
|
||||
return False;
|
||||
break;
|
||||
}
|
||||
case 7:
|
||||
if (UNMARSHALLING(ps))
|
||||
if ((il->info_7=(SPOOL_PRINTER_INFO_LEVEL_7 *)prs_alloc_mem(ps,sizeof(SPOOL_PRINTER_INFO_LEVEL_7))) == NULL)
|
||||
return False;
|
||||
if (!spool_io_printer_info_level_7("", il->info_7, ps, depth))
|
||||
return False;
|
||||
break;
|
||||
}
|
||||
|
||||
return True;
|
||||
@ -6505,6 +6563,11 @@ void free_printer_info_5(PRINTER_INFO_5 *printer)
|
||||
SAFE_FREE(printer);
|
||||
}
|
||||
|
||||
void free_printer_info_7(PRINTER_INFO_7 *printer)
|
||||
{
|
||||
SAFE_FREE(printer);
|
||||
}
|
||||
|
||||
void free_job_info_2(JOB_INFO_2 *job)
|
||||
{
|
||||
if (job!=NULL)
|
||||
|
Loading…
x
Reference in New Issue
Block a user