s3-spoolss: rename temporary convert_devicemode_new function.
authorGünther Deschner <gd@samba.org>
Tue, 17 Mar 2009 13:43:50 +0000 (14:43 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 17 Mar 2009 17:39:17 +0000 (18:39 +0100)
Guenther

source3/include/proto.h
source3/printing/nt_printing.c
source3/rpc_server/srv_spoolss_nt.c

index f837a31cfcdb679c02828a8bfd614af41f388bc6..ddc6ed1fad64f422eb1b2536d081f76468199292 100644 (file)
@@ -5956,8 +5956,9 @@ void reset_all_printerdata(struct messaging_context *msg,
                           uint32_t msg_type,
                           struct server_id server_id,
                           DATA_BLOB *data);
-bool convert_devicemode(const char *printername, const DEVICEMODE *devmode,
-                               NT_DEVICEMODE **pp_nt_devmode);
+bool convert_devicemode(const char *printername,
+                       const struct spoolss_DeviceMode *devmode,
+                       NT_DEVICEMODE **pp_nt_devmode);
 WERROR set_printer_dataex( NT_PRINTER_INFO_LEVEL *printer, const char *key, const char *value,
                                   uint32 type, uint8 *data, int real_len  );
 void spoolss_notify_server_name(int snum,
index 12e645f18a29393aaacaf2e278877b52e664e6b4..6b6803dd3b91808b9d339e5da29cebd0468ec97a 100644 (file)
@@ -4583,24 +4583,25 @@ static uint32 update_driver_init(NT_PRINTER_INFO_LEVEL *printer, uint32 level)
  got to keep the endians happy :).
 ****************************************************************************/
 
-static bool convert_driver_init( TALLOC_CTX *ctx, NT_DEVICEMODE *nt_devmode, uint8 *data, uint32 data_len )
+static bool convert_driver_init(TALLOC_CTX *mem_ctx, NT_DEVICEMODE *nt_devmode,
+                               const uint8_t *data, uint32_t data_len)
 {
-       bool       result = False;
-       prs_struct ps;
-       DEVICEMODE devmode;
+       struct spoolss_DeviceMode devmode;
+       enum ndr_err_code ndr_err;
+       DATA_BLOB blob;
 
        ZERO_STRUCT(devmode);
 
-       prs_init_empty(&ps, ctx, UNMARSHALL);
-       ps.data_p      = (char *)data;
-       ps.buffer_size = data_len;
+       blob = data_blob_const(data, data_len);
 
-       if (spoolss_io_devmode("phantom DEVMODE", &ps, 0, &devmode))
-               result = convert_devicemode("", &devmode, &nt_devmode);
-       else
-               DEBUG(10,("convert_driver_init: error parsing DEVMODE\n"));
+       ndr_err = ndr_pull_struct_blob(&blob, mem_ctx, NULL, &devmode,
+                       (ndr_pull_flags_fn_t)ndr_pull_spoolss_DeviceMode);
+       if (!NDR_ERR_CODE_IS_SUCCESS(ndr_err)) {
+               DEBUG(10,("convert_driver_init: error parsing spoolss_DeviceMode\n"));
+               return false;
+       }
 
-       return result;
+       return convert_devicemode("", &devmode, &nt_devmode);
 }
 
 /****************************************************************************
index 0a0c11db624a5b516634b1eaeac65e9f4cb003e5..88b8385c57c16090bfebba0bdea7aa3419638aa2 100644 (file)
@@ -1455,12 +1455,11 @@ WERROR _spoolss_OpenPrinter(pipes_struct *p,
 }
 
 /********************************************************************
- FIXME: temporary convert_devicemode_new function
  ********************************************************************/
 
-static bool convert_devicemode_new(const char *printername,
-                                  struct spoolss_DeviceMode *devmode,
-                                  NT_DEVICEMODE **pp_nt_devmode)
+bool convert_devicemode(const char *printername,
+                       const struct spoolss_DeviceMode *devmode,
+                       NT_DEVICEMODE **pp_nt_devmode)
 {
        NT_DEVICEMODE *nt_devmode = *pp_nt_devmode;
 
@@ -1470,7 +1469,7 @@ static bool convert_devicemode_new(const char *printername,
         */
 
        if (nt_devmode == NULL) {
-               DEBUG(5, ("convert_devicemode_new: allocating a generic devmode\n"));
+               DEBUG(5, ("convert_devicemode: allocating a generic devmode\n"));
                if ((nt_devmode = construct_nt_devicemode(printername)) == NULL)
                        return false;
        }
@@ -1732,12 +1731,11 @@ WERROR _spoolss_OpenPrinterEx(pipes_struct *p,
         * save it here in case we get a job submission on this handle
         */
 
-        if ( (Printer->printer_type != SPLHND_SERVER)
-               && r->in.devmode_ctr.devmode )
-        {
-               convert_devicemode_new(Printer->sharename,
-                                      r->in.devmode_ctr.devmode,
-                                      &Printer->nt_devmode);
+        if ((Printer->printer_type != SPLHND_SERVER) &&
+            r->in.devmode_ctr.devmode) {
+               convert_devicemode(Printer->sharename,
+                                  r->in.devmode_ctr.devmode,
+                                  &Printer->nt_devmode);
         }
 
 #if 0  /* JERRY -- I'm doubtful this is really effective */
@@ -1993,76 +1991,6 @@ static bool convert_printer_driver_info(const struct spoolss_AddDriverInfoCtr *r
        return true;
 }
 
-bool convert_devicemode(const char *printername, const DEVICEMODE *devmode,
-                               NT_DEVICEMODE **pp_nt_devmode)
-{
-       NT_DEVICEMODE *nt_devmode = *pp_nt_devmode;
-
-       /*
-        * Ensure nt_devmode is a valid pointer
-        * as we will be overwriting it.
-        */
-
-       if (nt_devmode == NULL) {
-               DEBUG(5, ("convert_devicemode: allocating a generic devmode\n"));
-               if ((nt_devmode = construct_nt_devicemode(printername)) == NULL)
-                       return False;
-       }
-
-       rpcstr_pull(nt_devmode->devicename,devmode->devicename.buffer, 31, -1, 0);
-       rpcstr_pull(nt_devmode->formname,devmode->formname.buffer, 31, -1, 0);
-
-       nt_devmode->specversion=devmode->specversion;
-       nt_devmode->driverversion=devmode->driverversion;
-       nt_devmode->size=devmode->size;
-       nt_devmode->fields=devmode->fields;
-       nt_devmode->orientation=devmode->orientation;
-       nt_devmode->papersize=devmode->papersize;
-       nt_devmode->paperlength=devmode->paperlength;
-       nt_devmode->paperwidth=devmode->paperwidth;
-       nt_devmode->scale=devmode->scale;
-       nt_devmode->copies=devmode->copies;
-       nt_devmode->defaultsource=devmode->defaultsource;
-       nt_devmode->printquality=devmode->printquality;
-       nt_devmode->color=devmode->color;
-       nt_devmode->duplex=devmode->duplex;
-       nt_devmode->yresolution=devmode->yresolution;
-       nt_devmode->ttoption=devmode->ttoption;
-       nt_devmode->collate=devmode->collate;
-
-       nt_devmode->logpixels=devmode->logpixels;
-       nt_devmode->bitsperpel=devmode->bitsperpel;
-       nt_devmode->pelswidth=devmode->pelswidth;
-       nt_devmode->pelsheight=devmode->pelsheight;
-       nt_devmode->displayflags=devmode->displayflags;
-       nt_devmode->displayfrequency=devmode->displayfrequency;
-       nt_devmode->icmmethod=devmode->icmmethod;
-       nt_devmode->icmintent=devmode->icmintent;
-       nt_devmode->mediatype=devmode->mediatype;
-       nt_devmode->dithertype=devmode->dithertype;
-       nt_devmode->reserved1=devmode->reserved1;
-       nt_devmode->reserved2=devmode->reserved2;
-       nt_devmode->panningwidth=devmode->panningwidth;
-       nt_devmode->panningheight=devmode->panningheight;
-
-       /*
-        * Only change private and driverextra if the incoming devmode
-        * has a new one. JRA.
-        */
-
-       if ((devmode->driverextra != 0) && (devmode->dev_private != NULL)) {
-               SAFE_FREE(nt_devmode->nt_dev_private);
-               nt_devmode->driverextra=devmode->driverextra;
-               if((nt_devmode->nt_dev_private=SMB_MALLOC_ARRAY(uint8, nt_devmode->driverextra)) == NULL)
-                       return False;
-               memcpy(nt_devmode->nt_dev_private, devmode->dev_private, nt_devmode->driverextra);
-       }
-
-       *pp_nt_devmode = nt_devmode;
-
-       return True;
-}
-
 /********************************************************************
  * _spoolss_enddocprinter_internal.
  ********************************************************************/
@@ -5948,9 +5876,8 @@ static WERROR update_printer(pipes_struct *p, POLICY_HND *handle,
                   convert it and link it*/
 
                DEBUGADD(8,("update_printer: Converting the devicemode struct\n"));
-               if (!convert_devicemode_new(printer->info_2->printername,
-                                           devmode,
-                                           &printer->info_2->devmode)) {
+               if (!convert_devicemode(printer->info_2->printername, devmode,
+                                       &printer->info_2->devmode)) {
                        result =  WERR_NOMEM;
                        goto done;
                }
@@ -7428,10 +7355,10 @@ static WERROR spoolss_addprinterex_level_2(pipes_struct *p,
                */
                DEBUGADD(10, ("spoolss_addprinterex_level_2: devmode included, converting\n"));
 
-               if (!convert_devicemode_new(printer->info_2->printername,
-                                           devmode,
-                                           &printer->info_2->devmode))
+               if (!convert_devicemode(printer->info_2->printername, devmode,
+                                       &printer->info_2->devmode)) {
                        return  WERR_NOMEM;
+               }
        }
 
        /* write the ASCII on disk */