HOOK: environ os ( -- void* )
-M: unix environ ( -- void* ) &: environ ;
+M: unix environ &: environ ;
-M: unix os-env ( key -- value ) getenv ;
+M: unix os-env getenv ;
-M: unix set-os-env ( value key -- )
+M: unix set-os-env
over [
swap 1 setenv io-error
] [
nip unset-os-env
] if ;
-M: unix unset-os-env ( key -- ) unsetenv io-error ;
+M: unix unset-os-env unsetenv io-error ;
-M: unix (os-envs) ( -- seq )
+M: unix (os-envs)
environ void* deref native-string-encoding alien>strings ;
: set-void* ( value alien -- ) 0 set-alien-cell ;
-M: unix set-os-envs-pointer ( malloc -- ) environ set-void* ;
+M: unix set-os-envs-pointer environ set-void* ;
-M: unix (set-os-envs) ( seq -- )
+M: unix (set-os-envs)
utf8 strings>alien malloc-byte-array set-os-envs-pointer ;
os macosx? [ "environment.unix.macosx" require ] when