1 # This file is part of NIT ( http://www.nitlanguage.org ).
3 # Copyright 2006 Floréal Morandat <morandat@lirmm.fr>
4 # Copyright 2008 Jean Privat <jean@pryen.org>
6 # This file is free software, which comes along with NIT. This software is
7 # distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
8 # without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
9 # PARTICULAR PURPOSE. You can modify it is you want, provided this header
10 # is kept unaltered, and a notification of the changes is added.
11 # You are allowed to redistribute it and sell it, alone or is a part of
14 # Access to the environment variables of the process
20 # TODO prevoir une structure pour recup tout un environ, le modifier et le passer a process
23 # Return environment value for the symbol.
24 # If there is no such environment variable, then return ""
26 # assert "PATH".environ != ""
27 # assert "NIT %\n".environ == ""
30 var res
= self.to_cstring
.get_environ
31 # FIXME: There is no proper way to handle NULL C string yet. What a pitty.
32 var nulstr
= once
("".to_cstring
.get_environ
)
40 # Set the enviroment value of a variable.
42 # "NITis".setenv("fun")
43 # assert "NITis".environ == "fun"
44 fun setenv
(v
: String) do to_cstring
.setenv
( v
.to_cstring
)
46 # Search for the program `self` in all directories from `PATH`
47 fun program_is_in_path
: Bool
49 var full_path
= "PATH".environ
50 var paths
= full_path
.split
(":")
51 for path
in paths
do if path
.file_exists
then
52 if path
.join_path
(self).file_exists
then return true
59 redef class NativeString
60 private fun get_environ
: NativeString is extern "string_NativeString_NativeString_get_environ_0"
61 private fun setenv
( v
: NativeString ) is extern "string_NativeString_NativeString_setenv_1"
67 var x
= "NIT_SRAND".environ
68 if x
!= "" then srand_from
(x
.to_i
)