! Copyright (C) 2008 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: assocs combinators kernel sequences splitting system
-vocabs.loader ;
+! See https://factorcode.org/license.txt for BSD license.
+USING: assocs combinators continuations kernel sequences
+splitting system vocabs vocabs.loader ;
IN: environment
HOOK: os-env os ( key -- value )
HOOK: (set-os-envs) os ( seq -- )
+HOOK: set-os-envs-pointer os ( malloc -- )
+
+: change-os-env ( key quot -- )
+ [ [ os-env ] keep ] dip dip set-os-env ; inline
+
: os-envs ( -- assoc )
(os-envs) [ "=" split1 ] H{ } map>assoc ;
: set-os-envs ( assoc -- )
- [ "=" swap 3append ] { } assoc>map (set-os-envs) ;
+ [ "=" glue ] { } assoc>map (set-os-envs) ;
+
+: with-os-env ( value key quot -- )
+ over [ [ [ set-os-env ] 2curry ] [ compose ] bi* ] dip
+ [ os-env ] keep [ set-os-env ] 2curry finally ; inline
{
{ [ os unix? ] [ "environment.unix" require ] }
- { [ os winnt? ] [ "environment.winnt" require ] }
- { [ os wince? ] [ ] }
+ { [ os windows? ] [ "environment.windows" require ] }
} cond
+
+STARTUP-HOOK: [
+ "FACTOR_ROOTS" os-env [
+ os windows? ";" ":" ? split
+ [ add-vocab-root ] each
+ ] when*
+]