Moved a bunch of functions out of libwine/kernel/gdi into USER.

diff --git a/dlls/user/misc.c b/dlls/user/misc.c
new file mode 100644
index 0000000..fb4a07e
--- /dev/null
+++ b/dlls/user/misc.c
@@ -0,0 +1,209 @@
+/*
+ * Misc USER functions
+ *
+ * Copyright 1995 Thomas Sandford
+ * Copyright 1997 Marcus Meissner
+ */
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winuser.h"
+#include "winerror.h"
+
+#include "debugtools.h"
+
+DEFAULT_DEBUG_CHANNEL(win);
+
+/**********************************************************************
+ * SetLastErrorEx [USER32.485]  Sets the last-error code.
+ *
+ * RETURNS
+ *    None.
+ */
+void WINAPI SetLastErrorEx(
+    DWORD error, /* [in] Per-thread error code */
+    DWORD type)  /* [in] Error type */
+{
+    TRACE("(0x%08lx, 0x%08lx)\n", error,type);
+    switch(type) {
+        case 0:
+            break;
+        case SLE_ERROR:
+        case SLE_MINORERROR:
+        case SLE_WARNING:
+            /* Fall through for now */
+        default:
+            FIXME("(error=%08lx, type=%08lx): Unhandled type\n", error,type);
+            break;
+    }
+    SetLastError( error );
+}
+
+
+/******************************************************************************
+ * GetProcessWindowStation [USER32.280]  Returns handle of window station
+ *
+ * NOTES
+ *    Docs say the return value is HWINSTA
+ *
+ * RETURNS
+ *    Success: Handle to window station associated with calling process
+ *    Failure: NULL
+ */
+DWORD WINAPI GetProcessWindowStation(void)
+{
+    FIXME("(void): stub\n");
+    return 1;
+}
+
+
+/******************************************************************************
+ * GetThreadDesktop [USER32.295]  Returns handle to desktop
+ *
+ * NOTES
+ *    Docs say the return value is HDESK
+ *
+ * PARAMS
+ *    dwThreadId [I] Thread identifier
+ *
+ * RETURNS
+ *    Success: Handle to desktop associated with specified thread
+ *    Failure: NULL
+ */
+DWORD WINAPI GetThreadDesktop( DWORD dwThreadId )
+{
+    FIXME("(%lx): stub\n",dwThreadId);
+    return 1;
+}
+
+
+/******************************************************************************
+ * SetDebugErrorLevel [USER32.475]
+ * Sets the minimum error level for generating debugging events
+ *
+ * PARAMS
+ *    dwLevel [I] Debugging error level
+ */
+VOID WINAPI SetDebugErrorLevel( DWORD dwLevel )
+{
+    FIXME("(%ld): stub\n", dwLevel);
+}
+
+
+/******************************************************************************
+ *                    GetProcessDefaultLayout [USER32.802]
+ *
+ * Gets the default layout for parentless windows.
+ * Right now, just returns 0 (left-to-right).
+ *
+ * RETURNS
+ *    Success: Nonzero
+ *    Failure: Zero
+ *
+ * BUGS
+ *    No RTL
+ */
+BOOL WINAPI GetProcessDefaultLayout( DWORD *pdwDefaultLayout )
+{
+    if ( !pdwDefaultLayout ) {
+        SetLastError( ERROR_INVALID_PARAMETER );
+        return FALSE;
+     }
+    FIXME( "( %p ): No BiDi\n", pdwDefaultLayout );
+    *pdwDefaultLayout = 0;
+    return TRUE;
+}
+
+
+/******************************************************************************
+ *                    SetProcessDefaultLayout [USER32.803]
+ *
+ * Sets the default layout for parentless windows.
+ * Right now, only accepts 0 (left-to-right).
+ *
+ * RETURNS
+ *    Success: Nonzero
+ *    Failure: Zero
+ *
+ * BUGS
+ *    No RTL
+ */
+BOOL WINAPI SetProcessDefaultLayout( DWORD dwDefaultLayout )
+{
+    if ( dwDefaultLayout == 0 )
+        return TRUE;
+    FIXME( "( %08lx ): No BiDi\n", dwDefaultLayout );
+    SetLastError( ERROR_CALL_NOT_IMPLEMENTED );
+    return FALSE;
+}
+
+
+/******************************************************************************
+ * OpenDesktopA [USER32.408]
+ *
+ * NOTES
+ *    Return type should be HDESK
+ *
+ *    Not supported on Win9x - returns NULL and calls SetLastError.
+ */
+HANDLE WINAPI OpenDesktopA( LPCSTR lpszDesktop, DWORD dwFlags, 
+                                BOOL fInherit, DWORD dwDesiredAccess )
+{
+    FIXME("(%s,%lx,%i,%lx): stub\n",debugstr_a(lpszDesktop),dwFlags,
+          fInherit,dwDesiredAccess);
+
+    SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
+    return 0;
+}
+
+
+/******************************************************************************
+ *		SetUserObjectInformationA   (USER32.512)
+ */
+BOOL WINAPI SetUserObjectInformationA( HANDLE hObj, INT nIndex, 
+				       LPVOID pvInfo, DWORD nLength )
+{
+    FIXME("(%x,%d,%p,%lx): stub\n",hObj,nIndex,pvInfo,nLength);
+    return TRUE;
+}
+
+/******************************************************************************
+ *		SetThreadDesktop   (USER32.510)
+ */
+BOOL WINAPI SetThreadDesktop( HANDLE hDesktop )
+{
+    FIXME("(%x): stub\n",hDesktop);
+    return TRUE;
+}
+
+
+/***********************************************************************
+ *           RegisterShellHookWindow			[USER32.459]
+ */
+HRESULT WINAPI RegisterShellHookWindow ( DWORD u )
+{
+    FIXME("0x%08lx stub\n",u);
+    return 0;
+}
+
+
+/***********************************************************************
+ *           DeregisterShellHookWindow			[USER32.132]
+ */
+HRESULT WINAPI DeregisterShellHookWindow ( DWORD u )
+{
+    FIXME("0x%08lx stub\n",u);
+    return 0;
+	
+}
+
+
+/***********************************************************************
+ *           RegisterTaskList   			[USER23.436]
+ */
+DWORD WINAPI RegisterTaskList (DWORD x)
+{
+    FIXME("0x%08lx\n",x);
+    return TRUE;
+}