Merge branch 'master' of git://factorcode.org/git/factor

db4
Doug Coleman 2008-10-19 00:06:28 -05:00
commit ef6debeced
4 changed files with 24 additions and 13 deletions

View File

@ -1,15 +1,17 @@
! Copyright (C) 2008 Doug Coleman. ! Copyright (C) 2008 Doug Coleman.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: alien.strings fry io.encodings.utf16 kernel USING: alien.strings fry io.encodings.utf16 kernel
splitting windows windows.kernel32 ; splitting windows windows.kernel32 system environment
alien.c-types sequences windows.errors io.streams.memory
io.encodings io ;
IN: environment.winnt IN: environment.winnt
M: winnt os-env ( key -- value ) M: winnt os-env ( key -- value )
MAX_UNICODE_PATH "TCHAR" <c-array> MAX_UNICODE_PATH "TCHAR" <c-array>
[ GetEnvironmentVariable ] keep over 0 = [ [ dup length GetEnvironmentVariable ] keep over 0 = [
2drop f 2drop f
] [ ] [
nip utf16 alien>string nip utf16n alien>string
] if ; ] if ;
M: winnt set-os-env ( value key -- ) M: winnt set-os-env ( value key -- )
@ -22,4 +24,10 @@ M: winnt unset-os-env ( key -- )
] when ; ] when ;
M: winnt (os-envs) ( -- seq ) M: winnt (os-envs) ( -- seq )
GetEnvironmentStrings [ "\0" split ] [ FreeEnvironmentStrings ] bi ; GetEnvironmentStrings [
<memory-stream> [
utf16n decode-input
[ "\0" read-until drop dup empty? not ]
[ ] [ drop ] produce
] with-input-stream*
] [ FreeEnvironmentStrings win32-error=0/f ] bi ;

View File

@ -4,6 +4,7 @@ IN: windows.errors
: ERROR_SUCCESS 0 ; inline : ERROR_SUCCESS 0 ; inline
: ERROR_HANDLE_EOF 38 ; inline : ERROR_HANDLE_EOF 38 ; inline
: ERROR_BROKEN_PIPE 109 ; inline : ERROR_BROKEN_PIPE 109 ; inline
: ERROR_ENVVAR_NOT_FOUND 203 ; inline
: ERROR_IO_INCOMPLETE 996 ; inline : ERROR_IO_INCOMPLETE 996 ; inline
: ERROR_IO_PENDING 997 ; inline : ERROR_IO_PENDING 997 ; inline

View File

@ -838,7 +838,8 @@ ALIAS: FindNextFile FindNextFileW
! FUNCTION: FormatMessageW ! FUNCTION: FormatMessageW
! FUNCTION: FreeConsole ! FUNCTION: FreeConsole
! FUNCTION: FreeEnvironmentStringsA ! FUNCTION: FreeEnvironmentStringsA
! FUNCTION: FreeEnvironmentStringsW FUNCTION: BOOL FreeEnvironmentStringsW ( LPTCH lpszEnvironmentBlock ) ;
ALIAS: FreeEnvironmentStrings FreeEnvironmentStringsW
! FUNCTION: FreeLibrary ! FUNCTION: FreeLibrary
! FUNCTION: FreeLibraryAndExitThread ! FUNCTION: FreeLibraryAndExitThread
! FUNCTION: FreeResource ! FUNCTION: FreeResource
@ -933,11 +934,12 @@ FUNCTION: HANDLE GetCurrentThread ( ) ;
! FUNCTION: GetDllDirectoryW ! FUNCTION: GetDllDirectoryW
! FUNCTION: GetDriveTypeA ! FUNCTION: GetDriveTypeA
! FUNCTION: GetDriveTypeW ! FUNCTION: GetDriveTypeW
FUNCTION: LPTCH GetEnvironmentStrings ( ) ; FUNCTION: void* GetEnvironmentStringsW ( ) ;
! FUNCTION: GetEnvironmentStringsA ! FUNCTION: GetEnvironmentStringsA
ALIAS: GetEnvironmentStrings GetEnvironmentStringsW ALIAS: GetEnvironmentStrings GetEnvironmentStringsW
! FUNCTION: GetEnvironmentVariableA ! FUNCTION: GetEnvironmentVariableA
! FUNCTION: GetEnvironmentVariableW FUNCTION: DWORD GetEnvironmentVariableW ( LPCTSTR lpName, LPTSTR lpBuffer, DWORD nSize ) ;
ALIAS: GetEnvironmentVariable GetEnvironmentVariableW
FUNCTION: BOOL GetExitCodeProcess ( HANDLE hProcess, LPDWORD lpExitCode ) ; FUNCTION: BOOL GetExitCodeProcess ( HANDLE hProcess, LPDWORD lpExitCode ) ;
! FUNCTION: GetExitCodeThread ! FUNCTION: GetExitCodeThread
! FUNCTION: GetExpandedNameA ! FUNCTION: GetExpandedNameA
@ -1418,7 +1420,8 @@ ALIAS: SetCurrentDirectory SetCurrentDirectoryW
! FUNCTION: SetDllDirectoryW ! FUNCTION: SetDllDirectoryW
FUNCTION: BOOL SetEndOfFile ( HANDLE hFile ) ; FUNCTION: BOOL SetEndOfFile ( HANDLE hFile ) ;
! FUNCTION: SetEnvironmentVariableA ! FUNCTION: SetEnvironmentVariableA
! FUNCTION: SetEnvironmentVariableW FUNCTION: BOOL SetEnvironmentVariableW ( LPCTSTR key, LPCTSTR value ) ;
ALIAS: SetEnvironmentVariable SetEnvironmentVariableW
! FUNCTION: SetErrorMode ! FUNCTION: SetErrorMode
! FUNCTION: SetEvent ! FUNCTION: SetEvent
! FUNCTION: SetFileApisToANSI ! FUNCTION: SetFileApisToANSI

View File

@ -64,13 +64,12 @@ TYPEDEF: ulonglong DWORD64
TYPEDEF: longlong LARGE_INTEGER TYPEDEF: longlong LARGE_INTEGER
TYPEDEF: LARGE_INTEGER* PLARGE_INTEGER TYPEDEF: LARGE_INTEGER* PLARGE_INTEGER
TYPEDEF: WCHAR TCHAR
TYPEDEF: TCHAR* LPTCH
TYPEDEF: TCHAR TBYTE
TYPEDEF: wchar_t* LPCSTR TYPEDEF: wchar_t* LPCSTR
TYPEDEF: wchar_t* LPWSTR TYPEDEF: wchar_t* LPWSTR
TYPEDEF: WCHAR TCHAR
TYPEDEF: LPWSTR LPTCH
TYPEDEF: LPWSTR PTCH
TYPEDEF: TCHAR TBYTE
TYPEDEF: WORD ATOM TYPEDEF: WORD ATOM
TYPEDEF: BYTE BOOLEAN TYPEDEF: BYTE BOOLEAN