]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/environment/environment.factor
basis: use lint.vocabs tool to trim using lists
[factor.git] / basis / environment / environment.factor
index e60a52c995b94fb2613c4b272242ff1a88663a9c..ee3071acbea9a67be0690c5b5d9c84a605c85e58 100644 (file)
@@ -1,7 +1,7 @@
 ! Copyright (C) 2008 Doug Coleman.
 ! See http://factorcode.org/license.txt for BSD license.
-USING: assocs combinators kernel sequences splitting system
-vocabs.loader init ;
+USING: assocs combinators continuations kernel sequences
+splitting system vocabs vocabs.loader ;
 IN: environment
 
 HOOK: os-env os ( key -- value )
@@ -14,22 +14,29 @@ HOOK: (os-envs) os ( -- seq )
 
 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 -- )
     [ "=" 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
 
-[
-    "FACTOR_ROOTS" os-env
-    [
+STARTUP-HOOK: [
+    "FACTOR_ROOTS" os-env [
         os windows? ";" ":" ? split
         [ add-vocab-root ] each
-    ] when*    
-] "environment" add-init-hook
+    ] when*
+]