Commit cb1fc735 authored by Alexandre Julliard's avatar Alexandre Julliard

Changed the server to return STATUS_* error codes.

parent 2646fb60
...@@ -127,6 +127,13 @@ static inline DWORD copy_nameAtoW( LPWSTR dest, LPCSTR name ) ...@@ -127,6 +127,13 @@ static inline DWORD copy_nameAtoW( LPWSTR dest, LPCSTR name )
return ERROR_SUCCESS; return ERROR_SUCCESS;
} }
/* do a server call without setting the last error code */
static inline int reg_server_call( enum request req )
{
unsigned int res = server_call_noerr( req );
if (res) res = RtlNtStatusToDosError(res);
return res;
}
/****************************************************************************** /******************************************************************************
* RegCreateKeyExW [ADVAPI32.131] * RegCreateKeyExW [ADVAPI32.131]
...@@ -166,7 +173,7 @@ DWORD WINAPI RegCreateKeyExW( HKEY hkey, LPCWSTR name, DWORD reserved, LPWSTR cl ...@@ -166,7 +173,7 @@ DWORD WINAPI RegCreateKeyExW( HKEY hkey, LPCWSTR name, DWORD reserved, LPWSTR cl
if (req->name[0] == '\\') return ERROR_BAD_PATHNAME; if (req->name[0] == '\\') return ERROR_BAD_PATHNAME;
lstrcpynW( req->class, class ? class : (LPWSTR)"\0\0", lstrcpynW( req->class, class ? class : (LPWSTR)"\0\0",
server_remaining(req->class) / sizeof(WCHAR) ); server_remaining(req->class) / sizeof(WCHAR) );
if ((ret = server_call_noerr( REQ_CREATE_KEY )) == ERROR_SUCCESS) if ((ret = reg_server_call( REQ_CREATE_KEY )) == ERROR_SUCCESS)
{ {
*retkey = req->hkey; *retkey = req->hkey;
if (dispos) *dispos = req->created ? REG_CREATED_NEW_KEY : REG_OPENED_EXISTING_KEY; if (dispos) *dispos = req->created ? REG_CREATED_NEW_KEY : REG_OPENED_EXISTING_KEY;
...@@ -199,7 +206,7 @@ DWORD WINAPI RegCreateKeyExA( HKEY hkey, LPCSTR name, DWORD reserved, LPSTR clas ...@@ -199,7 +206,7 @@ DWORD WINAPI RegCreateKeyExA( HKEY hkey, LPCSTR name, DWORD reserved, LPSTR clas
if (req->name[0] == '\\') return ERROR_BAD_PATHNAME; if (req->name[0] == '\\') return ERROR_BAD_PATHNAME;
lstrcpynAtoW( req->class, class ? class : "", lstrcpynAtoW( req->class, class ? class : "",
server_remaining(req->class) / sizeof(WCHAR) ); server_remaining(req->class) / sizeof(WCHAR) );
if ((ret = server_call_noerr( REQ_CREATE_KEY )) == ERROR_SUCCESS) if ((ret = reg_server_call( REQ_CREATE_KEY )) == ERROR_SUCCESS)
{ {
*retkey = req->hkey; *retkey = req->hkey;
if (dispos) *dispos = req->created ? REG_CREATED_NEW_KEY : REG_OPENED_EXISTING_KEY; if (dispos) *dispos = req->created ? REG_CREATED_NEW_KEY : REG_OPENED_EXISTING_KEY;
...@@ -266,7 +273,7 @@ DWORD WINAPI RegOpenKeyExW( HKEY hkey, LPCWSTR name, DWORD reserved, REGSAM acce ...@@ -266,7 +273,7 @@ DWORD WINAPI RegOpenKeyExW( HKEY hkey, LPCWSTR name, DWORD reserved, REGSAM acce
req->access = access; req->access = access;
if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret;
if (req->name[0] == '\\') return ERROR_BAD_PATHNAME; if (req->name[0] == '\\') return ERROR_BAD_PATHNAME;
if ((ret = server_call_noerr( REQ_OPEN_KEY )) == ERROR_SUCCESS) *retkey = req->hkey; if ((ret = reg_server_call( REQ_OPEN_KEY )) == ERROR_SUCCESS) *retkey = req->hkey;
return ret; return ret;
} }
...@@ -288,7 +295,7 @@ DWORD WINAPI RegOpenKeyExA( HKEY hkey, LPCSTR name, DWORD reserved, REGSAM acces ...@@ -288,7 +295,7 @@ DWORD WINAPI RegOpenKeyExA( HKEY hkey, LPCSTR name, DWORD reserved, REGSAM acces
req->access = access; req->access = access;
if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret;
if (req->name[0] == '\\') return ERROR_BAD_PATHNAME; if (req->name[0] == '\\') return ERROR_BAD_PATHNAME;
if ((ret = server_call_noerr( REQ_OPEN_KEY )) == ERROR_SUCCESS) *retkey = req->hkey; if ((ret = reg_server_call( REQ_OPEN_KEY )) == ERROR_SUCCESS) *retkey = req->hkey;
return ret; return ret;
} }
...@@ -350,7 +357,7 @@ DWORD WINAPI RegEnumKeyExW( HKEY hkey, DWORD index, LPWSTR name, LPDWORD name_le ...@@ -350,7 +357,7 @@ DWORD WINAPI RegEnumKeyExW( HKEY hkey, DWORD index, LPWSTR name, LPDWORD name_le
req->hkey = hkey; req->hkey = hkey;
req->index = index; req->index = index;
if ((ret = server_call_noerr( REQ_ENUM_KEY )) != ERROR_SUCCESS) return ret; if ((ret = reg_server_call( REQ_ENUM_KEY )) != ERROR_SUCCESS) return ret;
len = lstrlenW( req->name ) + 1; len = lstrlenW( req->name ) + 1;
cls_len = lstrlenW( req->class ) + 1; cls_len = lstrlenW( req->class ) + 1;
...@@ -385,7 +392,7 @@ DWORD WINAPI RegEnumKeyExA( HKEY hkey, DWORD index, LPSTR name, LPDWORD name_len ...@@ -385,7 +392,7 @@ DWORD WINAPI RegEnumKeyExA( HKEY hkey, DWORD index, LPSTR name, LPDWORD name_len
req->hkey = hkey; req->hkey = hkey;
req->index = index; req->index = index;
if ((ret = server_call_noerr( REQ_ENUM_KEY )) != ERROR_SUCCESS) return ret; if ((ret = reg_server_call( REQ_ENUM_KEY )) != ERROR_SUCCESS) return ret;
len = lstrlenW( req->name ) + 1; len = lstrlenW( req->name ) + 1;
cls_len = lstrlenW( req->class ) + 1; cls_len = lstrlenW( req->class ) + 1;
...@@ -460,7 +467,7 @@ DWORD WINAPI RegQueryInfoKeyW( HKEY hkey, LPWSTR class, LPDWORD class_len, LPDWO ...@@ -460,7 +467,7 @@ DWORD WINAPI RegQueryInfoKeyW( HKEY hkey, LPWSTR class, LPDWORD class_len, LPDWO
return ERROR_INVALID_PARAMETER; return ERROR_INVALID_PARAMETER;
req->hkey = hkey; req->hkey = hkey;
if ((ret = server_call_noerr( REQ_QUERY_KEY_INFO )) != ERROR_SUCCESS) return ret; if ((ret = reg_server_call( REQ_QUERY_KEY_INFO )) != ERROR_SUCCESS) return ret;
if (class) if (class)
{ {
...@@ -502,7 +509,7 @@ DWORD WINAPI RegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDWOR ...@@ -502,7 +509,7 @@ DWORD WINAPI RegQueryInfoKeyA( HKEY hkey, LPSTR class, LPDWORD class_len, LPDWOR
return ERROR_INVALID_PARAMETER; return ERROR_INVALID_PARAMETER;
req->hkey = hkey; req->hkey = hkey;
if ((ret = server_call_noerr( REQ_QUERY_KEY_INFO )) != ERROR_SUCCESS) return ret; if ((ret = reg_server_call( REQ_QUERY_KEY_INFO )) != ERROR_SUCCESS) return ret;
if (class) if (class)
{ {
...@@ -542,7 +549,7 @@ DWORD WINAPI RegCloseKey( HKEY hkey ) ...@@ -542,7 +549,7 @@ DWORD WINAPI RegCloseKey( HKEY hkey )
struct close_key_request *req = get_req_buffer(); struct close_key_request *req = get_req_buffer();
TRACE( "(0x%x)\n", hkey ); TRACE( "(0x%x)\n", hkey );
req->hkey = hkey; req->hkey = hkey;
return server_call_noerr( REQ_CLOSE_KEY ); return reg_server_call( REQ_CLOSE_KEY );
} }
...@@ -567,7 +574,7 @@ DWORD WINAPI RegDeleteKeyW( HKEY hkey, LPCWSTR name ) ...@@ -567,7 +574,7 @@ DWORD WINAPI RegDeleteKeyW( HKEY hkey, LPCWSTR name )
req->hkey = hkey; req->hkey = hkey;
if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret;
if (req->name[0] == '\\') return ERROR_BAD_PATHNAME; if (req->name[0] == '\\') return ERROR_BAD_PATHNAME;
return server_call_noerr( REQ_DELETE_KEY ); return reg_server_call( REQ_DELETE_KEY );
} }
...@@ -584,7 +591,7 @@ DWORD WINAPI RegDeleteKeyA( HKEY hkey, LPCSTR name ) ...@@ -584,7 +591,7 @@ DWORD WINAPI RegDeleteKeyA( HKEY hkey, LPCSTR name )
req->hkey = hkey; req->hkey = hkey;
if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret;
if (req->name[0] == '\\') return ERROR_BAD_PATHNAME; if (req->name[0] == '\\') return ERROR_BAD_PATHNAME;
return server_call_noerr( REQ_DELETE_KEY ); return reg_server_call( REQ_DELETE_KEY );
} }
...@@ -633,7 +640,7 @@ DWORD WINAPI RegSetValueExW( HKEY hkey, LPCWSTR name, DWORD reserved, ...@@ -633,7 +640,7 @@ DWORD WINAPI RegSetValueExW( HKEY hkey, LPCWSTR name, DWORD reserved,
req->len = count; req->len = count;
if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret;
memcpy( req->data, data, count ); memcpy( req->data, data, count );
return server_call_noerr( REQ_SET_KEY_VALUE ); return reg_server_call( REQ_SET_KEY_VALUE );
} }
...@@ -671,7 +678,7 @@ DWORD WINAPI RegSetValueExA( HKEY hkey, LPCSTR name, DWORD reserved, DWORD type, ...@@ -671,7 +678,7 @@ DWORD WINAPI RegSetValueExA( HKEY hkey, LPCSTR name, DWORD reserved, DWORD type,
req->type = type; req->type = type;
req->len = count; req->len = count;
if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret;
return server_call_noerr( REQ_SET_KEY_VALUE ); return reg_server_call( REQ_SET_KEY_VALUE );
} }
...@@ -755,7 +762,7 @@ DWORD WINAPI RegQueryValueExW( HKEY hkey, LPCWSTR name, LPDWORD reserved, LPDWOR ...@@ -755,7 +762,7 @@ DWORD WINAPI RegQueryValueExW( HKEY hkey, LPCWSTR name, LPDWORD reserved, LPDWOR
req->hkey = hkey; req->hkey = hkey;
if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret;
if ((ret = server_call_noerr( REQ_GET_KEY_VALUE )) == ERROR_SUCCESS) if ((ret = reg_server_call( REQ_GET_KEY_VALUE )) == ERROR_SUCCESS)
{ {
if (type) *type = req->type; if (type) *type = req->type;
ret = copy_data( data, req->data, req->len, count, req->type ); ret = copy_data( data, req->data, req->len, count, req->type );
...@@ -783,7 +790,7 @@ DWORD WINAPI RegQueryValueExA( HKEY hkey, LPCSTR name, LPDWORD reserved, LPDWORD ...@@ -783,7 +790,7 @@ DWORD WINAPI RegQueryValueExA( HKEY hkey, LPCSTR name, LPDWORD reserved, LPDWORD
req->hkey = hkey; req->hkey = hkey;
if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret;
if ((ret = server_call_noerr( REQ_GET_KEY_VALUE )) == ERROR_SUCCESS) if ((ret = reg_server_call( REQ_GET_KEY_VALUE )) == ERROR_SUCCESS)
{ {
if (type) *type = req->type; if (type) *type = req->type;
ret = copy_data_WtoA( data, req->data, req->len, count, req->type ); ret = copy_data_WtoA( data, req->data, req->len, count, req->type );
...@@ -874,7 +881,7 @@ DWORD WINAPI RegEnumValueW( HKEY hkey, DWORD index, LPWSTR value, LPDWORD val_co ...@@ -874,7 +881,7 @@ DWORD WINAPI RegEnumValueW( HKEY hkey, DWORD index, LPWSTR value, LPDWORD val_co
req->hkey = hkey; req->hkey = hkey;
req->index = index; req->index = index;
if ((ret = server_call_noerr( REQ_ENUM_KEY_VALUE )) != ERROR_SUCCESS) return ret; if ((ret = reg_server_call( REQ_ENUM_KEY_VALUE )) != ERROR_SUCCESS) return ret;
len = lstrlenW( req->name ) + 1; len = lstrlenW( req->name ) + 1;
if (len > *val_count) return ERROR_MORE_DATA; if (len > *val_count) return ERROR_MORE_DATA;
...@@ -903,7 +910,7 @@ DWORD WINAPI RegEnumValueA( HKEY hkey, DWORD index, LPSTR value, LPDWORD val_cou ...@@ -903,7 +910,7 @@ DWORD WINAPI RegEnumValueA( HKEY hkey, DWORD index, LPSTR value, LPDWORD val_cou
req->hkey = hkey; req->hkey = hkey;
req->index = index; req->index = index;
if ((ret = server_call_noerr( REQ_ENUM_KEY_VALUE )) != ERROR_SUCCESS) return ret; if ((ret = reg_server_call( REQ_ENUM_KEY_VALUE )) != ERROR_SUCCESS) return ret;
len = lstrlenW( req->name ) + 1; len = lstrlenW( req->name ) + 1;
if (len > *val_count) return ERROR_MORE_DATA; if (len > *val_count) return ERROR_MORE_DATA;
...@@ -935,7 +942,7 @@ DWORD WINAPI RegDeleteValueW( HKEY hkey, LPCWSTR name ) ...@@ -935,7 +942,7 @@ DWORD WINAPI RegDeleteValueW( HKEY hkey, LPCWSTR name )
req->hkey = hkey; req->hkey = hkey;
if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameW( req->name, name )) != ERROR_SUCCESS) return ret;
return server_call_noerr( REQ_DELETE_KEY_VALUE ); return reg_server_call( REQ_DELETE_KEY_VALUE );
} }
...@@ -951,7 +958,7 @@ DWORD WINAPI RegDeleteValueA( HKEY hkey, LPCSTR name ) ...@@ -951,7 +958,7 @@ DWORD WINAPI RegDeleteValueA( HKEY hkey, LPCSTR name )
req->hkey = hkey; req->hkey = hkey;
if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret; if ((ret = copy_nameAtoW( req->name, name )) != ERROR_SUCCESS) return ret;
return server_call_noerr( REQ_DELETE_KEY_VALUE ); return reg_server_call( REQ_DELETE_KEY_VALUE );
} }
...@@ -983,7 +990,7 @@ LONG WINAPI RegLoadKeyW( HKEY hkey, LPCWSTR subkey, LPCWSTR filename ) ...@@ -983,7 +990,7 @@ LONG WINAPI RegLoadKeyW( HKEY hkey, LPCWSTR subkey, LPCWSTR filename )
req->hkey = hkey; req->hkey = hkey;
req->file = file; req->file = file;
if ((ret = copy_nameW( req->name, subkey )) != ERROR_SUCCESS) goto done; if ((ret = copy_nameW( req->name, subkey )) != ERROR_SUCCESS) goto done;
ret = server_call_noerr( REQ_LOAD_REGISTRY ); ret = reg_server_call( REQ_LOAD_REGISTRY );
CloseHandle( file ); CloseHandle( file );
done: done:
...@@ -1015,7 +1022,7 @@ LONG WINAPI RegLoadKeyA( HKEY hkey, LPCSTR subkey, LPCSTR filename ) ...@@ -1015,7 +1022,7 @@ LONG WINAPI RegLoadKeyA( HKEY hkey, LPCSTR subkey, LPCSTR filename )
req->hkey = hkey; req->hkey = hkey;
req->file = file; req->file = file;
if ((ret = copy_nameAtoW( req->name, subkey )) != ERROR_SUCCESS) goto done; if ((ret = copy_nameAtoW( req->name, subkey )) != ERROR_SUCCESS) goto done;
ret = server_call_noerr( REQ_LOAD_REGISTRY ); ret = reg_server_call( REQ_LOAD_REGISTRY );
CloseHandle( file ); CloseHandle( file );
done: done:
...@@ -1058,7 +1065,7 @@ LONG WINAPI RegSaveKeyA( HKEY hkey, LPCSTR file, LPSECURITY_ATTRIBUTES sa ) ...@@ -1058,7 +1065,7 @@ LONG WINAPI RegSaveKeyA( HKEY hkey, LPCSTR file, LPSECURITY_ATTRIBUTES sa )
req->hkey = hkey; req->hkey = hkey;
req->file = handle; req->file = handle;
ret = server_call_noerr( REQ_SAVE_REGISTRY ); ret = reg_server_call( REQ_SAVE_REGISTRY );
CloseHandle( handle ); CloseHandle( handle );
if (!ret) if (!ret)
{ {
......
...@@ -17,38 +17,7 @@ ...@@ -17,38 +17,7 @@
#include "crtdll.h" #include "crtdll.h"
#include "ntdll_misc.h" #include "ntdll_misc.h"
DEFAULT_DEBUG_CHANNEL(ntdll) DEFAULT_DEBUG_CHANNEL(ntdll);
/* helper to make the server functions return STATUS_ codes */
static NTSTATUS ErrorCodeToStatus (DWORD Error)
{
TRACE("err=%lu\n", Error);
switch (Error)
{
case NO_ERROR: return STATUS_SUCCESS;
case ERROR_INSUFFICIENT_BUFFER: return STATUS_BUFFER_TOO_SMALL;
case ERROR_FILE_NOT_FOUND: return STATUS_OBJECT_NAME_NOT_FOUND;
case ERROR_NO_MORE_ITEMS: return STATUS_NO_MORE_ENTRIES;
/*
return STATUS_INVALID_PARAMETER;
return STATUS_INVALID_HANDLE
return STATUS_ACCESS_DENIED
*/
/* case ERROR_MORE_DATA: return STATUS_BUFFER_OVERFLOW;
case ERROR_KEY_DELETED: return STATUS_KEY_DELETED;
case ERROR_CHILD_MUST_BE_VOLATILE: return STATUS_CHILD_MUST_BE_VOLATILE;
case ERROR_ACCESS_DENIED: return STATUS_ACCESS_DENIED;
case ERROR_NOT_REGISTRY_FILE: return STATUS_NOT_REGISTRY_FILE;
*/
default:
FIXME("Error code %lu not implemented\n", Error);
}
return STATUS_UNSUCCESSFUL;
}
#define nt_server_call(kind) (ret=ErrorCodeToStatus(server_call_noerr(kind)))
/* copy a key name into the request buffer */ /* copy a key name into the request buffer */
static inline NTSTATUS copy_nameU( LPWSTR Dest, PUNICODE_STRING Name, UINT Offset ) static inline NTSTATUS copy_nameU( LPWSTR Dest, PUNICODE_STRING Name, UINT Offset )
...@@ -163,7 +132,7 @@ NTSTATUS WINAPI NtCreateKey( ...@@ -163,7 +132,7 @@ NTSTATUS WINAPI NtCreateKey(
else else
req->class[0] = 0x0000; req->class[0] = 0x0000;
if (nt_server_call(REQ_CREATE_KEY) == STATUS_SUCCESS) if (!(ret = server_call_noerr(REQ_CREATE_KEY)))
{ {
*KeyHandle = req->hkey; *KeyHandle = req->hkey;
if (Disposition) *Disposition = req->created ? REG_CREATED_NEW_KEY : REG_OPENED_EXISTING_KEY; if (Disposition) *Disposition = req->created ? REG_CREATED_NEW_KEY : REG_OPENED_EXISTING_KEY;
...@@ -202,7 +171,7 @@ NTSTATUS WINAPI NtOpenKey( ...@@ -202,7 +171,7 @@ NTSTATUS WINAPI NtOpenKey(
if (copy_nameU( req->name, ObjectAttributes->ObjectName, ObjectNameOffset ) != STATUS_SUCCESS) if (copy_nameU( req->name, ObjectAttributes->ObjectName, ObjectNameOffset ) != STATUS_SUCCESS)
return STATUS_INVALID_PARAMETER; return STATUS_INVALID_PARAMETER;
if (nt_server_call(REQ_OPEN_KEY) == STATUS_SUCCESS) if (!(ret = server_call_noerr(REQ_OPEN_KEY)))
{ {
*KeyHandle = req->hkey; *KeyHandle = req->hkey;
} }
...@@ -256,7 +225,7 @@ NTSTATUS WINAPI NtEnumerateKey( ...@@ -256,7 +225,7 @@ NTSTATUS WINAPI NtEnumerateKey(
req->hkey = KeyHandle; req->hkey = KeyHandle;
req->index = Index; req->index = Index;
if (nt_server_call(REQ_ENUM_KEY) != STATUS_SUCCESS) return ret; if ((ret = server_call_noerr(REQ_ENUM_KEY)) != STATUS_SUCCESS) return ret;
switch (KeyInformationClass) switch (KeyInformationClass)
{ {
...@@ -338,7 +307,7 @@ NTSTATUS WINAPI NtQueryKey( ...@@ -338,7 +307,7 @@ NTSTATUS WINAPI NtQueryKey(
KeyHandle, KeyInformationClass, KeyInformation, Length, ResultLength); KeyHandle, KeyInformationClass, KeyInformation, Length, ResultLength);
req->hkey = KeyHandle; req->hkey = KeyHandle;
if ((ret=nt_server_call(REQ_QUERY_KEY_INFO)) != STATUS_SUCCESS) return ret; if ((ret = server_call_noerr(REQ_QUERY_KEY_INFO)) != STATUS_SUCCESS) return ret;
switch (KeyInformationClass) switch (KeyInformationClass)
{ {
...@@ -421,7 +390,7 @@ NTSTATUS WINAPI NtEnumerateValueKey( ...@@ -421,7 +390,7 @@ NTSTATUS WINAPI NtEnumerateValueKey(
req->hkey = KeyHandle; req->hkey = KeyHandle;
req->index = Index; req->index = Index;
if (nt_server_call(REQ_ENUM_KEY_VALUE) != STATUS_SUCCESS) return ret; if ((ret = server_call_noerr(REQ_ENUM_KEY_VALUE)) != STATUS_SUCCESS) return ret;
switch (KeyInformationClass) switch (KeyInformationClass)
{ {
...@@ -567,7 +536,7 @@ NTSTATUS WINAPI NtQueryValueKey( ...@@ -567,7 +536,7 @@ NTSTATUS WINAPI NtQueryValueKey(
req->hkey = KeyHandle; req->hkey = KeyHandle;
if (copy_nameU(req->name, ValueName, 0) != STATUS_SUCCESS) return STATUS_BUFFER_OVERFLOW; if (copy_nameU(req->name, ValueName, 0) != STATUS_SUCCESS) return STATUS_BUFFER_OVERFLOW;
if (nt_server_call(REQ_GET_KEY_VALUE) != STATUS_SUCCESS) return ret; if ((ret = server_call_noerr(REQ_GET_KEY_VALUE)) != STATUS_SUCCESS) return ret;
switch(KeyValueInformationClass) switch(KeyValueInformationClass)
{ {
......
...@@ -14,22 +14,7 @@ ...@@ -14,22 +14,7 @@
#include "ntddk.h" #include "ntddk.h"
#include "ntdll_misc.h" #include "ntdll_misc.h"
DEFAULT_DEBUG_CHANNEL(ntdll) DEFAULT_DEBUG_CHANNEL(ntdll);
#define nt_server_call(kind) (ret=ErrorCodeToStatus(server_call_noerr(kind)))
/* helper to make the server functions return STATUS_ codes */
static NTSTATUS ErrorCodeToStatus (DWORD Error)
{
TRACE("err=%lu\n", Error);
switch (Error)
{
case NO_ERROR: return STATUS_SUCCESS;
default:
FIXME("Error code %lu not implemented\n", Error);
}
return STATUS_UNSUCCESSFUL;
}
/* copy a key name into the request buffer */ /* copy a key name into the request buffer */
static inline NTSTATUS copy_nameU( LPWSTR Dest, PUNICODE_STRING Name ) static inline NTSTATUS copy_nameU( LPWSTR Dest, PUNICODE_STRING Name )
...@@ -72,8 +57,8 @@ NTSTATUS WINAPI NtCreateSemaphore( ...@@ -72,8 +57,8 @@ NTSTATUS WINAPI NtCreateSemaphore(
req->max = MaximumCount; req->max = MaximumCount;
req->inherit = ObjectAttributes->Attributes & OBJ_INHERIT; req->inherit = ObjectAttributes->Attributes & OBJ_INHERIT;
copy_nameU( req->name, ObjectAttributes->ObjectName ); copy_nameU( req->name, ObjectAttributes->ObjectName );
if (nt_server_call( REQ_CREATE_SEMAPHORE ) != STATUS_SUCCESS) return ret; if (!(ret = server_call_noerr( REQ_CREATE_SEMAPHORE )))
*SemaphoreHandle = req->handle; *SemaphoreHandle = req->handle;
return ret; return ret;
} }
...@@ -97,7 +82,7 @@ NTSTATUS WINAPI NtOpenSemaphore( ...@@ -97,7 +82,7 @@ NTSTATUS WINAPI NtOpenSemaphore(
req->access = DesiredAcces; req->access = DesiredAcces;
req->inherit = ObjectAttributes->Attributes & OBJ_INHERIT; req->inherit = ObjectAttributes->Attributes & OBJ_INHERIT;
copy_nameU( req->name, ObjectAttributes->ObjectName ); copy_nameU( req->name, ObjectAttributes->ObjectName );
if (nt_server_call( REQ_OPEN_SEMAPHORE ) != STATUS_SUCCESS) return -1; if ((ret = server_call_noerr( REQ_OPEN_SEMAPHORE )) != STATUS_SUCCESS) return -1;
return req->handle; return req->handle;
} }
...@@ -133,7 +118,7 @@ NTSTATUS WINAPI NtReleaseSemaphore( ...@@ -133,7 +118,7 @@ NTSTATUS WINAPI NtReleaseSemaphore(
req->handle = SemaphoreHandle; req->handle = SemaphoreHandle;
req->count = ReleaseCount; req->count = ReleaseCount;
if (nt_server_call( REQ_RELEASE_SEMAPHORE ) == STATUS_SUCCESS) if (!(ret = server_call_noerr( REQ_RELEASE_SEMAPHORE )))
{ {
if (PreviousCount) *PreviousCount = req->prev_count; if (PreviousCount) *PreviousCount = req->prev_count;
} }
...@@ -166,9 +151,8 @@ NTSTATUS WINAPI NtCreateEvent( ...@@ -166,9 +151,8 @@ NTSTATUS WINAPI NtCreateEvent(
req->initial_state = InitialState; req->initial_state = InitialState;
req->inherit = ObjectAttributes->Attributes & OBJ_INHERIT; req->inherit = ObjectAttributes->Attributes & OBJ_INHERIT;
copy_nameU( req->name, ObjectAttributes->ObjectName ); copy_nameU( req->name, ObjectAttributes->ObjectName );
if (nt_server_call( REQ_CREATE_EVENT ) != STATUS_SUCCESS) return ret; if (!(ret = server_call_noerr( REQ_CREATE_EVENT ))) *EventHandle = req->handle;
*EventHandle = req->handle; return ret;
return STATUS_SUCCESS;
} }
/****************************************************************************** /******************************************************************************
...@@ -190,8 +174,7 @@ NTSTATUS WINAPI NtOpenEvent( ...@@ -190,8 +174,7 @@ NTSTATUS WINAPI NtOpenEvent(
req->access = DesiredAccess; req->access = DesiredAccess;
req->inherit = ObjectAttributes->Attributes & OBJ_INHERIT; req->inherit = ObjectAttributes->Attributes & OBJ_INHERIT;
copy_nameU( req->name, ObjectAttributes->ObjectName ); copy_nameU( req->name, ObjectAttributes->ObjectName );
if (nt_server_call( REQ_OPEN_EVENT ) != STATUS_SUCCESS) return ret; if (!(ret = server_call_noerr( REQ_OPEN_EVENT ))) *EventHandle = req->handle;
*EventHandle = req->handle;
return ret; return ret;
} }
...@@ -206,12 +189,9 @@ static NTSTATUS EVENT_Operation( ...@@ -206,12 +189,9 @@ static NTSTATUS EVENT_Operation(
enum event_op op ) enum event_op op )
{ {
struct event_op_request *req = get_req_buffer(); struct event_op_request *req = get_req_buffer();
HRESULT ret;
req->handle = handle; req->handle = handle;
req->op = op; req->op = op;
nt_server_call( REQ_EVENT_OP ); return server_call_noerr( REQ_EVENT_OP );
return ret;
} }
/****************************************************************************** /******************************************************************************
......
...@@ -180,6 +180,19 @@ static int _px_tcp_ops[] = { ...@@ -180,6 +180,19 @@ static int _px_tcp_ops[] = {
0 0
}; };
/* we need a special routine to handle WSA* errors */
static inline int sock_server_call( enum request req )
{
unsigned int res = server_call_noerr( req );
if (res)
{
/* do not map WSA errors */
if ((res < WSABASEERR) || (res >= 0x10000000)) res = RtlNtStatusToDosError(res);
SetLastError( res );
}
return res;
}
static int _check_ws(LPWSINFO pwsi, SOCKET s); static int _check_ws(LPWSINFO pwsi, SOCKET s);
static char* _check_buffer(LPWSINFO pwsi, int size); static char* _check_buffer(LPWSINFO pwsi, int size);
...@@ -204,7 +217,7 @@ static void _enable_event(SOCKET s, unsigned int event, ...@@ -204,7 +217,7 @@ static void _enable_event(SOCKET s, unsigned int event,
req->mask = event; req->mask = event;
req->sstate = sstate; req->sstate = sstate;
req->cstate = cstate; req->cstate = cstate;
server_call( REQ_ENABLE_SOCKET_EVENT ); sock_server_call( REQ_ENABLE_SOCKET_EVENT );
} }
static int _is_blocking(SOCKET s) static int _is_blocking(SOCKET s)
...@@ -214,7 +227,7 @@ static int _is_blocking(SOCKET s) ...@@ -214,7 +227,7 @@ static int _is_blocking(SOCKET s)
req->handle = s; req->handle = s;
req->service = FALSE; req->service = FALSE;
req->s_event = 0; req->s_event = 0;
server_call( REQ_GET_SOCKET_EVENT ); sock_server_call( REQ_GET_SOCKET_EVENT );
return (req->state & WS_FD_NONBLOCKING) == 0; return (req->state & WS_FD_NONBLOCKING) == 0;
} }
...@@ -225,7 +238,7 @@ static unsigned int _get_sock_mask(SOCKET s) ...@@ -225,7 +238,7 @@ static unsigned int _get_sock_mask(SOCKET s)
req->handle = s; req->handle = s;
req->service = FALSE; req->service = FALSE;
req->s_event = 0; req->s_event = 0;
server_call( REQ_GET_SOCKET_EVENT ); sock_server_call( REQ_GET_SOCKET_EVENT );
return req->mask; return req->mask;
} }
...@@ -243,7 +256,7 @@ static int _get_sock_error(SOCKET s, unsigned int bit) ...@@ -243,7 +256,7 @@ static int _get_sock_error(SOCKET s, unsigned int bit)
req->handle = s; req->handle = s;
req->service = FALSE; req->service = FALSE;
req->s_event = 0; req->s_event = 0;
server_call( REQ_GET_SOCKET_EVENT ); sock_server_call( REQ_GET_SOCKET_EVENT );
return req->errors[bit]; return req->errors[bit];
} }
...@@ -705,7 +718,7 @@ SOCKET WINAPI WINSOCK_accept(SOCKET s, struct sockaddr *addr, ...@@ -705,7 +718,7 @@ SOCKET WINAPI WINSOCK_accept(SOCKET s, struct sockaddr *addr,
req->lhandle = s; req->lhandle = s;
req->access = GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE; req->access = GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE;
req->inherit = TRUE; req->inherit = TRUE;
server_call( REQ_ACCEPT_SOCKET ); sock_server_call( REQ_ACCEPT_SOCKET );
if( req->handle >= 0 ) if( req->handle >= 0 )
{ {
int fd = _get_sock_fd( s = req->handle ); int fd = _get_sock_fd( s = req->handle );
...@@ -1770,7 +1783,7 @@ SOCKET WINAPI WINSOCK_socket(INT af, INT type, INT protocol) ...@@ -1770,7 +1783,7 @@ SOCKET WINAPI WINSOCK_socket(INT af, INT type, INT protocol)
req->protocol = protocol; req->protocol = protocol;
req->access = GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE; req->access = GENERIC_READ|GENERIC_WRITE|SYNCHRONIZE;
req->inherit = TRUE; req->inherit = TRUE;
server_call( REQ_CREATE_SOCKET ); sock_server_call( REQ_CREATE_SOCKET );
if ( req->handle >= 0) if ( req->handle >= 0)
{ {
TRACE("\tcreated %04x\n", req->handle); TRACE("\tcreated %04x\n", req->handle);
...@@ -2073,7 +2086,7 @@ int WINAPI WSAEnumNetworkEvents(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lp ...@@ -2073,7 +2086,7 @@ int WINAPI WSAEnumNetworkEvents(SOCKET s, WSAEVENT hEvent, LPWSANETWORKEVENTS lp
req->handle = s; req->handle = s;
req->service = TRUE; req->service = TRUE;
req->s_event = 0; req->s_event = 0;
server_call( REQ_GET_SOCKET_EVENT ); sock_server_call( REQ_GET_SOCKET_EVENT );
lpEvent->lNetworkEvents = req->pmask; lpEvent->lNetworkEvents = req->pmask;
memcpy(lpEvent->iErrorCode, req->errors, sizeof(lpEvent->iErrorCode)); memcpy(lpEvent->iErrorCode, req->errors, sizeof(lpEvent->iErrorCode));
if (hEvent) if (hEvent)
...@@ -2096,7 +2109,7 @@ int WINAPI WSAEventSelect(SOCKET s, WSAEVENT hEvent, LONG lEvent) ...@@ -2096,7 +2109,7 @@ int WINAPI WSAEventSelect(SOCKET s, WSAEVENT hEvent, LONG lEvent)
req->handle = s; req->handle = s;
req->mask = lEvent; req->mask = lEvent;
req->event = hEvent; req->event = hEvent;
server_call( REQ_SET_SOCKET_EVENT ); sock_server_call( REQ_SET_SOCKET_EVENT );
return 0; return 0;
} }
else SetLastError(WSAEINVAL); else SetLastError(WSAEINVAL);
...@@ -2120,7 +2133,7 @@ VOID CALLBACK WINSOCK_DoAsyncEvent( ULONG_PTR ptr ) ...@@ -2120,7 +2133,7 @@ VOID CALLBACK WINSOCK_DoAsyncEvent( ULONG_PTR ptr )
req->handle = info->sock; req->handle = info->sock;
req->service = TRUE; req->service = TRUE;
req->s_event = info->event; /* <== avoid race conditions */ req->s_event = info->event; /* <== avoid race conditions */
server_call( REQ_GET_SOCKET_EVENT ); sock_server_call( REQ_GET_SOCKET_EVENT );
if ( GetLastError() == WSAEINVAL ) if ( GetLastError() == WSAEINVAL )
{ {
/* orphaned event (socket closed or something) */ /* orphaned event (socket closed or something) */
......
...@@ -1138,6 +1138,7 @@ enum request ...@@ -1138,6 +1138,7 @@ enum request
#ifndef __WINE_SERVER__ #ifndef __WINE_SERVER__
#include "thread.h" #include "thread.h"
#include "ntddk.h"
/* client communication functions */ /* client communication functions */
...@@ -1161,7 +1162,7 @@ static inline int WINE_UNUSED server_remaining( const void *ptr ) ...@@ -1161,7 +1162,7 @@ static inline int WINE_UNUSED server_remaining( const void *ptr )
static inline int server_call( enum request req ) static inline int server_call( enum request req )
{ {
unsigned int res = server_call_noerr( req ); unsigned int res = server_call_noerr( req );
if (res) SetLastError( res ); if (res) SetLastError( RtlNtStatusToDosError(res) );
return res; return res;
} }
......
...@@ -252,7 +252,7 @@ unsigned int server_call_fd( enum request req, int fd_out, int *fd_in ) ...@@ -252,7 +252,7 @@ unsigned int server_call_fd( enum request req, int fd_out, int *fd_in )
if (fd_in) res = wait_reply_fd( fd_in ); if (fd_in) res = wait_reply_fd( fd_in );
else res = wait_reply(); else res = wait_reply();
if (res) SetLastError( res ); if (res) SetLastError( RtlNtStatusToDosError(res) );
return res; /* error code */ return res; /* error code */
} }
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "winerror.h"
#include "winnt.h" #include "winnt.h"
#include "handle.h" #include "handle.h"
......
...@@ -24,7 +24,6 @@ ...@@ -24,7 +24,6 @@
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
#include "winerror.h"
#include "winnt.h" #include "winnt.h"
#include "wincon.h" #include "wincon.h"
...@@ -148,7 +147,7 @@ int alloc_console( struct process *process ) ...@@ -148,7 +147,7 @@ int alloc_console( struct process *process )
{ {
if (process->console_in || process->console_out) if (process->console_in || process->console_out)
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
return 0; return 0;
} }
if ((process->console_in = create_console_input( -1 ))) if ((process->console_in = create_console_input( -1 )))
...@@ -191,7 +190,7 @@ static int set_console_fd( int handle, int fd_in, int fd_out, int pid ) ...@@ -191,7 +190,7 @@ static int set_console_fd( int handle, int fd_in, int fd_out, int pid )
} }
else else
{ {
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
release_object( obj ); release_object( obj );
return 0; return 0;
} }
...@@ -220,7 +219,7 @@ static int get_console_mode( int handle ) ...@@ -220,7 +219,7 @@ static int get_console_mode( int handle )
else if (obj->ops == &screen_buffer_ops) else if (obj->ops == &screen_buffer_ops)
ret = ((struct screen_buffer *)obj)->mode; ret = ((struct screen_buffer *)obj)->mode;
else else
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
release_object( obj ); release_object( obj );
} }
return ret; return ret;
...@@ -243,7 +242,7 @@ static int set_console_mode( int handle, int mode ) ...@@ -243,7 +242,7 @@ static int set_console_mode( int handle, int mode )
((struct screen_buffer *)obj)->mode = mode; ((struct screen_buffer *)obj)->mode = mode;
ret = 1; ret = 1;
} }
else set_error( ERROR_INVALID_HANDLE ); else set_error( STATUS_OBJECT_TYPE_MISMATCH );
release_object( obj ); release_object( obj );
return ret; return ret;
} }
...@@ -288,7 +287,7 @@ static int write_console_input( int handle, int count, INPUT_RECORD *records ) ...@@ -288,7 +287,7 @@ static int write_console_input( int handle, int count, INPUT_RECORD *records )
if (!(new_rec = realloc( console->records, if (!(new_rec = realloc( console->records,
(console->recnum + count) * sizeof(INPUT_RECORD) ))) (console->recnum + count) * sizeof(INPUT_RECORD) )))
{ {
set_error( ERROR_NOT_ENOUGH_MEMORY ); set_error( STATUS_NO_MEMORY );
release_object( console ); release_object( console );
return -1; return -1;
} }
...@@ -434,7 +433,7 @@ DECL_HANDLER(open_console) ...@@ -434,7 +433,7 @@ DECL_HANDLER(open_console)
struct object *obj= req->output ? current->process->console_out : current->process->console_in; struct object *obj= req->output ? current->process->console_out : current->process->console_in;
if (obj) req->handle = alloc_handle( current->process, obj, req->access, req->inherit ); if (obj) req->handle = alloc_handle( current->process, obj, req->access, req->inherit );
else set_error( ERROR_ACCESS_DENIED ); else set_error( STATUS_ACCESS_DENIED );
} }
/* set info about a console (output only) */ /* set info about a console (output only) */
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include <sys/user.h> #include <sys/user.h>
#include "winbase.h" #include "winbase.h"
#include "winerror.h"
#include "thread.h" #include "thread.h"
#include "request.h" #include "request.h"
...@@ -230,7 +229,7 @@ DECL_HANDLER(get_thread_context) ...@@ -230,7 +229,7 @@ DECL_HANDLER(get_thread_context)
{ {
suspend_thread( thread, 0 ); suspend_thread( thread, 0 );
if (thread->attached) get_thread_context( thread, req->flags, &req->context ); if (thread->attached) get_thread_context( thread, req->flags, &req->context );
else set_error( ERROR_ACCESS_DENIED ); else set_error( STATUS_ACCESS_DENIED );
resume_thread( thread ); resume_thread( thread );
} }
release_object( thread ); release_object( thread );
...@@ -254,7 +253,7 @@ DECL_HANDLER(set_thread_context) ...@@ -254,7 +253,7 @@ DECL_HANDLER(set_thread_context)
{ {
suspend_thread( thread, 0 ); suspend_thread( thread, 0 );
if (thread->attached) set_thread_context( thread, req->flags, &req->context ); if (thread->attached) set_thread_context( thread, req->flags, &req->context );
else set_error( ERROR_ACCESS_DENIED ); else set_error( STATUS_ACCESS_DENIED );
resume_thread( thread ); resume_thread( thread );
} }
release_object( thread ); release_object( thread );
......
...@@ -9,7 +9,6 @@ ...@@ -9,7 +9,6 @@
#include <stdio.h> #include <stdio.h>
#include "winbase.h" #include "winbase.h"
#include "winerror.h"
#include "handle.h" #include "handle.h"
#include "process.h" #include "process.h"
...@@ -293,7 +292,7 @@ static int wait_for_debug_event( int timeout ) ...@@ -293,7 +292,7 @@ static int wait_for_debug_event( int timeout )
if (!debug_ctx) /* current thread is not a debugger */ if (!debug_ctx) /* current thread is not a debugger */
{ {
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_INVALID_HANDLE );
return 0; return 0;
} }
if (timeout != -1) flags = SELECT_TIMEOUT; if (timeout != -1) flags = SELECT_TIMEOUT;
...@@ -326,7 +325,7 @@ static int continue_debug_event( struct process *process, struct thread *thread, ...@@ -326,7 +325,7 @@ static int continue_debug_event( struct process *process, struct thread *thread,
return 1; return 1;
error: error:
/* not debugging this process, or no such event */ /* not debugging this process, or no such event */
set_error( ERROR_ACCESS_DENIED ); /* FIXME */ set_error( STATUS_ACCESS_DENIED ); /* FIXME */
return 0; return 0;
} }
...@@ -386,14 +385,14 @@ int debugger_attach( struct process *process, struct thread *debugger ) ...@@ -386,14 +385,14 @@ int debugger_attach( struct process *process, struct thread *debugger )
if (process->debugger) /* already being debugged */ if (process->debugger) /* already being debugged */
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
return 0; return 0;
} }
/* make sure we don't create a debugging loop */ /* make sure we don't create a debugging loop */
for (thread = debugger; thread; thread = thread->process->debugger) for (thread = debugger; thread; thread = thread->process->debugger)
if (thread->process == process) if (thread->process == process)
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
return 0; return 0;
} }
......
...@@ -16,7 +16,6 @@ ...@@ -16,7 +16,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include "winerror.h"
#include "winbase.h" #include "winbase.h"
#include "handle.h" #include "handle.h"
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "winerror.h"
#include "winnt.h" #include "winnt.h"
#include "handle.h" #include "handle.h"
...@@ -51,7 +50,7 @@ static struct event *create_event( const WCHAR *name, size_t len, ...@@ -51,7 +50,7 @@ static struct event *create_event( const WCHAR *name, size_t len,
if ((event = create_named_object( &event_ops, name, len ))) if ((event = create_named_object( &event_ops, name, len )))
{ {
if (get_error() != ERROR_ALREADY_EXISTS) if (get_error() != STATUS_OBJECT_NAME_COLLISION)
{ {
/* initialize it if it didn't already exist */ /* initialize it if it didn't already exist */
event->manual_reset = manual_reset; event->manual_reset = manual_reset;
......
...@@ -97,7 +97,7 @@ static int check_sharing( const char *name, int hash, unsigned int access, ...@@ -97,7 +97,7 @@ static int check_sharing( const char *name, int hash, unsigned int access,
if ((existing_access & GENERIC_WRITE) && !(sharing & FILE_SHARE_WRITE)) goto error; if ((existing_access & GENERIC_WRITE) && !(sharing & FILE_SHARE_WRITE)) goto error;
return 1; return 1;
error: error:
set_error( ERROR_SHARING_VIOLATION ); set_error( STATUS_SHARING_VIOLATION );
return 0; return 0;
} }
...@@ -143,7 +143,7 @@ static struct file *create_file( const char *nameptr, size_t len, unsigned int a ...@@ -143,7 +143,7 @@ static struct file *create_file( const char *nameptr, size_t len, unsigned int a
case OPEN_ALWAYS: flags = O_CREAT; break; case OPEN_ALWAYS: flags = O_CREAT; break;
case TRUNCATE_EXISTING: flags = O_TRUNC; break; case TRUNCATE_EXISTING: flags = O_TRUNC; break;
case OPEN_EXISTING: flags = 0; break; case OPEN_EXISTING: flags = 0; break;
default: set_error( ERROR_INVALID_PARAMETER ); goto error; default: set_error( STATUS_INVALID_PARAMETER ); goto error;
} }
switch(access & (GENERIC_READ | GENERIC_WRITE)) switch(access & (GENERIC_READ | GENERIC_WRITE))
{ {
...@@ -153,7 +153,7 @@ static struct file *create_file( const char *nameptr, size_t len, unsigned int a ...@@ -153,7 +153,7 @@ static struct file *create_file( const char *nameptr, size_t len, unsigned int a
case GENERIC_READ|GENERIC_WRITE: flags |= O_RDWR; break; case GENERIC_READ|GENERIC_WRITE: flags |= O_RDWR; break;
} }
/* FIXME: should set error to ERROR_ALREADY_EXISTS if file existed before */ /* FIXME: should set error to STATUS_OBJECT_NAME_COLLISION if file existed before */
if ((fd = open( name, flags | O_NONBLOCK, if ((fd = open( name, flags | O_NONBLOCK,
(attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666 )) == -1) (attrs & FILE_ATTRIBUTE_READONLY) ? 0444 : 0666 )) == -1)
goto file_error; goto file_error;
...@@ -161,7 +161,7 @@ static struct file *create_file( const char *nameptr, size_t len, unsigned int a ...@@ -161,7 +161,7 @@ static struct file *create_file( const char *nameptr, size_t len, unsigned int a
if (fstat( fd, &st ) == -1) goto file_error; if (fstat( fd, &st ) == -1) goto file_error;
if (S_ISDIR(st.st_mode)) if (S_ISDIR(st.st_mode))
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
goto error; goto error;
} }
...@@ -193,7 +193,7 @@ int create_anonymous_file(void) ...@@ -193,7 +193,7 @@ int create_anonymous_file(void)
{ {
if (!(name = tmpnam(NULL))) if (!(name = tmpnam(NULL)))
{ {
set_error( ERROR_TOO_MANY_OPEN_FILES ); set_error( STATUS_TOO_MANY_OPENED_FILES );
return -1; return -1;
} }
fd = open( name, O_CREAT | O_EXCL | O_RDWR, 0600 ); fd = open( name, O_CREAT | O_EXCL | O_RDWR, 0600 );
...@@ -309,23 +309,23 @@ void file_set_error(void) ...@@ -309,23 +309,23 @@ void file_set_error(void)
{ {
switch (errno) switch (errno)
{ {
case EAGAIN: set_error( ERROR_SHARING_VIOLATION ); break; case EAGAIN: set_error( STATUS_SHARING_VIOLATION ); break;
case EBADF: set_error( ERROR_INVALID_HANDLE ); break; case EBADF: set_error( STATUS_INVALID_HANDLE ); break;
case ENOSPC: set_error( ERROR_HANDLE_DISK_FULL ); break; case ENOSPC: set_error( STATUS_DISK_FULL ); break;
case EACCES: case EACCES:
case EPERM: set_error( ERROR_ACCESS_DENIED ); break; case EPERM: set_error( STATUS_ACCESS_DENIED ); break;
case EROFS: set_error( ERROR_WRITE_PROTECT ); break; case EROFS: set_error( STATUS_MEDIA_WRITE_PROTECTED ); break;
case EBUSY: set_error( ERROR_LOCK_VIOLATION ); break; case EBUSY: set_error( STATUS_FILE_LOCK_CONFLICT ); break;
case ENOENT: set_error( ERROR_FILE_NOT_FOUND ); break; case ENOENT: set_error( STATUS_NO_SUCH_FILE ); break;
case EISDIR: set_error( ERROR_CANNOT_MAKE ); break; case EISDIR: set_error( 0xc0010000 | ERROR_CANNOT_MAKE /* FIXME */ ); break;
case ENFILE: case ENFILE:
case EMFILE: set_error( ERROR_NO_MORE_FILES ); break; case EMFILE: set_error( STATUS_NO_MORE_FILES ); break;
case EEXIST: set_error( ERROR_FILE_EXISTS ); break; case EEXIST: set_error( STATUS_OBJECT_NAME_COLLISION ); break;
case EINVAL: set_error( ERROR_INVALID_PARAMETER ); break; case EINVAL: set_error( STATUS_INVALID_PARAMETER ); break;
case ESPIPE: set_error( ERROR_SEEK ); break; case ESPIPE: set_error( 0xc0010000 | ERROR_SEEK /* FIXME */ ); break;
case ENOTEMPTY: set_error( ERROR_DIR_NOT_EMPTY ); break; case ENOTEMPTY: set_error( STATUS_DIRECTORY_NOT_EMPTY ); break;
case EIO: set_error( ERROR_NOACCESS ); break; case EIO: set_error( STATUS_ACCESS_VIOLATION ); break;
default: perror("file_set_error"); set_error( ERROR_UNKNOWN ); break; default: perror("file_set_error"); set_error( ERROR_UNKNOWN /* FIXME */ ); break;
} }
} }
...@@ -347,7 +347,7 @@ static int set_file_pointer( int handle, int *low, int *high, int whence ) ...@@ -347,7 +347,7 @@ static int set_file_pointer( int handle, int *low, int *high, int whence )
if (*high) if (*high)
{ {
fprintf( stderr, "set_file_pointer: offset > 4Gb not supported yet\n" ); fprintf( stderr, "set_file_pointer: offset > 4Gb not supported yet\n" );
set_error( ERROR_INVALID_PARAMETER ); set_error( STATUS_INVALID_PARAMETER );
return 0; return 0;
} }
...@@ -357,7 +357,7 @@ static int set_file_pointer( int handle, int *low, int *high, int whence ) ...@@ -357,7 +357,7 @@ static int set_file_pointer( int handle, int *low, int *high, int whence )
{ {
/* Check for seek before start of file */ /* Check for seek before start of file */
if ((errno == EINVAL) && (whence != SEEK_SET) && (*low < 0)) if ((errno == EINVAL) && (whence != SEEK_SET) && (*low < 0))
set_error( ERROR_NEGATIVE_SEEK ); set_error( 0xc0010000 | ERROR_NEGATIVE_SEEK /* FIXME */ );
else else
file_set_error(); file_set_error();
release_object( file ); release_object( file );
...@@ -394,7 +394,7 @@ int grow_file( struct file *file, int size_high, int size_low ) ...@@ -394,7 +394,7 @@ int grow_file( struct file *file, int size_high, int size_low )
if (size_high) if (size_high)
{ {
set_error( ERROR_INVALID_PARAMETER ); set_error( STATUS_INVALID_PARAMETER );
return 0; return 0;
} }
if (fstat( file->obj.fd, &st ) == -1) if (fstat( file->obj.fd, &st ) == -1)
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "winerror.h"
#include "winbase.h" #include "winbase.h"
#include "handle.h" #include "handle.h"
...@@ -150,7 +149,7 @@ static int grow_handle_table( struct handle_table *table ) ...@@ -150,7 +149,7 @@ static int grow_handle_table( struct handle_table *table )
count *= 2; count *= 2;
if (!(new_entries = realloc( table->entries, count * sizeof(struct handle_entry) ))) if (!(new_entries = realloc( table->entries, count * sizeof(struct handle_entry) )))
{ {
set_error( ERROR_OUTOFMEMORY ); set_error( STATUS_NO_MEMORY );
return 0; return 0;
} }
table->entries = new_entries; table->entries = new_entries;
...@@ -225,7 +224,7 @@ static struct handle_entry *get_handle( struct process *process, int handle ) ...@@ -225,7 +224,7 @@ static struct handle_entry *get_handle( struct process *process, int handle )
return entry; return entry;
error: error:
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_INVALID_HANDLE );
return NULL; return NULL;
} }
...@@ -291,7 +290,7 @@ int close_handle( struct process *process, int handle ) ...@@ -291,7 +290,7 @@ int close_handle( struct process *process, int handle )
if (!(entry = get_handle( process, handle ))) return 0; if (!(entry = get_handle( process, handle ))) return 0;
if (entry->access & RESERVED_CLOSE_PROTECT) if (entry->access & RESERVED_CLOSE_PROTECT)
{ {
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_INVALID_HANDLE );
return 0; return 0;
} }
obj = entry->ptr; obj = entry->ptr;
...@@ -340,14 +339,14 @@ struct object *get_handle_obj( struct process *process, int handle, ...@@ -340,14 +339,14 @@ struct object *get_handle_obj( struct process *process, int handle,
if (!(entry = get_handle( process, handle ))) return NULL; if (!(entry = get_handle( process, handle ))) return NULL;
if ((entry->access & access) != access) if ((entry->access & access) != access)
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
return NULL; return NULL;
} }
obj = entry->ptr; obj = entry->ptr;
} }
if (ops && (obj->ops != ops)) if (ops && (obj->ops != ops))
{ {
set_error( ERROR_INVALID_HANDLE ); /* not the right type */ set_error( STATUS_OBJECT_TYPE_MISMATCH ); /* not the right type */
return NULL; return NULL;
} }
return grab_object( obj ); return grab_object( obj );
...@@ -362,7 +361,7 @@ static int set_handle_info( struct process *process, int handle, int mask, int f ...@@ -362,7 +361,7 @@ static int set_handle_info( struct process *process, int handle, int mask, int f
if (get_magic_handle( handle )) if (get_magic_handle( handle ))
{ {
/* we can retrieve but not set info for magic handles */ /* we can retrieve but not set info for magic handles */
if (mask) set_error( ERROR_ACCESS_DENIED ); if (mask) set_error( STATUS_ACCESS_DENIED );
return 0; return 0;
} }
if (!(entry = get_handle( process, handle ))) return -1; if (!(entry = get_handle( process, handle ))) return -1;
...@@ -409,13 +408,13 @@ int open_object( const WCHAR *name, size_t len, const struct object_ops *ops, ...@@ -409,13 +408,13 @@ int open_object( const WCHAR *name, size_t len, const struct object_ops *ops,
if (obj) if (obj)
{ {
if (ops && obj->ops != ops) if (ops && obj->ops != ops)
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
else else
handle = alloc_handle( current->process, obj, access, inherit ); handle = alloc_handle( current->process, obj, access, inherit );
release_object( obj ); release_object( obj );
} }
else else
set_error( ERROR_FILE_NOT_FOUND ); set_error( STATUS_OBJECT_NAME_NOT_FOUND );
return handle; return handle;
} }
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <unistd.h> #include <unistd.h>
#include "config.h" #include "config.h"
#include "winerror.h"
#include "winnt.h" #include "winnt.h"
#include "winbase.h" #include "winbase.h"
...@@ -95,7 +94,7 @@ static struct object *create_mapping( int size_high, int size_low, int protect, ...@@ -95,7 +94,7 @@ static struct object *create_mapping( int size_high, int size_low, int protect,
if (!(mapping = create_named_object( &mapping_ops, name, len ))) if (!(mapping = create_named_object( &mapping_ops, name, len )))
return NULL; return NULL;
if (get_error() == ERROR_ALREADY_EXISTS) if (get_error() == STATUS_OBJECT_NAME_COLLISION)
return &mapping->obj; /* Nothing else to do */ return &mapping->obj; /* Nothing else to do */
if (protect & VPROT_READ) access |= GENERIC_READ; if (protect & VPROT_READ) access |= GENERIC_READ;
...@@ -118,7 +117,7 @@ static struct object *create_mapping( int size_high, int size_low, int protect, ...@@ -118,7 +117,7 @@ static struct object *create_mapping( int size_high, int size_low, int protect,
{ {
if (!size_high && !size_low) if (!size_high && !size_low)
{ {
set_error( ERROR_INVALID_PARAMETER ); set_error( STATUS_INVALID_PARAMETER );
mapping->file = NULL; mapping->file = NULL;
goto error; goto error;
} }
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "winerror.h"
#include "winnt.h" #include "winnt.h"
#include "handle.h" #include "handle.h"
...@@ -54,7 +53,7 @@ static struct mutex *create_mutex( const WCHAR *name, size_t len, int owned ) ...@@ -54,7 +53,7 @@ static struct mutex *create_mutex( const WCHAR *name, size_t len, int owned )
if ((mutex = create_named_object( &mutex_ops, name, len ))) if ((mutex = create_named_object( &mutex_ops, name, len )))
{ {
if (get_error() != ERROR_ALREADY_EXISTS) if (get_error() != STATUS_OBJECT_NAME_COLLISION)
{ {
/* initialize it if it didn't already exist */ /* initialize it if it didn't already exist */
mutex->count = 0; mutex->count = 0;
...@@ -166,7 +165,7 @@ DECL_HANDLER(release_mutex) ...@@ -166,7 +165,7 @@ DECL_HANDLER(release_mutex)
if ((mutex = (struct mutex *)get_handle_obj( current->process, req->handle, if ((mutex = (struct mutex *)get_handle_obj( current->process, req->handle,
MUTEX_MODIFY_STATE, &mutex_ops ))) MUTEX_MODIFY_STATE, &mutex_ops )))
{ {
if (!mutex->count || (mutex->owner != current)) set_error( ERROR_NOT_OWNER ); if (!mutex->count || (mutex->owner != current)) set_error( STATUS_MUTANT_NOT_OWNED );
else if (!--mutex->count) do_release( mutex ); else if (!--mutex->count) do_release( mutex );
release_object( mutex ); release_object( mutex );
} }
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include "winerror.h"
#include "thread.h" #include "thread.h"
#include "unicode.h" #include "unicode.h"
...@@ -53,7 +52,7 @@ void *mem_alloc( size_t size ) ...@@ -53,7 +52,7 @@ void *mem_alloc( size_t size )
{ {
void *ptr = malloc( size ); void *ptr = malloc( size );
if (ptr) memset( ptr, 0x55, size ); if (ptr) memset( ptr, 0x55, size );
else if (current) set_error( ERROR_OUTOFMEMORY ); else if (current) set_error( STATUS_NO_MEMORY );
return ptr; return ptr;
} }
...@@ -165,10 +164,10 @@ void *create_named_object( const struct object_ops *ops, const WCHAR *name, size ...@@ -165,10 +164,10 @@ void *create_named_object( const struct object_ops *ops, const WCHAR *name, size
free( name_ptr ); /* we no longer need it */ free( name_ptr ); /* we no longer need it */
if (obj->ops == ops) if (obj->ops == ops)
{ {
set_error( ERROR_ALREADY_EXISTS ); set_error( STATUS_OBJECT_NAME_COLLISION );
return obj; return obj;
} }
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
return NULL; return NULL;
} }
if ((obj = alloc_object( ops, -1 ))) if ((obj = alloc_object( ops, -1 )))
...@@ -242,7 +241,7 @@ struct object *find_object( const WCHAR *name, size_t len ) ...@@ -242,7 +241,7 @@ struct object *find_object( const WCHAR *name, size_t len )
int no_add_queue( struct object *obj, struct wait_queue_entry *entry ) int no_add_queue( struct object *obj, struct wait_queue_entry *entry )
{ {
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
return 0; return 0;
} }
...@@ -253,25 +252,25 @@ int no_satisfied( struct object *obj, struct thread *thread ) ...@@ -253,25 +252,25 @@ int no_satisfied( struct object *obj, struct thread *thread )
int no_read_fd( struct object *obj ) int no_read_fd( struct object *obj )
{ {
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
return -1; return -1;
} }
int no_write_fd( struct object *obj ) int no_write_fd( struct object *obj )
{ {
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
return -1; return -1;
} }
int no_flush( struct object *obj ) int no_flush( struct object *obj )
{ {
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
return 0; return 0;
} }
int no_get_file_info( struct object *obj, struct get_file_info_request *info ) int no_get_file_info( struct object *obj, struct get_file_info_request *info )
{ {
set_error( ERROR_INVALID_HANDLE ); set_error( STATUS_OBJECT_TYPE_MISMATCH );
return 0; return 0;
} }
......
...@@ -20,7 +20,6 @@ ...@@ -20,7 +20,6 @@
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
#include "winerror.h"
#include "winbase.h" #include "winbase.h"
#include "handle.h" #include "handle.h"
...@@ -122,12 +121,12 @@ static int pipe_get_read_fd( struct object *obj ) ...@@ -122,12 +121,12 @@ static int pipe_get_read_fd( struct object *obj )
if (!pipe->other) if (!pipe->other)
{ {
set_error( ERROR_BROKEN_PIPE ); set_error( STATUS_PIPE_BROKEN );
return -1; return -1;
} }
if (pipe->side != READ_SIDE) /* FIXME: should not be necessary */ if (pipe->side != READ_SIDE) /* FIXME: should not be necessary */
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
return -1; return -1;
} }
return dup( pipe->obj.fd ); return dup( pipe->obj.fd );
...@@ -140,12 +139,12 @@ static int pipe_get_write_fd( struct object *obj ) ...@@ -140,12 +139,12 @@ static int pipe_get_write_fd( struct object *obj )
if (!pipe->other) if (!pipe->other)
{ {
set_error( ERROR_BROKEN_PIPE ); set_error( STATUS_PIPE_BROKEN );
return -1; return -1;
} }
if (pipe->side != WRITE_SIDE) /* FIXME: should not be necessary */ if (pipe->side != WRITE_SIDE) /* FIXME: should not be necessary */
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
return -1; return -1;
} }
return dup( pipe->obj.fd ); return dup( pipe->obj.fd );
......
...@@ -14,7 +14,6 @@ ...@@ -14,7 +14,6 @@
#include <sys/time.h> #include <sys/time.h>
#include <unistd.h> #include <unistd.h>
#include "winerror.h"
#include "winbase.h" #include "winbase.h"
#include "winnt.h" #include "winnt.h"
...@@ -205,7 +204,7 @@ struct process *get_process_from_id( void *id ) ...@@ -205,7 +204,7 @@ struct process *get_process_from_id( void *id )
struct process *p = first_process; struct process *p = first_process;
while (p && (p != id)) p = p->next; while (p && (p != id)) p = p->next;
if (p) grab_object( p ); if (p) grab_object( p );
else set_error( ERROR_INVALID_PARAMETER ); else set_error( STATUS_INVALID_PARAMETER );
return p; return p;
} }
...@@ -329,7 +328,7 @@ static void set_process_info( struct process *process, ...@@ -329,7 +328,7 @@ static void set_process_info( struct process *process,
process->priority = req->priority; process->priority = req->priority;
if (req->mask & SET_PROCESS_INFO_AFFINITY) if (req->mask & SET_PROCESS_INFO_AFFINITY)
{ {
if (req->affinity != 1) set_error( ERROR_INVALID_PARAMETER ); if (req->affinity != 1) set_error( STATUS_INVALID_PARAMETER );
else process->affinity = req->affinity; else process->affinity = req->affinity;
} }
} }
...@@ -344,7 +343,7 @@ static void read_process_memory( struct process *process, const int *addr, ...@@ -344,7 +343,7 @@ static void read_process_memory( struct process *process, const int *addr,
if ((unsigned int)addr % sizeof(int)) /* address must be aligned */ if ((unsigned int)addr % sizeof(int)) /* address must be aligned */
{ {
set_error( ERROR_INVALID_PARAMETER ); set_error( STATUS_INVALID_PARAMETER );
return; return;
} }
suspend_thread( thread, 0 ); suspend_thread( thread, 0 );
...@@ -369,7 +368,7 @@ static void read_process_memory( struct process *process, const int *addr, ...@@ -369,7 +368,7 @@ static void read_process_memory( struct process *process, const int *addr,
if (len && (read_thread_int( thread, addr + len - 1, &dummy ) == -1)) goto done; if (len && (read_thread_int( thread, addr + len - 1, &dummy ) == -1)) goto done;
} }
} }
else set_error( ERROR_ACCESS_DENIED ); else set_error( STATUS_ACCESS_DENIED );
done: done:
resume_thread( thread ); resume_thread( thread );
} }
...@@ -385,7 +384,7 @@ static void write_process_memory( struct process *process, int *addr, size_t len ...@@ -385,7 +384,7 @@ static void write_process_memory( struct process *process, int *addr, size_t len
if (!len || ((unsigned int)addr % sizeof(int))) /* address must be aligned */ if (!len || ((unsigned int)addr % sizeof(int))) /* address must be aligned */
{ {
set_error( ERROR_INVALID_PARAMETER ); set_error( STATUS_INVALID_PARAMETER );
return; return;
} }
suspend_thread( thread, 0 ); suspend_thread( thread, 0 );
...@@ -425,7 +424,7 @@ static void write_process_memory( struct process *process, int *addr, size_t len ...@@ -425,7 +424,7 @@ static void write_process_memory( struct process *process, int *addr, size_t len
if (len && (write_thread_int( thread, addr + len - 1, 0, 0 ) == -1)) goto done; if (len && (write_thread_int( thread, addr + len - 1, 0, 0 ) == -1)) goto done;
} }
} }
else set_error( ERROR_ACCESS_DENIED ); else set_error( STATUS_ACCESS_DENIED );
done: done:
resume_thread( thread ); resume_thread( thread );
} }
......
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
#include "unicode.h" #include "unicode.h"
#include "winbase.h" #include "winbase.h"
#include "winerror.h"
#include "winreg.h" #include "winreg.h"
...@@ -364,7 +363,7 @@ static int grow_subkeys( struct key *key ) ...@@ -364,7 +363,7 @@ static int grow_subkeys( struct key *key )
nb_subkeys = key->nb_subkeys + (key->nb_subkeys / 2); /* grow by 50% */ nb_subkeys = key->nb_subkeys + (key->nb_subkeys / 2); /* grow by 50% */
if (!(new_subkeys = realloc( key->subkeys, nb_subkeys * sizeof(*new_subkeys) ))) if (!(new_subkeys = realloc( key->subkeys, nb_subkeys * sizeof(*new_subkeys) )))
{ {
set_error( ERROR_OUTOFMEMORY ); set_error( STATUS_NO_MEMORY );
return 0; return 0;
} }
} }
...@@ -461,7 +460,7 @@ static struct key *open_key( struct key *key, const WCHAR *name, size_t maxlen ) ...@@ -461,7 +460,7 @@ static struct key *open_key( struct key *key, const WCHAR *name, size_t maxlen )
{ {
if (!(key = find_subkey( key, path, &index ))) if (!(key = find_subkey( key, path, &index )))
{ {
set_error( ERROR_FILE_NOT_FOUND ); set_error( STATUS_OBJECT_NAME_NOT_FOUND );
break; break;
} }
path = get_path_token( NULL, 0 ); path = get_path_token( NULL, 0 );
...@@ -482,13 +481,13 @@ static struct key *create_key( struct key *key, const WCHAR *name, size_t maxlen ...@@ -482,13 +481,13 @@ static struct key *create_key( struct key *key, const WCHAR *name, size_t maxlen
if (key->flags & KEY_DELETED) /* we cannot create a subkey under a deleted key */ if (key->flags & KEY_DELETED) /* we cannot create a subkey under a deleted key */
{ {
set_error( ERROR_KEY_DELETED ); set_error( STATUS_KEY_DELETED );
return NULL; return NULL;
} }
if (options & REG_OPTION_VOLATILE) flags |= KEY_VOLATILE; if (options & REG_OPTION_VOLATILE) flags |= KEY_VOLATILE;
else if (key->flags & KEY_VOLATILE) else if (key->flags & KEY_VOLATILE)
{ {
set_error( ERROR_CHILD_MUST_BE_VOLATILE ); set_error( STATUS_CHILD_MUST_BE_VOLATILE );
return NULL; return NULL;
} }
...@@ -532,7 +531,7 @@ static void enum_key( struct key *parent, int index, WCHAR *name, WCHAR *class, ...@@ -532,7 +531,7 @@ static void enum_key( struct key *parent, int index, WCHAR *name, WCHAR *class,
{ {
struct key *key; struct key *key;
if ((index < 0) || (index > parent->last_subkey)) set_error( ERROR_NO_MORE_ITEMS ); if ((index < 0) || (index > parent->last_subkey)) set_error( STATUS_NO_MORE_ENTRIES );
else else
{ {
key = parent->subkeys[index]; key = parent->subkeys[index];
...@@ -593,12 +592,12 @@ static void delete_key( struct key *key, const WCHAR *name, size_t maxlen ) ...@@ -593,12 +592,12 @@ static void delete_key( struct key *key, const WCHAR *name, size_t maxlen )
/* deleting this key, must find parent and index */ /* deleting this key, must find parent and index */
if (key->flags & KEY_ROOT) if (key->flags & KEY_ROOT)
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
return; return;
} }
if (!(parent = key->parent) || (key->flags & KEY_DELETED)) if (!(parent = key->parent) || (key->flags & KEY_DELETED))
{ {
set_error( ERROR_KEY_DELETED ); set_error( STATUS_KEY_DELETED );
return; return;
} }
for (index = 0; index <= parent->last_subkey; index++) for (index = 0; index <= parent->last_subkey; index++)
...@@ -610,7 +609,7 @@ static void delete_key( struct key *key, const WCHAR *name, size_t maxlen ) ...@@ -610,7 +609,7 @@ static void delete_key( struct key *key, const WCHAR *name, size_t maxlen )
parent = key; parent = key;
if (!(key = find_subkey( parent, path, &index ))) if (!(key = find_subkey( parent, path, &index )))
{ {
set_error( ERROR_FILE_NOT_FOUND ); set_error( STATUS_OBJECT_NAME_NOT_FOUND );
return; return;
} }
path = get_path_token( NULL, 0 ); path = get_path_token( NULL, 0 );
...@@ -619,7 +618,7 @@ static void delete_key( struct key *key, const WCHAR *name, size_t maxlen ) ...@@ -619,7 +618,7 @@ static void delete_key( struct key *key, const WCHAR *name, size_t maxlen )
/* we can only delete a key that has no subkeys (FIXME) */ /* we can only delete a key that has no subkeys (FIXME) */
if ((key->flags & KEY_ROOT) || (key->last_subkey >= 0)) if ((key->flags & KEY_ROOT) || (key->last_subkey >= 0))
{ {
set_error( ERROR_ACCESS_DENIED ); set_error( STATUS_ACCESS_DENIED );
return; return;
} }
if (debug_level > 1) dump_operation( key, NULL, "Delete" ); if (debug_level > 1) dump_operation( key, NULL, "Delete" );
...@@ -638,7 +637,7 @@ static int grow_values( struct key *key ) ...@@ -638,7 +637,7 @@ static int grow_values( struct key *key )
nb_values = key->nb_values + (key->nb_values / 2); /* grow by 50% */ nb_values = key->nb_values + (key->nb_values / 2); /* grow by 50% */
if (!(new_val = realloc( key->values, nb_values * sizeof(*new_val) ))) if (!(new_val = realloc( key->values, nb_values * sizeof(*new_val) )))
{ {
set_error( ERROR_OUTOFMEMORY ); set_error( STATUS_NO_MEMORY );
return 0; return 0;
} }
} }
...@@ -741,7 +740,7 @@ static void get_value( struct key *key, WCHAR *name, int *type, int *len, void * ...@@ -741,7 +740,7 @@ static void get_value( struct key *key, WCHAR *name, int *type, int *len, void *
{ {
*type = -1; *type = -1;
*len = 0; *len = 0;
set_error( ERROR_FILE_NOT_FOUND ); set_error( STATUS_OBJECT_NAME_NOT_FOUND );
} }
} }
...@@ -754,7 +753,7 @@ static void enum_value( struct key *key, int i, WCHAR *name, int *type, int *len ...@@ -754,7 +753,7 @@ static void enum_value( struct key *key, int i, WCHAR *name, int *type, int *len
{ {
name[0] = 0; name[0] = 0;
*len = 0; *len = 0;
set_error( ERROR_NO_MORE_ITEMS ); set_error( STATUS_NO_MORE_ENTRIES );
} }
else else
{ {
...@@ -775,7 +774,7 @@ static void delete_value( struct key *key, const WCHAR *name ) ...@@ -775,7 +774,7 @@ static void delete_value( struct key *key, const WCHAR *name )
if (!(value = find_value( key, name, &index ))) if (!(value = find_value( key, name, &index )))
{ {
set_error( ERROR_FILE_NOT_FOUND ); set_error( STATUS_OBJECT_NAME_NOT_FOUND );
return; return;
} }
if (debug_level > 1) dump_operation( key, value, "Delete" ); if (debug_level > 1) dump_operation( key, value, "Delete" );
...@@ -922,7 +921,7 @@ static int read_next_line( struct file_load_info *info ) ...@@ -922,7 +921,7 @@ static int read_next_line( struct file_load_info *info )
newlen = info->len + info->len / 2; newlen = info->len + info->len / 2;
if (!(newbuf = realloc( info->buffer, newlen ))) if (!(newbuf = realloc( info->buffer, newlen )))
{ {
set_error( ERROR_OUTOFMEMORY ); set_error( STATUS_NO_MEMORY );
return -1; return -1;
} }
info->buffer = newbuf; info->buffer = newbuf;
...@@ -937,7 +936,7 @@ static int get_file_tmp_space( struct file_load_info *info, int size ) ...@@ -937,7 +936,7 @@ static int get_file_tmp_space( struct file_load_info *info, int size )
if (info->tmplen >= size) return 1; if (info->tmplen >= size) return 1;
if (!(tmp = realloc( info->tmp, size ))) if (!(tmp = realloc( info->tmp, size )))
{ {
set_error( ERROR_OUTOFMEMORY ); set_error( STATUS_NO_MEMORY );
return 0; return 0;
} }
info->tmp = tmp; info->tmp = tmp;
...@@ -1196,7 +1195,7 @@ static void load_keys( struct key *key, FILE *f ) ...@@ -1196,7 +1195,7 @@ static void load_keys( struct key *key, FILE *f )
if ((read_next_line( &info ) != 1) || if ((read_next_line( &info ) != 1) ||
strcmp( info.buffer, "WINE REGISTRY Version 2" )) strcmp( info.buffer, "WINE REGISTRY Version 2" ))
{ {
set_error( ERROR_NOT_REGISTRY_FILE ); set_error( STATUS_NOT_REGISTRY_FILE );
goto done; goto done;
} }
...@@ -1319,7 +1318,7 @@ static void save_registry( struct key *key, int handle ) ...@@ -1319,7 +1318,7 @@ static void save_registry( struct key *key, int handle )
if (key->flags & KEY_DELETED) if (key->flags & KEY_DELETED)
{ {
set_error( ERROR_KEY_DELETED ); set_error( STATUS_KEY_DELETED );
return; return;
} }
if (!(obj = get_handle_obj( current->process, handle, GENERIC_WRITE, NULL ))) return; if (!(obj = get_handle_obj( current->process, handle, GENERIC_WRITE, NULL ))) return;
...@@ -1443,7 +1442,7 @@ DECL_HANDLER(set_key_value) ...@@ -1443,7 +1442,7 @@ DECL_HANDLER(set_key_value)
int datalen = req->len; int datalen = req->len;
if (datalen > max) if (datalen > max)
{ {
set_error( ERROR_OUTOFMEMORY ); /* FIXME */ set_error( STATUS_NO_MEMORY ); /* FIXME */
return; return;
} }
if ((key = get_hkey_obj( req->hkey, KEY_SET_VALUE ))) if ((key = get_hkey_obj( req->hkey, KEY_SET_VALUE )))
......
...@@ -21,7 +21,6 @@ ...@@ -21,7 +21,6 @@
#include <sys/uio.h> #include <sys/uio.h>
#include <unistd.h> #include <unistd.h>
#include "winerror.h"
#include "winnt.h" #include "winnt.h"
#include "winbase.h" #include "winbase.h"
#include "wincon.h" #include "wincon.h"
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "winerror.h"
#include "winnt.h" #include "winnt.h"
#include "handle.h" #include "handle.h"
...@@ -51,12 +50,12 @@ static struct semaphore *create_semaphore( const WCHAR *name, size_t len, ...@@ -51,12 +50,12 @@ static struct semaphore *create_semaphore( const WCHAR *name, size_t len,
if (!max || (initial > max)) if (!max || (initial > max))
{ {
set_error( ERROR_INVALID_PARAMETER ); set_error( STATUS_INVALID_PARAMETER );
return NULL; return NULL;
} }
if ((sem = create_named_object( &semaphore_ops, name, len ))) if ((sem = create_named_object( &semaphore_ops, name, len )))
{ {
if (get_error() != ERROR_ALREADY_EXISTS) if (get_error() != STATUS_OBJECT_NAME_COLLISION)
{ {
/* initialize it if it didn't already exist */ /* initialize it if it didn't already exist */
sem->count = initial; sem->count = initial;
...@@ -77,7 +76,7 @@ static unsigned int release_semaphore( int handle, unsigned int count ) ...@@ -77,7 +76,7 @@ static unsigned int release_semaphore( int handle, unsigned int count )
prev = sem->count; prev = sem->count;
if (sem->count + count < sem->count || sem->count + count > sem->max) if (sem->count + count < sem->count || sem->count + count > sem->max)
{ {
set_error( ERROR_TOO_MANY_POSTS ); set_error( STATUS_SEMAPHORE_LIMIT_EXCEEDED );
} }
else if (sem->count) else if (sem->count)
{ {
......
...@@ -10,7 +10,6 @@ ...@@ -10,7 +10,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include "winerror.h"
#include "winnt.h" #include "winnt.h"
#include "tlhelp32.h" #include "tlhelp32.h"
...@@ -72,13 +71,13 @@ static int snapshot_next_process( struct snapshot *snapshot, struct next_process ...@@ -72,13 +71,13 @@ static int snapshot_next_process( struct snapshot *snapshot, struct next_process
if (!snapshot->process_count) if (!snapshot->process_count)
{ {
set_error( ERROR_INVALID_PARAMETER ); /* FIXME */ set_error( STATUS_INVALID_PARAMETER ); /* FIXME */
return 0; return 0;
} }
if (req->reset) snapshot->process_pos = 0; if (req->reset) snapshot->process_pos = 0;
else if (snapshot->process_pos >= snapshot->process_count) else if (snapshot->process_pos >= snapshot->process_count)
{ {
set_error( ERROR_NO_MORE_FILES ); set_error( STATUS_NO_MORE_FILES );
return 0; return 0;
} }
ptr = &snapshot->process[snapshot->process_pos++]; ptr = &snapshot->process[snapshot->process_pos++];
......
...@@ -25,7 +25,6 @@ ...@@ -25,7 +25,6 @@
#include "winbase.h" #include "winbase.h"
#include "winerror.h"
#include "handle.h" #include "handle.h"
#include "process.h" #include "process.h"
...@@ -247,7 +246,7 @@ static void set_thread_info( struct thread *thread, ...@@ -247,7 +246,7 @@ static void set_thread_info( struct thread *thread,
thread->priority = req->priority; thread->priority = req->priority;
if (req->mask & SET_THREAD_INFO_AFFINITY) if (req->mask & SET_THREAD_INFO_AFFINITY)
{ {
if (req->affinity != 1) set_error( ERROR_INVALID_PARAMETER ); if (req->affinity != 1) set_error( STATUS_INVALID_PARAMETER );
else thread->affinity = req->affinity; else thread->affinity = req->affinity;
} }
} }
...@@ -260,7 +259,7 @@ int suspend_thread( struct thread *thread, int check_limit ) ...@@ -260,7 +259,7 @@ int suspend_thread( struct thread *thread, int check_limit )
{ {
if (!(thread->process->suspend + thread->suspend++)) stop_thread( thread ); if (!(thread->process->suspend + thread->suspend++)) stop_thread( thread );
} }
else set_error( ERROR_SIGNAL_REFUSED ); else set_error( STATUS_SUSPEND_COUNT_EXCEEDED );
return old_count; return old_count;
} }
...@@ -475,7 +474,7 @@ static int select_on( int count, int *handles, int flags, int timeout ) ...@@ -475,7 +474,7 @@ static int select_on( int count, int *handles, int flags, int timeout )
if ((count < 0) || (count > MAXIMUM_WAIT_OBJECTS)) if ((count < 0) || (count > MAXIMUM_WAIT_OBJECTS))
{ {
set_error( ERROR_INVALID_PARAMETER ); set_error( STATUS_INVALID_PARAMETER );
return 0; return 0;
} }
for (i = 0; i < count; i++) for (i = 0; i < count; i++)
......
...@@ -10,8 +10,6 @@ ...@@ -10,8 +10,6 @@
#include <sys/time.h> #include <sys/time.h>
#include <sys/types.h> #include <sys/types.h>
#include "winerror.h"
#include "handle.h" #include "handle.h"
#include "request.h" #include "request.h"
...@@ -62,7 +60,7 @@ static struct timer *create_timer( const WCHAR *name, size_t len, int manual ) ...@@ -62,7 +60,7 @@ static struct timer *create_timer( const WCHAR *name, size_t len, int manual )
if ((timer = create_named_object( &timer_ops, name, len ))) if ((timer = create_named_object( &timer_ops, name, len )))
{ {
if (get_error() != ERROR_ALREADY_EXISTS) if (get_error() != STATUS_OBJECT_NAME_COLLISION)
{ {
/* initialize it if it didn't already exist */ /* initialize it if it didn't already exist */
timer->manual = manual; timer->manual = manual;
......
...@@ -1475,7 +1475,7 @@ void trace_kill( struct thread *thread ) ...@@ -1475,7 +1475,7 @@ void trace_kill( struct thread *thread )
void trace_reply( struct thread *thread ) void trace_reply( struct thread *thread )
{ {
fprintf( stderr, "%08x: %s() = %d", fprintf( stderr, "%08x: %s() = %x",
(unsigned int)thread, req_names[thread->last_req], thread->error ); (unsigned int)thread, req_names[thread->last_req], thread->error );
if (reply_dumpers[thread->last_req]) if (reply_dumpers[thread->last_req])
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment