! Copyright (C) 2008 Doug Coleman.
-! See http://factorcode.org/license.txt for BSD license.
-USING: assocs environment.unix help.markup help.syntax
-io.streams.string libc sequences strings ;
+! See https://factorcode.org/license.txt for BSD license.
+USING: assocs help.markup help.syntax io.streams.string
+libc sequences strings ;
IN: environment
HELP: (os-envs)
{ $values
-
- { "seq" sequence } }
+ { "seq" sequence } }
{ $description "Returns a sequence of key/value pairs from the operating system." }
{ $notes "In most cases, use " { $link os-envs } " instead." } ;
HELP: (set-os-envs)
{ $values
- { "seq" sequence } }
+ { "seq" sequence } }
{ $description "Low-level word for replacing the current set of environment variables." }
{ $notes "In most cases, use " { $link set-os-envs } " instead." } ;
} ;
HELP: change-os-env
-{ $values { "key" string } { "quot" { $quotation "( old -- new )" } } }
+{ $values { "key" string } { "quot" { $quotation ( old -- new ) } } }
{ $description "Applies a quotation to change the value stored in an environment variable." }
{ $examples
"This is an operating system-specific feature. On Unix, you can do:"
HELP: set-os-envs-pointer
{ $values { "malloc" "a pointer to memory from the heap obtained through " { $link malloc } " or similar" } }
-{ $description "Set then " { $link environ } " pointer. Factor must retain a pointer to this memory until exiting the program." }
+{ $description "Set then " { $snippet "environ" } " pointer. Factor must retain a pointer to this memory until exiting the program." }
{ $notes
"Names and values of environment variables are operating system-specific."
} ;
"Names and values of environment variables are operating system-specific."
} ;
-{ os-env os-envs set-os-env unset-os-env set-os-envs set-os-envs-pointer change-os-env } related-words
+HELP: with-os-env
+{ $values { "value" string } { "key" string } { "quot" "quotation" } }
+{ $description "Calls a quotation with the " { $snippet "key" } " environment variable set to " { $snippet "value" } ", resetting the environment variable afterwards to its previous value." } ;
+
+{ os-env os-envs set-os-env unset-os-env set-os-envs set-os-envs-pointer change-os-env with-os-env } related-words
ARTICLE: "environment" "Environment variables"
"Leak-free setting of all environment variables on Unix:"
{ $subsections
set-os-envs-pointer
+
} ;
ABOUT: "environment"