From dbba9f931bcf842fefa48fbef83d64da54603c19 Mon Sep 17 00:00:00 2001 From: Doug Coleman Date: Fri, 4 Jul 2014 03:25:57 -0700 Subject: [PATCH] libc: Fix strerror for unix. --- basis/libc/libc.factor | 4 ++++ basis/libc/unix/authors.txt | 1 + basis/libc/unix/platforms.txt | 1 + basis/libc/unix/unix.factor | 10 ++++++++++ 4 files changed, 16 insertions(+) create mode 100644 basis/libc/unix/authors.txt create mode 100644 basis/libc/unix/platforms.txt create mode 100644 basis/libc/unix/unix.factor diff --git a/basis/libc/libc.factor b/basis/libc/libc.factor index 15f2db82fb..6f77321f64 100644 --- a/basis/libc/libc.factor +++ b/basis/libc/libc.factor @@ -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 index 0000000000..7c1b2f2279 --- /dev/null +++ b/basis/libc/unix/authors.txt @@ -0,0 +1 @@ +Doug Coleman diff --git a/basis/libc/unix/platforms.txt b/basis/libc/unix/platforms.txt new file mode 100644 index 0000000000..509143d863 --- /dev/null +++ b/basis/libc/unix/platforms.txt @@ -0,0 +1 @@ +unix diff --git a/basis/libc/unix/unix.factor b/basis/libc/unix/unix.factor new file mode 100644 index 0000000000..f474d61159 --- /dev/null +++ b/basis/libc/unix/unix.factor @@ -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 ;