-/* $Id$
- *
- * COPYRIGHT: See COPYING in the top level directory
+/* COPYRIGHT: See COPYING in the top level directory
* PROJECT: ReactOS system libraries
* FILE: lib/rtl/env.c
* PURPOSE: Environment functions
* PROGRAMMER: Eric Kohl
- * UPDATE HISTORY:
- * Created 30/09/98
*/
/* INCLUDES ******************************************************************/
-#include <ddk/ntddk.h>
-#include <ntdll/rtl.h>
-#include <napi/teb.h>
-#include <ntos/minmax.h>
-#include <string.h>
+#include <rtl.h>
#define NDEBUG
-#include <ntdll/ntdll.h>
+#include <debug.h>
+PPEB NTAPI RtlpCurrentPeb(VOID);
/* FUNCTIONS *****************************************************************/
/*
* @implemented
*/
-NTSTATUS STDCALL
+NTSTATUS NTAPI
RtlCreateEnvironment(BOOLEAN Inherit,
PWSTR *Environment)
{
/*
* @implemented
*/
-VOID STDCALL
+VOID NTAPI
RtlDestroyEnvironment(PWSTR Environment)
{
ULONG Size = 0;
/*
* @implemented
*/
-NTSTATUS STDCALL
+NTSTATUS NTAPI
RtlExpandEnvironmentStrings_U(PWSTR Environment,
PUNICODE_STRING Source,
PUNICODE_STRING Destination,
}
else
{
- /* Process environment variable. */
-
+ /* Process environment variable. */
+
VariableEnd = SourceBuffer + 1;
Tail = SourceLength - 1;
while (*VariableEnd != L'%' && Tail != 0)
if (Tail != 0)
{
- Variable.MaximumLength =
+ Variable.MaximumLength =
Variable.Length = (VariableEnd - (SourceBuffer + 1)) * sizeof(WCHAR);
Variable.Buffer = SourceBuffer + 1;
/*
* @implemented
*/
-VOID STDCALL
+VOID NTAPI
RtlSetCurrentEnvironment(PWSTR NewEnvironment,
PWSTR *OldEnvironment)
{
PVOID EnvPtr;
- DPRINT("NewEnvironment %x OldEnvironment %x\n",
+ DPRINT("NewEnvironment 0x%p OldEnvironment 0x%p\n",
NewEnvironment, OldEnvironment);
RtlAcquirePebLock();
/*
* @implemented
*/
-NTSTATUS STDCALL
+NTSTATUS NTAPI
RtlSetEnvironmentVariable(PWSTR *Environment,
PUNICODE_STRING Name,
PUNICODE_STRING Value)
/*
* @implemented
*/
-NTSTATUS STDCALL
+NTSTATUS NTAPI
RtlQueryEnvironmentVariable_U(PWSTR Environment,
PUNICODE_STRING Name,
PUNICODE_STRING Value)
if (Environment == NULL)
{
- Environment = NtCurrentPeb()->ProcessParameters->Environment;
- SysEnvUsed = TRUE;
+ PPEB Peb = RtlpCurrentPeb();
+ if (Peb) {
+ Environment = Peb->ProcessParameters->Environment;
+ SysEnvUsed = TRUE;
+ }
}
if (Environment == NULL)
+ {
return(STATUS_VARIABLE_NOT_FOUND);
+ }
Value->Length = 0;
if (SysEnvUsed == TRUE)
RtlAcquirePebLock();
wcs = Environment;
+ DPRINT("Starting search at :%p\n", wcs);
while (*wcs)
{
var.Buffer = wcs++;
if (wcs == NULL)
{
wcs = var.Buffer + wcslen(var.Buffer);
+ DPRINT("Search at :%S\n", wcs);
}
if (*wcs)
{
var.Length = var.MaximumLength = (wcs - var.Buffer) * sizeof(WCHAR);
val = ++wcs;
wcs += wcslen(wcs);
+ DPRINT("Search at :%S\n", wcs);
if (RtlEqualUnicodeString(&var, Name, TRUE))
{
if (SysEnvUsed == TRUE)
RtlReleasePebLock();
- DPRINT("Return STATUS_VARIABLE_NOT_FOUND\n");
+ DPRINT("Return STATUS_VARIABLE_NOT_FOUND: %wZ\n", Name);
return(STATUS_VARIABLE_NOT_FOUND);
}