1
0
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:
Jim McDonough 2002-12-03 19:48:18 +00:00
parent 2e6c2a1456
commit 34c7d48033
2 changed files with 79 additions and 0 deletions

View File

@ -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;

View File

@ -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)