Author: ekohl Date: Thu May 6 00:53:01 2010 New Revision: 47107
URL: http://svn.reactos.org/svn/reactos?rev=47107&view=rev Log: [FORMATTING] No code changes.
Modified: trunk/reactos/dll/win32/userenv/environment.c
Modified: trunk/reactos/dll/win32/userenv/environment.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/userenv/environme... ============================================================================== --- trunk/reactos/dll/win32/userenv/environment.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/userenv/environment.c [iso-8859-1] Thu May 6 00:53:01 2010 @@ -32,394 +32,396 @@
static BOOL -SetUserEnvironmentVariable (LPVOID *Environment, - LPWSTR lpName, - LPWSTR lpValue, - BOOL bExpand) -{ - WCHAR ShortName[MAX_PATH]; - UNICODE_STRING Name; - UNICODE_STRING SrcValue; - UNICODE_STRING DstValue; - ULONG Length; - NTSTATUS Status; - PVOID Buffer=NULL; - - if (bExpand) - { - RtlInitUnicodeString(&SrcValue, - lpValue); - - Length = 2 * MAX_PATH * sizeof(WCHAR); - - DstValue.Length = 0; - DstValue.MaximumLength = Length; - DstValue.Buffer = Buffer = LocalAlloc(LPTR, - Length); - - if (DstValue.Buffer == NULL) - { - DPRINT1("LocalAlloc() failed\n"); - return FALSE; - } - - Status = RtlExpandEnvironmentStrings_U((PWSTR)*Environment, - &SrcValue, - &DstValue, - &Length); - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlExpandEnvironmentStrings_U() failed (Status %lx)\n", Status); - DPRINT1("Length %lu\n", Length); - if (Buffer) LocalFree(Buffer); - return FALSE; - } - } - else - { - RtlInitUnicodeString(&DstValue, - lpValue); - } - - if (!_wcsicmp (lpName, L"temp") || !_wcsicmp (lpName, L"tmp")) - { - if (!GetShortPathNameW(DstValue.Buffer, ShortName, MAX_PATH)) - { - DPRINT1("GetShortPathNameW() failed for %S (Error %lu)\n", DstValue.Buffer, GetLastError()); - if (Buffer) LocalFree(Buffer); - return FALSE; - } - - DPRINT("Buffer: %S\n", ShortName); - RtlInitUnicodeString(&DstValue, - ShortName); - } - - RtlInitUnicodeString(&Name, - lpName); - - DPRINT("Value: %wZ\n", &DstValue); - - Status = RtlSetEnvironmentVariable((PWSTR*)Environment, - &Name, - &DstValue); - - if (Buffer) LocalFree(Buffer); - - if (!NT_SUCCESS(Status)) - { - DPRINT1("RtlSetEnvironmentVariable() failed (Status %lx)\n", Status); - return FALSE; - } - - return TRUE; +SetUserEnvironmentVariable(LPVOID *Environment, + LPWSTR lpName, + LPWSTR lpValue, + BOOL bExpand) +{ + WCHAR ShortName[MAX_PATH]; + UNICODE_STRING Name; + UNICODE_STRING SrcValue; + UNICODE_STRING DstValue; + ULONG Length; + NTSTATUS Status; + PVOID Buffer = NULL; + + if (bExpand) + { + RtlInitUnicodeString(&SrcValue, + lpValue); + + Length = 2 * MAX_PATH * sizeof(WCHAR); + + DstValue.Length = 0; + DstValue.MaximumLength = Length; + DstValue.Buffer = Buffer = LocalAlloc(LPTR, + Length); + if (DstValue.Buffer == NULL) + { + DPRINT1("LocalAlloc() failed\n"); + return FALSE; + } + + Status = RtlExpandEnvironmentStrings_U((PWSTR)*Environment, + &SrcValue, + &DstValue, + &Length); + if (!NT_SUCCESS(Status)) + { + DPRINT1("RtlExpandEnvironmentStrings_U() failed (Status %lx)\n", Status); + DPRINT1("Length %lu\n", Length); + if (Buffer) + LocalFree(Buffer); + return FALSE; + } + } + else + { + RtlInitUnicodeString(&DstValue, + lpValue); + } + + if (!_wcsicmp(lpName, L"temp") || !_wcsicmp(lpName, L"tmp")) + { + if (!GetShortPathNameW(DstValue.Buffer, ShortName, MAX_PATH)) + { + DPRINT1("GetShortPathNameW() failed for %S (Error %lu)\n", DstValue.Buffer, GetLastError()); + if (Buffer) + LocalFree(Buffer); + return FALSE; + } + + DPRINT("Buffer: %S\n", ShortName); + RtlInitUnicodeString(&DstValue, + ShortName); + } + + RtlInitUnicodeString(&Name, + lpName); + + DPRINT("Value: %wZ\n", &DstValue); + + Status = RtlSetEnvironmentVariable((PWSTR*)Environment, + &Name, + &DstValue); + + if (Buffer) + LocalFree(Buffer); + + if (!NT_SUCCESS(Status)) + { + DPRINT1("RtlSetEnvironmentVariable() failed (Status %lx)\n", Status); + return FALSE; + } + + return TRUE; }
static BOOL -AppendUserEnvironmentVariable (LPVOID *Environment, - LPWSTR lpName, - LPWSTR lpValue) -{ - UNICODE_STRING Name; - UNICODE_STRING Value; - NTSTATUS Status; - - RtlInitUnicodeString (&Name, - lpName); - - Value.Length = 0; - Value.MaximumLength = 1024 * sizeof(WCHAR); - Value.Buffer = LocalAlloc (LPTR, - 1024 * sizeof(WCHAR)); - if (Value.Buffer == NULL) - { - return FALSE; - } - Value.Buffer[0] = UNICODE_NULL; - - Status = RtlQueryEnvironmentVariable_U ((PWSTR)*Environment, - &Name, - &Value); - if (NT_SUCCESS(Status)) - { - RtlAppendUnicodeToString (&Value, - L";"); - } - - RtlAppendUnicodeToString (&Value, - lpValue); - - Status = RtlSetEnvironmentVariable ((PWSTR*)Environment, - &Name, - &Value); - LocalFree (Value.Buffer); - if (!NT_SUCCESS(Status)) - { - DPRINT1 ("RtlSetEnvironmentVariable() failed (Status %lx)\n", Status); - return FALSE; - } - - return TRUE; +AppendUserEnvironmentVariable(LPVOID *Environment, + LPWSTR lpName, + LPWSTR lpValue) +{ + UNICODE_STRING Name; + UNICODE_STRING Value; + NTSTATUS Status; + + RtlInitUnicodeString(&Name, + lpName); + + Value.Length = 0; + Value.MaximumLength = 1024 * sizeof(WCHAR); + Value.Buffer = LocalAlloc(LPTR, + 1024 * sizeof(WCHAR)); + if (Value.Buffer == NULL) + { + return FALSE; + } + Value.Buffer[0] = UNICODE_NULL; + + Status = RtlQueryEnvironmentVariable_U((PWSTR)*Environment, + &Name, + &Value); + if (NT_SUCCESS(Status)) + { + RtlAppendUnicodeToString(&Value, + L";"); + } + + RtlAppendUnicodeToString(&Value, + lpValue); + + Status = RtlSetEnvironmentVariable((PWSTR*)Environment, + &Name, + &Value); + LocalFree(Value.Buffer); + if (!NT_SUCCESS(Status)) + { + DPRINT1("RtlSetEnvironmentVariable() failed (Status %lx)\n", Status); + return FALSE; + } + + return TRUE; }
static HKEY -GetCurrentUserKey (HANDLE hToken) -{ - UNICODE_STRING SidString; - HKEY hKey; - LONG Error; - - if (!GetUserSidFromToken (hToken, - &SidString)) - { - DPRINT1 ("GetUserSidFromToken() failed\n"); - return NULL; - } - - Error = RegOpenKeyExW (HKEY_USERS, - SidString.Buffer, - 0, - MAXIMUM_ALLOWED, - &hKey); - if (Error != ERROR_SUCCESS) - { - DPRINT1 ("RegOpenKeyExW() failed (Error %ld)\n", Error); - RtlFreeUnicodeString (&SidString); - SetLastError((DWORD)Error); - return NULL; - } - - RtlFreeUnicodeString (&SidString); - - return hKey; +GetCurrentUserKey(HANDLE hToken) +{ + UNICODE_STRING SidString; + HKEY hKey; + LONG Error; + + if (!GetUserSidFromToken(hToken, + &SidString)) + { + DPRINT1("GetUserSidFromToken() failed\n"); + return NULL; + } + + Error = RegOpenKeyExW(HKEY_USERS, + SidString.Buffer, + 0, + MAXIMUM_ALLOWED, + &hKey); + if (Error != ERROR_SUCCESS) + { + DPRINT1("RegOpenKeyExW() failed (Error %ld)\n", Error); + RtlFreeUnicodeString(&SidString); + SetLastError((DWORD)Error); + return NULL; + } + + RtlFreeUnicodeString(&SidString); + + return hKey; }
static BOOL -SetUserEnvironment (LPVOID *lpEnvironment, - HKEY hKey, - LPWSTR lpSubKeyName) -{ - HKEY hEnvKey; - DWORD dwValues; - DWORD dwMaxValueNameLength; - DWORD dwMaxValueDataLength; - DWORD dwValueNameLength; - DWORD dwValueDataLength; - DWORD dwType; - DWORD i; - LPWSTR lpValueName; - LPWSTR lpValueData; - LONG Error; - - Error = RegOpenKeyExW (hKey, - lpSubKeyName, - 0, - KEY_QUERY_VALUE, - &hEnvKey); - if (Error != ERROR_SUCCESS) - { - DPRINT1 ("RegOpenKeyExW() failed (Error %ld)\n", Error); - SetLastError((DWORD)Error); - return FALSE; - } - - Error = RegQueryInfoKey (hEnvKey, - NULL, - NULL, - NULL, - NULL, - NULL, - NULL, - &dwValues, - &dwMaxValueNameLength, - &dwMaxValueDataLength, - NULL, - NULL); - if (Error != ERROR_SUCCESS) - { - DPRINT1 ("RegQueryInforKey() failed (Error %ld)\n", Error); - RegCloseKey (hEnvKey); - SetLastError((DWORD)Error); - return FALSE; - } - - if (dwValues == 0) - { - RegCloseKey (hEnvKey); - return TRUE; - } - - /* Allocate buffers */ - lpValueName = LocalAlloc (LPTR, - dwMaxValueNameLength * sizeof(WCHAR)); - if (lpValueName == NULL) - { - RegCloseKey (hEnvKey); - return FALSE; - } - - lpValueData = LocalAlloc (LPTR, - dwMaxValueDataLength); - if (lpValueData == NULL) - { - LocalFree (lpValueName); - RegCloseKey (hEnvKey); - return FALSE; - } - - /* Enumerate values */ - for (i = 0; i < dwValues; i++) - { - dwValueNameLength = dwMaxValueNameLength; - dwValueDataLength = dwMaxValueDataLength; - RegEnumValueW (hEnvKey, - i, - lpValueName, - &dwValueNameLength, - NULL, - &dwType, - (LPBYTE)lpValueData, - &dwValueDataLength); - - if (!_wcsicmp (lpValueName, L"path")) - { - /* Append 'Path' environment variable */ - AppendUserEnvironmentVariable (lpEnvironment, - lpValueName, - lpValueData); - } - else - { - /* Set environment variable */ - SetUserEnvironmentVariable (lpEnvironment, - lpValueName, - lpValueData, - (dwType == REG_EXPAND_SZ)); - } - } - - LocalFree (lpValueData); - LocalFree (lpValueName); - RegCloseKey (hEnvKey); - - return TRUE; +SetUserEnvironment(LPVOID *lpEnvironment, + HKEY hKey, + LPWSTR lpSubKeyName) +{ + HKEY hEnvKey; + DWORD dwValues; + DWORD dwMaxValueNameLength; + DWORD dwMaxValueDataLength; + DWORD dwValueNameLength; + DWORD dwValueDataLength; + DWORD dwType; + DWORD i; + LPWSTR lpValueName; + LPWSTR lpValueData; + LONG Error; + + Error = RegOpenKeyExW(hKey, + lpSubKeyName, + 0, + KEY_QUERY_VALUE, + &hEnvKey); + if (Error != ERROR_SUCCESS) + { + DPRINT1("RegOpenKeyExW() failed (Error %ld)\n", Error); + SetLastError((DWORD)Error); + return FALSE; + } + + Error = RegQueryInfoKey(hEnvKey, + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + &dwValues, + &dwMaxValueNameLength, + &dwMaxValueDataLength, + NULL, + NULL); + if (Error != ERROR_SUCCESS) + { + DPRINT1("RegQueryInforKey() failed (Error %ld)\n", Error); + RegCloseKey(hEnvKey); + SetLastError((DWORD)Error); + return FALSE; + } + + if (dwValues == 0) + { + RegCloseKey(hEnvKey); + return TRUE; + } + + /* Allocate buffers */ + lpValueName = LocalAlloc(LPTR, + dwMaxValueNameLength * sizeof(WCHAR)); + if (lpValueName == NULL) + { + RegCloseKey(hEnvKey); + return FALSE; + } + + lpValueData = LocalAlloc(LPTR, + dwMaxValueDataLength); + if (lpValueData == NULL) + { + LocalFree(lpValueName); + RegCloseKey(hEnvKey); + return FALSE; + } + + /* Enumerate values */ + for (i = 0; i < dwValues; i++) + { + dwValueNameLength = dwMaxValueNameLength; + dwValueDataLength = dwMaxValueDataLength; + RegEnumValueW(hEnvKey, + i, + lpValueName, + &dwValueNameLength, + NULL, + &dwType, + (LPBYTE)lpValueData, + &dwValueDataLength); + + if (!_wcsicmp (lpValueName, L"path")) + { + /* Append 'Path' environment variable */ + AppendUserEnvironmentVariable(lpEnvironment, + lpValueName, + lpValueData); + } + else + { + /* Set environment variable */ + SetUserEnvironmentVariable(lpEnvironment, + lpValueName, + lpValueData, + (dwType == REG_EXPAND_SZ)); + } + } + + LocalFree(lpValueData); + LocalFree(lpValueName); + RegCloseKey(hEnvKey); + + return TRUE; }
BOOL WINAPI -CreateEnvironmentBlock (LPVOID *lpEnvironment, - HANDLE hToken, - BOOL bInherit) -{ - WCHAR Buffer[MAX_PATH]; - DWORD Length; - HKEY hKeyUser; - NTSTATUS Status; - - DPRINT("CreateEnvironmentBlock() called\n"); - - if (lpEnvironment == NULL) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - Status = RtlCreateEnvironment ((BOOLEAN)bInherit, - (PWSTR*)lpEnvironment); - if (!NT_SUCCESS (Status)) - { - DPRINT1 ("RtlCreateEnvironment() failed (Status %lx)\n", Status); - SetLastError (RtlNtStatusToDosError (Status)); - return FALSE; - } - - /* Set 'COMPUTERNAME' variable */ - Length = MAX_PATH; - if (GetComputerNameW (Buffer, - &Length)) - { - SetUserEnvironmentVariable(lpEnvironment, - L"COMPUTERNAME", - Buffer, - FALSE); - } - - if (hToken == NULL) +CreateEnvironmentBlock(LPVOID *lpEnvironment, + HANDLE hToken, + BOOL bInherit) +{ + WCHAR Buffer[MAX_PATH]; + DWORD Length; + HKEY hKeyUser; + NTSTATUS Status; + + DPRINT("CreateEnvironmentBlock() called\n"); + + if (lpEnvironment == NULL) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + Status = RtlCreateEnvironment((BOOLEAN)bInherit, + (PWSTR*)lpEnvironment); + if (!NT_SUCCESS (Status)) + { + DPRINT1("RtlCreateEnvironment() failed (Status %lx)\n", Status); + SetLastError(RtlNtStatusToDosError(Status)); + return FALSE; + } + + /* Set 'COMPUTERNAME' variable */ + Length = MAX_PATH; + if (GetComputerNameW(Buffer, + &Length)) + { + SetUserEnvironmentVariable(lpEnvironment, + L"COMPUTERNAME", + Buffer, + FALSE); + } + + if (hToken == NULL) + return TRUE; + + hKeyUser = GetCurrentUserKey(hToken); + if (hKeyUser == NULL) + { + DPRINT1("GetCurrentUserKey() failed\n"); + RtlDestroyEnvironment(*lpEnvironment); + return FALSE; + } + + /* Set 'ALLUSERSPROFILE' variable */ + Length = MAX_PATH; + if (GetAllUsersProfileDirectoryW(Buffer, + &Length)) + { + SetUserEnvironmentVariable(lpEnvironment, + L"ALLUSERSPROFILE", + Buffer, + FALSE); + } + + /* Set 'USERPROFILE' variable */ + Length = MAX_PATH; + if (GetUserProfileDirectoryW(hToken, + Buffer, + &Length)) + { + SetUserEnvironmentVariable(lpEnvironment, + L"USERPROFILE", + Buffer, + FALSE); + } + + /* FIXME: Set 'USERDOMAIN' variable */ + + Length = MAX_PATH; + if (GetUserNameW(Buffer, + &Length)) + { + SetUserEnvironmentVariable(lpEnvironment, + L"USERNAME", + Buffer, + FALSE); + } + + + + /* Set user environment variables */ + SetUserEnvironment(lpEnvironment, + hKeyUser, + L"Environment"); + + RegCloseKey(hKeyUser); + return TRUE; - - hKeyUser = GetCurrentUserKey (hToken); - if (hKeyUser == NULL) - { - DPRINT1 ("GetCurrentUserKey() failed\n"); - RtlDestroyEnvironment (*lpEnvironment); - return FALSE; - } - - /* Set 'ALLUSERSPROFILE' variable */ - Length = MAX_PATH; - if (GetAllUsersProfileDirectoryW (Buffer, - &Length)) - { - SetUserEnvironmentVariable(lpEnvironment, - L"ALLUSERSPROFILE", - Buffer, - FALSE); - } - - /* Set 'USERPROFILE' variable */ - Length = MAX_PATH; - if (GetUserProfileDirectoryW (hToken, - Buffer, - &Length)) - { - SetUserEnvironmentVariable(lpEnvironment, - L"USERPROFILE", - Buffer, - FALSE); - } - - /* FIXME: Set 'USERDOMAIN' variable */ - - Length = MAX_PATH; - if (GetUserNameW(Buffer, - &Length)) - { - SetUserEnvironmentVariable(lpEnvironment, - L"USERNAME", - Buffer, - FALSE); - } - - - - /* Set user environment variables */ - SetUserEnvironment (lpEnvironment, - hKeyUser, - L"Environment"); - - RegCloseKey (hKeyUser); - - return TRUE; }
BOOL WINAPI -DestroyEnvironmentBlock (LPVOID lpEnvironment) -{ - DPRINT ("DestroyEnvironmentBlock() called\n"); - - if (lpEnvironment == NULL) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - RtlDestroyEnvironment (lpEnvironment); - - return TRUE; +DestroyEnvironmentBlock(LPVOID lpEnvironment) +{ + DPRINT("DestroyEnvironmentBlock() called\n"); + + if (lpEnvironment == NULL) + { + SetLastError(ERROR_INVALID_PARAMETER); + return FALSE; + } + + RtlDestroyEnvironment(lpEnvironment); + + return TRUE; }