]> gitweb.factorcode.org Git - factor.git/commitdiff
libc: Fix strerror for unix.
authorDoug Coleman <doug.coleman@gmail.com>
Fri, 4 Jul 2014 10:25:57 +0000 (03:25 -0700)
committerDoug Coleman <doug.coleman@gmail.com>
Fri, 4 Jul 2014 10:25:57 +0000 (03:25 -0700)
basis/libc/libc.factor
basis/libc/unix/authors.txt [new file with mode: 0644]
basis/libc/unix/platforms.txt [new file with mode: 0644]
basis/libc/unix/unix.factor [new file with mode: 0644]

index 15f2db82fbbb0aab3751ce2f02ca5ec49f4da7ad..6f77321f642a6f50379aa855f62c76af309ae550 100644 (file)
@@ -9,6 +9,10 @@ IN: libc
 
 HOOK: strerror os ( errno -- str )
 
+! For strerror on Unix all platforms
+<< os windows? [ "libc.unix" require ] unless >>
+
+! For libc.linux, libc.windows, libc.macosx...
 << "libc." os unparse append require >>
 
 LIBRARY: factor
diff --git a/basis/libc/unix/authors.txt b/basis/libc/unix/authors.txt
new file mode 100644 (file)
index 0000000..7c1b2f2
--- /dev/null
@@ -0,0 +1 @@
+Doug Coleman
diff --git a/basis/libc/unix/platforms.txt b/basis/libc/unix/platforms.txt
new file mode 100644 (file)
index 0000000..509143d
--- /dev/null
@@ -0,0 +1 @@
+unix
diff --git a/basis/libc/unix/unix.factor b/basis/libc/unix/unix.factor
new file mode 100644 (file)
index 0000000..f474d61
--- /dev/null
@@ -0,0 +1,10 @@
+! Copyright (C) 2014 Doug Coleman.
+! See http://factorcode.org/license.txt for BSD license.
+USING: alien.strings destructors kernel libc system ;
+IN: libc.unix
+
+M: unix strerror ( errno -- str )
+    [
+        1024 [ malloc &free ] keep [ strerror_r ] 2keep drop nip
+        alien>native-string
+    ] with-destructors ;