2008-10-18 22:20:13 -04:00
|
|
|
! Copyright (C) 2008 Doug Coleman.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
2009-09-17 23:07:21 -04:00
|
|
|
USING: alien alien.c-types alien.data alien.strings
|
|
|
|
alien.syntax kernel layouts sequences system unix
|
2011-11-02 14:23:41 -04:00
|
|
|
environment io.encodings.utf8 unix.utilities vocabs
|
2010-01-20 23:42:07 -05:00
|
|
|
combinators alien.accessors unix.ffi ;
|
2008-10-18 22:20:13 -04:00
|
|
|
IN: environment.unix
|
|
|
|
|
|
|
|
HOOK: environ os ( -- void* )
|
|
|
|
|
2008-12-11 01:03:58 -05:00
|
|
|
M: unix environ ( -- void* ) &: environ ;
|
2008-10-18 22:20:13 -04:00
|
|
|
|
|
|
|
M: unix os-env ( key -- value ) getenv ;
|
|
|
|
|
2013-03-29 14:38:37 -04:00
|
|
|
M: unix set-os-env ( value key -- )
|
|
|
|
over [
|
|
|
|
swap 1 setenv io-error
|
|
|
|
] [
|
|
|
|
nip unset-os-env
|
|
|
|
] if ;
|
2008-10-18 22:20:13 -04:00
|
|
|
|
|
|
|
M: unix unset-os-env ( key -- ) unsetenv io-error ;
|
|
|
|
|
|
|
|
M: unix (os-envs) ( -- seq )
|
2010-10-25 14:22:50 -04:00
|
|
|
environ void* deref utf8 alien>strings ;
|
2008-10-18 22:20:13 -04:00
|
|
|
|
|
|
|
: set-void* ( value alien -- ) 0 set-alien-cell ;
|
|
|
|
|
2012-08-25 21:37:50 -04:00
|
|
|
M: unix set-os-envs-pointer ( malloc -- ) environ set-void* ;
|
|
|
|
|
2008-10-18 22:20:13 -04:00
|
|
|
M: unix (set-os-envs) ( seq -- )
|
2012-08-25 21:37:50 -04:00
|
|
|
utf8 strings>alien malloc-byte-array set-os-envs-pointer ;
|
2008-10-18 22:20:13 -04:00
|
|
|
|
|
|
|
os {
|
|
|
|
{ macosx [ "environment.unix.macosx" require ] }
|
|
|
|
[ drop ]
|
|
|
|
} case
|