Merge branch 'master' of git://factorcode.org/git/factor
commit
8395d537e0
|
@ -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." } ;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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> ;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 ;
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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 )
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue