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

db4
Slava Pestov 2008-04-11 22:56:26 -05:00
commit 8395d537e0
9 changed files with 78 additions and 72 deletions

View File

@ -101,7 +101,7 @@ HELP: set-os-envs
{ $values { "assoc" "an association mapping strings to strings" } } { $values { "assoc" "an association mapping strings to strings" } }
{ $description "Replaces the current set of environment variables." } { $description "Replaces the current set of environment variables." }
{ $notes { $notes
"Names and values of environment variables are operating system-specific." "Names and values of environment variables are operating system-specific. Windows NT allows values up to 32766 characters in length."
} }
{ $errors "Windows CE has no concept of environment variables, so this word throws an error there." } ; { $errors "Windows CE has no concept of environment variables, so this word throws an error there." } ;

View File

@ -1,4 +1,5 @@
USING: math tools.test system prettyprint namespaces kernel ; USING: math tools.test system prettyprint namespaces kernel
strings sequences ;
IN: system.tests IN: system.tests
os wince? [ os wince? [
@ -19,3 +20,8 @@ os unix? [
[ ] [ "factor-test-key-1" unset-os-env ] unit-test [ ] [ "factor-test-key-1" unset-os-env ] unit-test
[ f ] [ "factor-test-key-1" os-env ] unit-test [ f ] [ "factor-test-key-1" os-env ] unit-test
[ ] [
32766 CHAR: a <string> "factor-test-key-long" set-os-env
] unit-test
[ 32766 ] [ "factor-test-key-long" os-env length ] unit-test
[ ] [ "factor-test-key-long" unset-os-env ] unit-test

View File

@ -7,8 +7,12 @@ IN: io.monitors
HOOK: init-monitors io-backend ( -- ) HOOK: init-monitors io-backend ( -- )
M: object init-monitors ;
HOOK: dispose-monitors io-backend ( -- ) HOOK: dispose-monitors io-backend ( -- )
M: object dispose-monitors ;
: with-monitors ( quot -- ) : with-monitors ( quot -- )
[ [
init-monitors init-monitors

View File

@ -13,10 +13,6 @@ M: bsd init-io ( -- )
[ mx get-global reads>> set-at ] [ mx get-global reads>> set-at ]
[ mx get-global writes>> set-at ] 2bi ; [ mx get-global writes>> set-at ] 2bi ;
M: bsd init-monitors ;
M: bsd dispose-monitors ;
M: bsd (monitor) ( path recursive? mailbox -- ) M: bsd (monitor) ( path recursive? mailbox -- )
swap [ "Recursive kqueue monitors not supported" throw ] when swap [ "Recursive kqueue monitors not supported" throw ] when
<vnode-monitor> ; <vnode-monitor> ;

View File

@ -12,10 +12,6 @@ TUPLE: macosx-monitor < monitor handle ;
>r first { +modify-file+ } r> queue-change >r first { +modify-file+ } r> queue-change
] curry each ; ] curry each ;
M: macosx init-monitors ;
M: macosx dispose-monitors ;
M:: macosx (monitor) ( path recursive? mailbox -- monitor ) M:: macosx (monitor) ( path recursive? mailbox -- monitor )
path mailbox macosx-monitor construct-monitor path mailbox macosx-monitor construct-monitor
dup [ enqueue-notifications ] curry dup [ enqueue-notifications ] curry

View File

@ -3,7 +3,7 @@ io.timeouts io.nonblocking io.windows io.windows.nt.backend
kernel libc math threads windows windows.kernel32 system kernel libc math threads windows windows.kernel32 system
alien.c-types alien.arrays sequences combinators combinators.lib alien.c-types alien.arrays sequences combinators combinators.lib
sequences.lib ascii splitting alien strings assocs namespaces sequences.lib ascii splitting alien strings assocs namespaces
io.files.private ; io.files.private accessors ;
IN: io.windows.nt.files IN: io.windows.nt.files
M: winnt cwd M: winnt cwd
@ -87,9 +87,9 @@ M: port port-flush
: finish-read ( overlapped port -- ) : finish-read ( overlapped port -- )
dup pending-error dup pending-error
tuck get-overlapped-result dup zero? [ tuck get-overlapped-result dup zero? [
drop t swap set-port-eof? drop t >>eof drop
] [ ] [
dup pick n>buffer dup pick buffer>> n>buffer
swap update-file-ptr swap update-file-ptr
] if ; ] if ;

View File

@ -4,7 +4,7 @@ USING: alien alien.c-types libc destructors locals
kernel math assocs namespaces continuations sequences hashtables kernel math assocs namespaces continuations sequences hashtables
sorting arrays combinators math.bitfields strings system sorting arrays combinators math.bitfields strings system
io.windows io.windows.nt.backend io.monitors io.nonblocking io.windows io.windows.nt.backend io.monitors io.nonblocking
io.buffers io.files io.timeouts io io.buffers io.files io.timeouts io accessors threads
windows windows.kernel32 windows.types ; windows windows.kernel32 windows.types ;
IN: io.windows.nt.monitors IN: io.windows.nt.monitors
@ -21,7 +21,9 @@ IN: io.windows.nt.monitors
dup add-completion dup add-completion
f <win32-file> ; f <win32-file> ;
TUPLE: win32-monitor < monitor port recursive ; TUPLE: win32-monitor-port < input-port recursive ;
TUPLE: win32-monitor < monitor port ;
: begin-reading-changes ( port -- overlapped ) : begin-reading-changes ( port -- overlapped )
{ {
@ -83,9 +85,11 @@ TUPLE: win32-monitor < monitor port recursive ;
M:: winnt (monitor) ( path recursive? mailbox -- monitor ) M:: winnt (monitor) ( path recursive? mailbox -- monitor )
[ [
path mailbox win32-monitor construct-monitor path mailbox win32-monitor construct-monitor
path open-directory <buffered-port> >>port path open-directory \ win32-monitor-port <buffered-port>
recursive? >>recursive recursive? >>recursive
dup port>> [ fill-queue-thread ] curry spawn drop >>port
dup [ fill-queue-thread ] curry
"Windows monitor thread" spawn drop
] with-destructors ; ] with-destructors ;
M: win32-monitor dispose M: win32-monitor dispose

View File

@ -2,7 +2,7 @@ USING: alien alien.accessors alien.c-types byte-arrays
continuations destructors io.nonblocking io.timeouts io.sockets continuations destructors io.nonblocking io.timeouts io.sockets
io.sockets.impl io namespaces io.streams.duplex io.windows io.sockets.impl io namespaces io.streams.duplex io.windows
io.windows.nt.backend windows.winsock kernel libc math sequences io.windows.nt.backend windows.winsock kernel libc math sequences
threads classes.tuple.lib system ; threads classes.tuple.lib system accessors ;
IN: io.windows.nt.sockets IN: io.windows.nt.sockets
: malloc-int ( object -- object ) : malloc-int ( object -- object )

View File

@ -218,9 +218,9 @@ void sleep_millis(DWORD msec)
DEFINE_PRIMITIVE(os_env) DEFINE_PRIMITIVE(os_env)
{ {
F_CHAR *key = unbox_u16_string(); F_CHAR *key = unbox_u16_string();
F_CHAR *value = safe_malloc(MAX_UNICODE_PATH); F_CHAR *value = safe_malloc(MAX_UNICODE_PATH * 2);
int ret; int ret;
ret = GetEnvironmentVariable(key, value, MAX_UNICODE_PATH); ret = GetEnvironmentVariable(key, value, MAX_UNICODE_PATH * 2);
if(ret == 0) if(ret == 0)
dpush(F); dpush(F);
else else