summaryrefslogtreecommitdiff
path: root/source3/rpc_server/srv_spoolss_nt.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/rpc_server/srv_spoolss_nt.c')
-rw-r--r--source3/rpc_server/srv_spoolss_nt.c86
1 files changed, 32 insertions, 54 deletions
diff --git a/source3/rpc_server/srv_spoolss_nt.c b/source3/rpc_server/srv_spoolss_nt.c
index 8cff8d68d9..dc4932fdfc 100644
--- a/source3/rpc_server/srv_spoolss_nt.c
+++ b/source3/rpc_server/srv_spoolss_nt.c
@@ -897,8 +897,8 @@ static void spoolss_notify_server_name(int snum, SPOOL_NOTIFY_INFO_DATA *data, p
snprintf(temp_name, sizeof(temp_name)-1, "\\\\%s", global_myname);
- data->notify_data.data.length=strlen(temp_name);
- ascii_to_unistr((char *)data->notify_data.data.string, temp_name, sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length= (uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ temp_name, sizeof(data->notify_data.data.string), True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -910,12 +910,10 @@ static void spoolss_notify_printer_name(int snum, SPOOL_NOTIFY_INFO_DATA *data,
{
/*
data->notify_data.data.length=strlen(lp_servicename(snum));
- ascii_to_unistr(data->notify_data.data.string, lp_servicename(snum), sizeof(data->notify_data.data.string)-1);
+ dos_PutUniCode(data->notify_data.data.string, lp_servicename(snum), sizeof(data->notify_data.data.string), True);
*/
- data->notify_data.data.length=strlen(printer->info_2->printername);
- ascii_to_unistr((char *)data->notify_data.data.string,
- printer->info_2->printername,
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ printer->info_2->printername, sizeof(data->notify_data.data.string), True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -923,10 +921,8 @@ static void spoolss_notify_printer_name(int snum, SPOOL_NOTIFY_INFO_DATA *data,
********************************************************************/
static void spoolss_notify_share_name(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(lp_servicename(snum));
- ascii_to_unistr((char *)data->notify_data.data.string,
- lp_servicename(snum),
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ lp_servicename(snum), sizeof(data->notify_data.data.string),True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -936,10 +932,8 @@ static void spoolss_notify_port_name(int snum, SPOOL_NOTIFY_INFO_DATA *data, pri
{
/* even if it's strange, that's consistant in all the code */
- data->notify_data.data.length=strlen(lp_servicename(snum));
- ascii_to_unistr((char *)data->notify_data.data.string,
- lp_servicename(snum),
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ lp_servicename(snum), sizeof(data->notify_data.data.string), True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -949,10 +943,8 @@ static void spoolss_notify_port_name(int snum, SPOOL_NOTIFY_INFO_DATA *data, pri
********************************************************************/
static void spoolss_notify_driver_name(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(printer->info_2->drivername);
- ascii_to_unistr((char *)data->notify_data.data.string,
- printer->info_2->drivername,
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ printer->info_2->drivername, sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -960,10 +952,8 @@ static void spoolss_notify_driver_name(int snum, SPOOL_NOTIFY_INFO_DATA *data, p
********************************************************************/
static void spoolss_notify_comment(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(lp_comment(snum));
- ascii_to_unistr((char *)data->notify_data.data.string,
- lp_comment(snum),
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ lp_comment(snum), sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -973,10 +963,8 @@ static void spoolss_notify_comment(int snum, SPOOL_NOTIFY_INFO_DATA *data, print
********************************************************************/
static void spoolss_notify_location(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(printer->info_2->location);
- ascii_to_unistr((char *)data->notify_data.data.string,
- printer->info_2->location,
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ printer->info_2->location, sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -994,10 +982,8 @@ static void spoolss_notify_devmode(int snum, SPOOL_NOTIFY_INFO_DATA *data, print
********************************************************************/
static void spoolss_notify_sepfile(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(printer->info_2->sepfile);
- ascii_to_unistr((char *)data->notify_data.data.string,
- printer->info_2->sepfile,
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ printer->info_2->sepfile, sizeof(data->notify_data.data.string)-1,True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -1006,10 +992,8 @@ static void spoolss_notify_sepfile(int snum, SPOOL_NOTIFY_INFO_DATA *data, print
********************************************************************/
static void spoolss_notify_print_processor(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(printer->info_2->printprocessor);
- ascii_to_unistr((char *)data->notify_data.data.string,
- printer->info_2->printprocessor,
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ printer->info_2->printprocessor, sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -1018,10 +1002,8 @@ static void spoolss_notify_print_processor(int snum, SPOOL_NOTIFY_INFO_DATA *dat
********************************************************************/
static void spoolss_notify_parameters(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(printer->info_2->parameters);
- ascii_to_unistr((char *)data->notify_data.data.string,
- printer->info_2->parameters,
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ printer->info_2->parameters, sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -1030,10 +1012,8 @@ static void spoolss_notify_parameters(int snum, SPOOL_NOTIFY_INFO_DATA *data, pr
********************************************************************/
static void spoolss_notify_datatype(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(printer->info_2->datatype);
- ascii_to_unistr((char *)data->notify_data.data.string,
- printer->info_2->datatype,
- sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ printer->info_2->datatype, sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -1133,8 +1113,8 @@ static void spoolss_notify_average_ppm(int snum, SPOOL_NOTIFY_INFO_DATA *data, p
********************************************************************/
static void spoolss_notify_username(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(queue->user);
- ascii_to_unistr((char *)data->notify_data.data.string, queue->user, sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ queue->user, sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -1150,8 +1130,8 @@ static void spoolss_notify_job_status(int snum, SPOOL_NOTIFY_INFO_DATA *data, pr
********************************************************************/
static void spoolss_notify_job_name(int snum, SPOOL_NOTIFY_INFO_DATA *data, print_queue_struct *queue, NT_PRINTER_INFO_LEVEL *printer)
{
- data->notify_data.data.length=strlen(queue->file);
- ascii_to_unistr((char *)data->notify_data.data.string, queue->file, sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ queue->file, sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -1174,8 +1154,8 @@ static void spoolss_notify_job_status_string(int snum, SPOOL_NOTIFY_INFO_DATA *d
p = "PRINTING";
break;
}
- data->notify_data.data.length=strlen(p);
- ascii_to_unistr((char *)data->notify_data.data.string, p, sizeof(data->notify_data.data.string)-1);
+ data->notify_data.data.length=(uint32)((dos_PutUniCode((char *)data->notify_data.data.string,
+ p, sizeof(data->notify_data.data.string)-1, True) - sizeof(uint16))/sizeof(uint16));
}
/*******************************************************************
@@ -2598,8 +2578,7 @@ static void init_unistr_array(uint16 **uni_array, fstring *char_array, char *whe
DEBUG(0,("init_unistr_array: Realloc error\n" ));
return;
}
- ascii_to_unistr((char *)(*uni_array+j), line , 2*strlen(line));
- j+=strlen(line)+1;
+ j += (dos_PutUniCode((char *)(*uni_array+j), line , sizeof(uint16)*strlen(line), True) / sizeof(uint16) );
i++;
if (strlen(v) == 0) break;
}
@@ -4145,13 +4124,12 @@ uint32 _spoolss_enumprinterdata(const POLICY_HND *handle, uint32 idx,
* take a pause *before* coding not *during* coding
*/
- *out_max_value_len=in_value_len;
+ *out_max_value_len=(in_value_len/sizeof(uint16));
if((*out_value=(uint16 *)malloc(in_value_len*sizeof(uint8))) == NULL) {
safe_free(data);
return ERROR_NOT_ENOUGH_MEMORY;
}
- ascii_to_unistr((char *)*out_value, value, *out_max_value_len);
- *out_value_len=2*(1+strlen(value));
+ *out_value_len = (uint32)dos_PutUniCode((char *)*out_value, value, in_value_len, True);
*out_type=type;