]> gitweb.factorcode.org Git - factor.git/commitdiff
libc: reduce code duplication.
authorJohn Benediktsson <mrjbq7@gmail.com>
Fri, 21 Nov 2014 18:19:12 +0000 (10:19 -0800)
committerJohn Benediktsson <mrjbq7@gmail.com>
Fri, 21 Nov 2014 18:19:12 +0000 (10:19 -0800)
basis/io/backend/unix/unix.factor
basis/io/directories/unix/linux/linux.factor
basis/io/directories/unix/unix.factor
basis/io/sockets/unix/unix.factor
basis/libc/libc.factor

index 10eb5ed103c8abc82befd0d2b50828f5cadb8cd8..3a4c31565b5379b6fec6e860ccce86aef23803fd 100755 (executable)
@@ -97,7 +97,7 @@ M: fd refill
         errno {
             { EINTR [ 2drop +retry+ ] }
             { EAGAIN [ 2drop +input+ ] }
-            [ throw-errno ]
+            [ (throw-errno) ]
         } case
     ] if ;
 
@@ -117,7 +117,7 @@ M: fd drain
         errno {
             { EINTR [ 2drop +retry+ ] }
             { EAGAIN [ 2drop +output+ ] }
-            [ throw-errno ]
+            [ (throw-errno) ]
         } case
     ] if ;
 
index bc1e53366d9f2ddb835c288a43816c54c0cfd3ad..4ef4fafbfa54bfb116a6fc118ccae6eeaf465938 100644 (file)
@@ -7,7 +7,7 @@ IN: io.directories.unix.linux
 
 : next-dirent ( DIR* dirent* -- dirent* ? )
     f void* <ref> [
-        readdir64_r [ dup strerror libc-error ] unless-zero
+        readdir64_r [ (throw-errno) ] unless-zero
     ] 2keep void* deref ; inline
 
 M: linux (directory-entries) ( path -- seq )
index 6197e3a9e892e91101279eeaeb5eded07b505af0..d777da74556635fca6fa47dcdbcfa2dc28130cd8 100644 (file)
@@ -56,7 +56,7 @@ M: unix copy-file ( from to -- )
 
 : next-dirent ( DIR* dirent* -- dirent* ? )
     f void* <ref> [
-        readdir_r [ dup strerror libc-error ] unless-zero
+        readdir_r [ (throw-errno) ] unless-zero
     ] 2keep void* deref ; inline
 
 : >directory-entry ( dirent* -- directory-entry )
index 33f8e76c28cf8d0c95cfad90bb350999e934c073..83ab45feae1af56e9fb075a49eafad4c49f495b6 100644 (file)
@@ -56,7 +56,7 @@ DEFER: wait-to-connect
         errno {
             { EAGAIN [ wait-for-output ] }
             { EINTR [ wait-to-connect ] }
-            [ throw-errno ]
+            [ (throw-errno) ]
         } case
     ] if ;
 
@@ -67,7 +67,7 @@ M: object establish-connection
         errno {
             { EINTR [ establish-connection ] }
             { EINPROGRESS [ drop wait-for-output ] }
-            [ throw-errno ]
+            [ (throw-errno) ]
         } case
     ] if ;
 
@@ -114,7 +114,7 @@ M: object (accept)
                 [ (accept) ]
                 2bi
             ] }
-            [ throw-errno ]
+            [ (throw-errno) ]
         } case
     ] if ;
 
@@ -157,7 +157,7 @@ M: unix (receive-unsafe)
                 datagram +output+ wait-for-port
                 packet sockaddr len socket datagram do-send
             ] }
-            [ throw-errno ]
+            [ (throw-errno) ]
         } case
     ] when ; inline recursive
 
index 18adc2a249af8a788c6e4ae03f5475fa8a79230a..f21b64bec69c3642706096b593e666b63d69dc1c 100644 (file)
@@ -45,7 +45,9 @@ M: object strerror strerror_unsafe ;
 
 ERROR: libc-error errno message ;
 
-: throw-errno ( -- * ) errno dup strerror libc-error ;
+: (throw-errno) ( errno -- * ) dup strerror libc-error ;
+
+: throw-errno ( -- * ) errno (throw-errno) ;
 
 : io-error ( n -- ) 0 < [ throw-errno ] when ;