winspool.drv: Turn macros into helper functions.

Dmitry Timoshkov dmitry at baikal.ru
Mon Feb 11 02:47:35 CST 2013


---
 dlls/winspool.drv/tests/info.c | 120 ++++++++++++++++++++---------------------
 1 file changed, 57 insertions(+), 63 deletions(-)

diff --git a/dlls/winspool.drv/tests/info.c b/dlls/winspool.drv/tests/info.c
index 4da39c8..25ee9c4 100644
--- a/dlls/winspool.drv/tests/info.c
+++ b/dlls/winspool.drv/tests/info.c
@@ -92,31 +92,35 @@ static LPSTR tempfileA = NULL;
 static LPWSTR tempdirW = NULL;
 static LPWSTR tempfileW = NULL;
 
-/* ################################ */
-/* report common behavior only once */
-static DWORD deactivated_spooler_reported = 0;
-#define RETURN_ON_DEACTIVATED_SPOOLER(res) \
-    if ((res == 0) && (GetLastError() == RPC_S_SERVER_UNAVAILABLE)) \
-    { \
-        if (!deactivated_spooler_reported) { \
-            deactivated_spooler_reported++; \
-            skip("The service 'Spooler' is required for many tests\n"); \
-        } \
-        return; \
+static BOOL is_spooler_deactivated(DWORD res, DWORD lasterror)
+{
+    if (!res && lasterror == RPC_S_SERVER_UNAVAILABLE)
+    {
+        static int deactivated_spooler_reported = 0;
+        if (!deactivated_spooler_reported)
+        {
+            deactivated_spooler_reported = 1;
+            skip("The service 'Spooler' is required for many tests\n");
+        }
+        return TRUE;
     }
+    return FALSE;
+}
 
-static DWORD access_denied_reported = 0;
-#define RETURN_ON_ACCESS_DENIED(res) \
-    if ((res == 0) && (GetLastError() == ERROR_ACCESS_DENIED)) \
-    { \
-        if (!access_denied_reported) { \
-            access_denied_reported++; \
-            skip("More access rights are required for many tests\n"); \
-        } \
-        return; \
+static BOOL is_access_denied(DWORD res, DWORD lasterror)
+{
+    if (!res && lasterror == ERROR_ACCESS_DENIED)
+    {
+        static int access_denied_reported = 0;
+        if (!access_denied_reported)
+        {
+            access_denied_reported = 1;
+            skip("More access rights are required for many tests\n");
+        }
+        return TRUE;
     }
-
-/* ################################ */
+    return FALSE;
+}
 
 static BOOL on_win9x = FALSE;
 
@@ -349,8 +353,8 @@ static void test_AddMonitor(void)
     ZeroMemory(&mi2a, sizeof(MONITOR_INFO_2A));
     SetLastError(MAGIC_DEAD);
     res = AddMonitorA(NULL, 2, (LPBYTE) &mi2a);
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
-    RETURN_ON_ACCESS_DENIED(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
+    if (is_access_denied(res, GetLastError())) return;
 
     /* NT: ERROR_INVALID_PARAMETER,  9x: ERROR_INVALID_ENVIRONMENT */
     ok(!res && ((GetLastError() == ERROR_INVALID_PARAMETER) ||
@@ -463,7 +467,7 @@ static void test_AddPort(void)
 
     SetLastError(0xdeadbeef);
     res = AddPortA(NULL, 0, NULL);
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
     /* NT: RPC_X_NULL_REF_POINTER, 9x: ERROR_INVALID_PARAMETER */
     ok( !res && ((GetLastError() == RPC_X_NULL_REF_POINTER) || 
                  (GetLastError() == ERROR_INVALID_PARAMETER)),
@@ -474,7 +478,7 @@ static void test_AddPort(void)
     SetLastError(0xdeadbeef);
     res = AddPortA(NULL, 0, empty);
     /* Allowed only for (Printer-)Administrators */
-    RETURN_ON_ACCESS_DENIED(res)
+    if (is_access_denied(res, GetLastError())) return;
 
     /* XP: ERROR_NOT_SUPPORTED, NT351 and 9x: ERROR_INVALID_PARAMETER */
     ok( !res && ((GetLastError() == ERROR_NOT_SUPPORTED) || 
@@ -512,7 +516,7 @@ static void test_AddPortEx(void)
     pi.pPortName = tempfileA;
     SetLastError(0xdeadbeef);
     res = pAddPortExA(NULL, 1, (LPBYTE) &pi, LocalPortA);
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
 
     /* Allowed only for (Printer-)Administrators.
        W2K+XP: ERROR_INVALID_PARAMETER  */
@@ -615,7 +619,7 @@ static void test_ConfigurePort(void)
 
     SetLastError(0xdeadbeef);
     res = ConfigurePortA(NULL, 0, NULL);
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
     /* NT: RPC_X_NULL_REF_POINTER, 9x: ERROR_INVALID_PARAMETER */
     ok( !res && ((GetLastError() == RPC_X_NULL_REF_POINTER) || 
                  (GetLastError() == ERROR_INVALID_PARAMETER)),
@@ -625,7 +629,7 @@ static void test_ConfigurePort(void)
     SetLastError(0xdeadbeef);
     res = ConfigurePortA(NULL, 0, empty);
     /* Allowed only for (Printer-)Administrators */
-    RETURN_ON_ACCESS_DENIED(res)
+    if (is_access_denied(res, GetLastError())) return;
 
     /* XP: ERROR_NOT_SUPPORTED, NT351 and 9x: ERROR_INVALID_PARAMETER */
     ok( !res && ((GetLastError() == ERROR_NOT_SUPPORTED) || 
@@ -761,12 +765,12 @@ static void test_DeletePort(void)
 
     SetLastError(0xdeadbeef);
     res = DeletePortA(NULL, 0, NULL);
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
 
     SetLastError(0xdeadbeef);
     res = DeletePortA(NULL, 0, empty);
     /* Allowed only for (Printer-)Administrators */
-    RETURN_ON_ACCESS_DENIED(res)
+    if (is_access_denied(res, GetLastError())) return;
 
     /* XP: ERROR_NOT_SUPPORTED, NT351 and 9x: ERROR_INVALID_PARAMETER */
     ok( !res && ((GetLastError() == ERROR_NOT_SUPPORTED) || 
@@ -804,7 +808,7 @@ static void test_EnumForms(LPSTR pName)
     PFORM_INFO_2A pFI_2a;
 
     res = OpenPrinter(pName, &hprinter, NULL);
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
     if (!res || !hprinter)
     {
         /* opening the local Printserver is not supported on win9x */
@@ -935,9 +939,7 @@ static void test_EnumMonitors(void)
         pcReturned = MAGIC_DEAD;
         SetLastError(MAGIC_DEAD);
         res = EnumMonitorsA(NULL, level, NULL, 0, &cbBuf, &pcReturned);
-
-        RETURN_ON_DEACTIVATED_SPOOLER(res)
-
+        if (is_spooler_deactivated(res, GetLastError())) return;
         /* not implemented yet in wine */
         if (!res && (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)) continue;
 
@@ -1046,7 +1048,7 @@ static void test_EnumPorts(void)
         pcReturned = 0xdeadbeef;
         SetLastError(0xdeadbeef);
         res = EnumPortsA(NULL, level, NULL, 0, &cbBuf, &pcReturned);
-        RETURN_ON_DEACTIVATED_SPOOLER(res)
+        if (is_spooler_deactivated(res, GetLastError())) return;
 
         /* use only a short test when testing an invalid level */
         if(!level || (level > 2)) {
@@ -1145,7 +1147,7 @@ static void test_EnumPrinterDrivers(void)
         pcReturned = 0xdeadbeef;
         SetLastError(0xdeadbeef);
         res = EnumPrinterDriversA(NULL, NULL, level, NULL, 0, &cbBuf, &pcReturned);
-        RETURN_ON_DEACTIVATED_SPOOLER(res)
+        if (is_spooler_deactivated(res, GetLastError())) return;
 
         /* use only a short test when testing an invalid level */
         if(!level || (level == 7) || (level > 8)) {
@@ -1291,7 +1293,7 @@ static void test_EnumPrintProcessors(void)
     pcReturned = 0xdeadbeef;
     SetLastError(0xdeadbeef);
     res = EnumPrintProcessorsA(NULL, NULL, 1, NULL, 0, &cbBuf, &pcReturned);
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
 
     if (res && !cbBuf) {
         skip("No Printprocessor installed\n");
@@ -1485,10 +1487,11 @@ static void test_GetPrinterDriverDirectory(void)
 
     SetLastError(MAGIC_DEAD);
     res = GetPrinterDriverDirectoryA( NULL, NULL, 1, NULL, 0, &cbBuf);
+    if (is_spooler_deactivated(res, GetLastError())) return;
+
     trace("first call returned 0x%04x, with %d: buffer size 0x%08x\n",
-    res, GetLastError(), cbBuf);
+          res, GetLastError(), cbBuf);
 
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
     ok((res == 0) && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
         "returned %d with lasterror=%d (expected '0' with "
         "ERROR_INSUFFICIENT_BUFFER)\n", res, GetLastError());
@@ -1639,8 +1642,8 @@ static void test_GetPrintProcessorDirectory(void)
 
     SetLastError(0xdeadbeef);
     res = GetPrintProcessorDirectoryA(NULL, NULL, 1, NULL, 0, &cbBuf);
-    /* The deactivated spooler is caught here on NT3.51 */
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
+
     ok( !res && (GetLastError() == ERROR_INSUFFICIENT_BUFFER),
         "returned %d with %d (expected '0' with ERROR_INSUFFICIENT_BUFFER)\n",
         res, GetLastError());
@@ -1776,9 +1779,9 @@ static void test_OpenPrinter(void)
     DWORD               res;
 
     SetLastError(MAGIC_DEAD);
-    res = OpenPrinter(NULL, NULL, NULL);    
-    /* The deactivated spooler is caught here on NT3.51 */
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    res = OpenPrinter(NULL, NULL, NULL);
+    if (is_spooler_deactivated(res, GetLastError())) return;
+
     ok(!res && (GetLastError() == ERROR_INVALID_PARAMETER),
         "returned %d with %d (expected '0' with ERROR_INVALID_PARAMETER)\n",
         res, GetLastError());
@@ -1788,8 +1791,7 @@ static void test_OpenPrinter(void)
     hprinter = (HANDLE) MAGIC_DEAD;
     SetLastError(MAGIC_DEAD);
     res = OpenPrinter(NULL, &hprinter, NULL);
-    /* The deactivated spooler is caught here on XPsp2 */
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
     ok(res || (!res && GetLastError() == ERROR_INVALID_PARAMETER),
         "returned %d with %d (expected '!=0' or '0' with ERROR_INVALID_PARAMETER)\n",
         res, GetLastError());
@@ -1891,7 +1893,7 @@ static void test_OpenPrinter(void)
         SetLastError(MAGIC_DEAD);
         res = OpenPrinter(default_printer, &hprinter, &defaults);
         /* stop here, when a remote Printserver has no RPC-Service running */
-        RETURN_ON_DEACTIVATED_SPOOLER(res)
+        if (is_spooler_deactivated(res, GetLastError())) return;
         ok(res || ((GetLastError() == ERROR_INVALID_DATATYPE) ||
                    (GetLastError() == ERROR_ACCESS_DENIED)),
             "returned %d with %d (expected '!=0' or '0' with: "
@@ -1950,9 +1952,7 @@ static void test_SetDefaultPrinter(void)
     /* first part: with the default Printer */
     SetLastError(MAGIC_DEAD);
     res = pSetDefaultPrinterA("no_printer_with_this_name");
-
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
-    /* spooler is running or we have no spooler here*/
+    if (is_spooler_deactivated(res, GetLastError())) return;
 
     /* Not implemented in wine */
     if (!res && (GetLastError() == ERROR_CALL_NOT_IMPLEMENTED)) {
@@ -1998,13 +1998,8 @@ static void test_SetDefaultPrinter(void)
     WriteProfileStringA("windows", "device", NULL);    
     SetLastError(MAGIC_DEAD);
     res = pSetDefaultPrinterA("");
-    if ((res == 0) && (GetLastError() == RPC_S_SERVER_UNAVAILABLE))     {
-        if (!deactivated_spooler_reported) {
-            deactivated_spooler_reported++;
-            skip("The service 'Spooler' is required for many tests\n");
-        }
+    if (is_spooler_deactivated(res, GetLastError()))
         goto restore_old_printer;
-    }
 
     /* we get ERROR_INVALID_PRINTER_NAME when no printer is installed */
     ok(res || (!res && (GetLastError() == ERROR_INVALID_PRINTER_NAME)),
@@ -2062,8 +2057,8 @@ static void test_XcvDataW_MonitorUI(void)
     hXcv = NULL;
     SetLastError(0xdeadbeef);
     res = OpenPrinter(xcv_localport, &hXcv, &pd);
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
-    RETURN_ON_ACCESS_DENIED(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
+    if (is_access_denied(res, GetLastError())) return;
 
     ok(res, "returned %d with %u and handle %p (expected '!= 0')\n", res, GetLastError(), hXcv);
     if (!res) return;
@@ -2180,9 +2175,8 @@ static void test_XcvDataW_PortIsValid(void)
     hXcv = NULL;
     SetLastError(0xdeadbeef);
     res = OpenPrinter(xcv_localport, &hXcv, &pd);
-
-    RETURN_ON_DEACTIVATED_SPOOLER(res)
-    RETURN_ON_ACCESS_DENIED(res)
+    if (is_spooler_deactivated(res, GetLastError())) return;
+    if (is_access_denied(res, GetLastError())) return;
 
     ok(res, "returned %d with %u and handle %p (expected '!= 0')\n", res, GetLastError(), hXcv);
     if (!res) return;
@@ -2701,7 +2695,7 @@ static void test_EnumPrinters(void)
     SetLastError(0xdeadbeef);
     neededA = -1;
     ret = EnumPrintersA(PRINTER_ENUM_LOCAL, NULL, 2, NULL, 0, &neededA, &num);
-    RETURN_ON_DEACTIVATED_SPOOLER(ret)
+    if (is_spooler_deactivated(ret, GetLastError())) return;
     if (!ret)
     {
         /* We have 1 or more printers */
-- 
1.8.1.3




More information about the wine-patches mailing list