From e17c0d07dd17dc1d100ba3a1929a5beff7841d64 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Thu, 29 Dec 2005 20:51:48 +0000 Subject: [PATCH] -> "indirect-pointer" added words to win32-stream bootstraps with latest cvs 12/29/05 --- library/win32/win32-io-internals.factor | 6 +++--- library/win32/win32-server.factor | 8 +++++--- library/win32/win32-stream.factor | 20 +++++++++++++++++++- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/library/win32/win32-io-internals.factor b/library/win32/win32-io-internals.factor index 11121f6ddc..f15f14a33d 100644 --- a/library/win32/win32-io-internals.factor +++ b/library/win32/win32-io-internals.factor @@ -104,9 +104,9 @@ C: io-callback ( -- callback ) : (wait-for-io) ( timeout -- error overlapped len ) >r completion-port get - [ 0 swap set-indirect-pointer-value ] keep - - + "indirect-pointer" [ 0 swap set-indirect-pointer-value ] keep + "indirect-pointer" + "indirect-pointer" pick over r> -rot >r >r GetQueuedCompletionStatus r> r> ; : overlapped>callback ( overlapped -- callback ) diff --git a/library/win32/win32-server.factor b/library/win32/win32-server.factor index 8c525c0607..b09c1ed7b7 100644 --- a/library/win32/win32-server.factor +++ b/library/win32/win32-server.factor @@ -49,7 +49,7 @@ SYMBOL: socket AF_INET SOCK_STREAM 0 f f WSA_FLAG_OVERLAPPED WSASocket ; : setup-sockaddr ( port -- sockaddr ) - swap + "sockaddr-in" swap htons over set-sockaddr-in-port INADDR_ANY over set-sockaddr-in-addr AF_INET over set-sockaddr-in-family ; @@ -66,8 +66,10 @@ SYMBOL: socket dup sockaddr-in-port ntohs swap sockaddr-in-addr inet-ntoa ; : extract-remote-host ( buffer -- port host ) - buffer-ptr 0 32 32 - dup >r + buffer-ptr 0 32 32 "indirect-pointer" + "indirect-pointer" + "indirect-pointer" + dup >r "indirect-pointer" GetAcceptExSockaddrs r> indirect-pointer-value sockaddr> ; C: win32-client-stream ( buf stream -- stream ) diff --git a/library/win32/win32-stream.factor b/library/win32/win32-stream.factor index 6b01bc52ba..3c1c1ec0d4 100644 --- a/library/win32/win32-stream.factor +++ b/library/win32/win32-stream.factor @@ -122,6 +122,9 @@ M: string do-write ( str -- ) M: win32-stream stream-write ( str stream -- ) win32-stream-this [ do-write ] bind ; +M: win32-stream stream-write1 ( char stream -- ) + win32-stream-this [ >fixnum do-write ] bind ; + M: win32-stream stream-read ( count stream -- str ) win32-stream-this [ dup swap do-read-count ] bind ; @@ -130,6 +133,15 @@ M: win32-stream stream-read1 ( stream -- str ) 1 consume-input dup length 0 = [ drop f ] when first ] bind ; +M: win32-stream stream-readln ( stream -- str ) + win32-stream-this [ readln ] bind ; + +M: win32-stream stream-terpri + win32-stream-this [ CHAR: \n do-write ] bind ; + +M: win32-stream stream-terpri* + win32-stream-this stream-terpri ; + M: win32-stream stream-flush ( stream -- ) win32-stream-this [ maybe-flush-output ] bind ; @@ -141,6 +153,9 @@ M: win32-stream stream-close ( stream -- ) out-buffer get buffer-free ] bind ; +M: win32-stream stream-format ( string style stream -- ) + win32-stream-this [ drop do-write ] bind ; + M: win32-stream win32-stream-handle ( stream -- handle ) win32-stream-this [ handle get ] bind ; @@ -152,6 +167,10 @@ M: win32-stream expire ( stream -- ) timeout get [ millis cutoff get > [ handle get CancelIo ] when ] when ] bind ; +USE: inspector +M: win32-stream with-nested-stream ( quot style stream -- ) + win32-stream-this [ drop stream get swap with-stream* ] bind ; + C: win32-stream ( handle -- stream ) swap [ dup f GetFileSize dup -1 = not [ @@ -170,4 +189,3 @@ C: win32-stream ( handle -- stream ) : ( path -- stream ) f t win32-open-file ; -