]> gitweb.factorcode.org Git - factor.git/commitdiff
Win32 IO fixes
authorMackenzie Straight <eizneckam@gmail.com>
Sun, 2 Jan 2005 21:14:34 +0000 (21:14 +0000)
committerMackenzie Straight <eizneckam@gmail.com>
Sun, 2 Jan 2005 21:14:34 +0000 (21:14 +0000)
library/io/buffer.factor
library/io/win32-server.factor
library/io/win32-stream.factor
native/win32/misc.c

index bfbec80db50929c055a71a702b338cbd64593bd6..6ea7cc3da36629b1160046b0875a3ae22b478302 100644 (file)
@@ -120,6 +120,13 @@ SYMBOL: buf-pos
         buf-fill [ swap str-length + ] change
     ] bind ;
 
+: buffer-append-char ( int buffer -- )
+    #! Append a single character to a buffer.
+    [
+        buf-ptr get buf-fill get + <alien> 0 set-alien-1
+        buf-fill [ 1 + ] change
+    ] bind ;
+
 : buffer-extend ( length buffer -- )
     #! Increases the size of the buffer by length.
     [
index ee1dc3d80add6e6d4c7db8c2b8cd03df370d7695..67b7ff4b831689343ae87ee1ca336714b7e7929c 100644 (file)
@@ -97,10 +97,10 @@ M: win32-server fclose ( server -- )
 
 M: win32-server accept ( server -- client )
     [
-        new-socket 1024 <buffer>
+        new-socket 64 <buffer>
         [
             alloc-io-task init-overlapped >r >r >r socket get r> r> 
-            buffer-ptr <alien> 0 "sockaddr-in" size 16 + dup NULL r> AcceptEx
+            buffer-ptr <alien> 0 32 32 NULL r> AcceptEx
             [ handle-socket-error ] unless (yield)
         ] callcc0
         swap dup add-completion <win32-stream> dupd <win32-client-stream>
index 9b12faf0983c1bb642b369b57bc825ce15a24f8a..3b8406abc13963c5d9ed32b43de3b5aa220297ef 100644 (file)
@@ -44,6 +44,7 @@ USE: win32-io-internals
 
 TRAITS: win32-stream
 GENERIC: win32-stream-handle
+GENERIC: do-write
 
 SYMBOL: handle
 SYMBOL: in-buffer
@@ -75,7 +76,11 @@ SYMBOL: file-size
 : maybe-flush-output ( -- )
     out-buffer get buffer-length 0 > [ flush-output ] when ;
 
-: do-write ( str -- )
+M: integer do-write ( int -- )
+    out-buffer get [ buffer-capacity 0 = [ flush-output ] when ] keep
+    buffer-append-char ;
+
+M: string do-write ( str -- )
     dup str-length out-buffer get buffer-capacity <= [
         out-buffer get buffer-append
     ] [
index b77894413478dd896ee89f860bc49da0097acc19..51d3414d927238370db25ea4bab37803dac49565 100644 (file)
@@ -8,27 +8,27 @@ void init_signals(void)
 {
 }
 
-void primitive_accept_fd(void)
+void primitive_accept_fd(F_WORD *word)
 {
-       undefined();
+       undefined(word);
 }
 
-void primitive_add_accept_io_task(void)
+void primitive_add_accept_io_task(F_WORD *word)
 {
-       undefined();
+       undefined(word);
 }
 
-void primitive_server_socket(void)
+void primitive_server_socket(F_WORD *word)
 {
-       undefined();
+       undefined(word);
 }
 
-void primitive_client_socket(void)
+void primitive_client_socket(F_WORD *word)
 {
-       undefined();
+       undefined(word);
 }
 
-void primitive_call_profiling(void)
+void primitive_call_profiling(F_WORD *word)
 {
-       undefined();
+       undefined(word);
 }