Huw Davies : winspool: Forward the unicode forms functions to localspl.

Alexandre Julliard julliard at winehq.org
Wed May 19 14:55:14 CDT 2021


Module: wine
Branch: master
Commit: 7d4a7f855760a1d6d27a80cfdb39ec14821e219b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=7d4a7f855760a1d6d27a80cfdb39ec14821e219b

Author: Huw Davies <huw at codeweavers.com>
Date:   Wed May 19 14:43:08 2021 +0100

winspool: Forward the unicode forms functions to localspl.

Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/localspl/provider.c | 41 ++++++++++++++++++++---
 dlls/winspool.drv/info.c | 87 +++++++++++++++++++++++++++++++++++++-----------
 2 files changed, 103 insertions(+), 25 deletions(-)

diff --git a/dlls/localspl/provider.c b/dlls/localspl/provider.c
index 7dde72d323d..51e0cedadb1 100644
--- a/dlls/localspl/provider.c
+++ b/dlls/localspl/provider.c
@@ -2506,6 +2506,37 @@ static BOOL WINAPI fpXcvData(HANDLE hXcv, LPCWSTR pszDataName, PBYTE pInputData,
     return TRUE;
 }
 
+static BOOL WINAPI fpAddForm( HANDLE printer, DWORD level, BYTE *form )
+{
+    FIXME( "(%p, %d, %p): stub\n", printer, level, form );
+    return TRUE;
+}
+
+static BOOL WINAPI fpDeleteForm( HANDLE printer, WCHAR *name )
+{
+    FIXME( "(%p, %s): stub\n", printer, debugstr_w( name ) );
+    return TRUE;
+}
+
+static BOOL WINAPI fpGetForm( HANDLE printer, WCHAR *name, DWORD level, BYTE *form, DWORD size, DWORD *needed )
+{
+    FIXME( "(%p, %s, %d, %p, %d, %p): stub\n", printer, debugstr_w( name ), level, form, size, needed );
+    return FALSE;
+}
+
+static BOOL WINAPI fpSetForm( HANDLE printer, WCHAR *name, DWORD level, BYTE *form )
+{
+    FIXME( "(%p, %s, %d, %p): stub\n", printer, debugstr_w( name ), level, form );
+    return FALSE;
+}
+
+static BOOL WINAPI fpEnumForms( HANDLE printer, DWORD level, BYTE *form, DWORD size, DWORD *needed, DWORD *count )
+{
+    FIXME( "(%p, %d, %p, %d, %p, %p): stub\n", printer, level, form, size, needed, count );
+    SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
+    return FALSE;
+}
+
 static const PRINTPROVIDOR backend = {
         fpOpenPrinter,
         NULL,   /* fpSetJob */
@@ -2539,11 +2570,11 @@ static const PRINTPROVIDOR backend = {
         NULL,   /* fpSetPrinterData */
         NULL,   /* fpWaitForPrinterChange */
         fpClosePrinter,
-        NULL,   /* fpAddForm */
-        NULL,   /* fpDeleteForm */
-        NULL,   /* fpGetForm */
-        NULL,   /* fpSetForm */
-        NULL,   /* fpEnumForms */
+        fpAddForm,
+        fpDeleteForm,
+        fpGetForm,
+        fpSetForm,
+        fpEnumForms,
         fpEnumMonitors,
         fpEnumPorts,
         fpAddPort,
diff --git a/dlls/winspool.drv/info.c b/dlls/winspool.drv/info.c
index 4d0542d20e3..368584c2382 100644
--- a/dlls/winspool.drv/info.c
+++ b/dlls/winspool.drv/info.c
@@ -526,6 +526,13 @@ static LPCWSTR get_opened_printer_name(HANDLE hprn)
     return printer->name;
 }
 
+static HANDLE get_backend_handle( HANDLE hprn )
+{
+    opened_printer_t *printer = get_opened_printer( hprn );
+    if (!printer) return NULL;
+    return printer->backend_printer;
+}
+
 static DWORD open_printer_reg_key( const WCHAR *name, HKEY *key )
 {
     HKEY printers;
@@ -2904,10 +2911,19 @@ BOOL WINAPI AddFormA(HANDLE hPrinter, DWORD Level, LPBYTE pForm)
 /*****************************************************************************
  *          AddFormW  [WINSPOOL.@]
  */
-BOOL WINAPI AddFormW(HANDLE hPrinter, DWORD Level, LPBYTE pForm)
+BOOL WINAPI AddFormW( HANDLE printer, DWORD level, BYTE *form )
 {
-    FIXME("(%p,%d,%p): stub\n", hPrinter, Level, pForm);
-    return TRUE;
+    HANDLE handle = get_backend_handle( printer );
+
+    TRACE( "(%p, %d, %p)\n", printer, level, form );
+
+    if (!handle)
+    {
+        SetLastError( ERROR_INVALID_HANDLE );
+        return FALSE;
+    }
+
+    return backend->fpAddForm( handle, level, form );
 }
 
 /*****************************************************************************
@@ -3406,10 +3422,19 @@ BOOL WINAPI DeleteFormA(HANDLE hPrinter, LPSTR pFormName)
 /*****************************************************************************
  *          DeleteFormW  [WINSPOOL.@]
  */
-BOOL WINAPI DeleteFormW(HANDLE hPrinter, LPWSTR pFormName)
+BOOL WINAPI DeleteFormW( HANDLE printer, WCHAR *name )
 {
-    FIXME("(%p,%s): stub\n", hPrinter, debugstr_w(pFormName));
-    return TRUE;
+    HANDLE handle = get_backend_handle( printer );
+
+    TRACE( "(%p, %s)\n", printer, debugstr_w( name ) );
+
+    if (!handle)
+    {
+        SetLastError( ERROR_INVALID_HANDLE );
+        return FALSE;
+    }
+
+    return backend->fpDeleteForm( handle, name );
 }
 
 /*****************************************************************************
@@ -3880,12 +3905,19 @@ BOOL WINAPI GetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
 /*****************************************************************************
  *          GetFormW  [WINSPOOL.@]
  */
-BOOL WINAPI GetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
-                 LPBYTE pForm, DWORD cbBuf, LPDWORD pcbNeeded)
+BOOL WINAPI GetFormW( HANDLE printer, WCHAR *name, DWORD level, BYTE *form, DWORD size, DWORD *needed )
 {
-    FIXME("(%p,%s,%d,%p,%d,%p): stub\n",hPrinter,
-	  debugstr_w(pFormName),Level,pForm,cbBuf,pcbNeeded);
-    return FALSE;
+    HANDLE handle = get_backend_handle( printer );
+
+    TRACE( "(%p, %s, %d, %p, %d, %p)\n", printer, debugstr_w( name ), level, form, size, needed );
+
+    if (!handle)
+    {
+        SetLastError( ERROR_INVALID_HANDLE );
+        return FALSE;
+    }
+
+    return backend->fpGetForm( handle, name, level, form, size, needed );
 }
 
 /*****************************************************************************
@@ -3901,11 +3933,19 @@ BOOL WINAPI SetFormA(HANDLE hPrinter, LPSTR pFormName, DWORD Level,
 /*****************************************************************************
  *          SetFormW  [WINSPOOL.@]
  */
-BOOL WINAPI SetFormW(HANDLE hPrinter, LPWSTR pFormName, DWORD Level,
-                        LPBYTE pForm)
+BOOL WINAPI SetFormW( HANDLE printer, WCHAR *name, DWORD level, BYTE *form )
 {
-    FIXME("(%p,%p,%d,%p): stub\n",hPrinter,pFormName,Level,pForm);
-    return FALSE;
+    HANDLE handle = get_backend_handle( printer );
+
+    TRACE( "(%p, %s, %d, %p)\n", printer, debugstr_w( name ), level, form );
+
+    if (!handle)
+    {
+        SetLastError( ERROR_INVALID_HANDLE );
+        return FALSE;
+    }
+
+    return backend->fpSetForm( handle, name, level, form );
 }
 
 /*****************************************************************************
@@ -7363,12 +7403,19 @@ BOOL WINAPI EnumFormsA( HANDLE hPrinter, DWORD Level, LPBYTE pForm,
 /******************************************************************************
  *      EnumFormsW (WINSPOOL.@)
  */
-BOOL WINAPI EnumFormsW( HANDLE hPrinter, DWORD Level, LPBYTE pForm,
-    DWORD cbBuf, LPDWORD pcbNeeded, LPDWORD pcReturned )
+BOOL WINAPI EnumFormsW( HANDLE printer, DWORD level, BYTE *form, DWORD size, DWORD *needed, DWORD *count )
 {
-    FIXME("%p %x %p %x %p %p\n", hPrinter, Level, pForm, cbBuf, pcbNeeded, pcReturned);
-    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
-    return FALSE;
+    HANDLE handle = get_backend_handle( printer );
+
+    TRACE( "(%p, %d, %p, %d, %p, %p)\n", printer, level, form, size, needed, count );
+
+    if (!handle)
+    {
+        SetLastError( ERROR_INVALID_HANDLE );
+        return FALSE;
+    }
+
+    return backend->fpEnumForms( handle, level, form, size, needed, count );
 }
 
 /*****************************************************************************




More information about the wine-cvs mailing list