]> git.donarmstrong.com Git - lilypond.git/commitdiff
new function: ly:start-environment
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 19 Mar 2007 02:31:10 +0000 (23:31 -0300)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Mon, 19 Mar 2007 02:31:10 +0000 (23:31 -0300)
Return environment as it was when entering main()

lily/general-scheme.cc
lily/include/main.hh
lily/main.cc

index cc46b631a301e473c596738b1fb10811a4cd3da2..f00d1938ab56746bc948f2cdc6ddb2f1172f55e5 100644 (file)
@@ -27,6 +27,24 @@ using namespace std;
 #include "file-name.hh"
 #include "string-convert.hh"
 
+LY_DEFINE (ly_start_environment, "ly:start-environment",
+          0, 0, 0, (),
+          "Return the environment, a list of strings, that was in effect at program start")
+{
+  SCM l = SCM_EOL;
+  SCM *tail = &l;
+
+  for (vsize i = 0; i < start_environment_global.size (); i++)
+    {
+      *tail = scm_cons (ly_string2scm (start_environment_global[i]),
+                       SCM_EOL);
+      tail = SCM_CDRLOC(*tail);
+    }
+
+  return l;
+}
+
+
 LY_DEFINE (ly_find_file, "ly:find-file",
           1, 0, 0, (SCM name),
           "Return the absolute file name of @var{name}, "
index 3db38a564f7d71cfcba52d4c489f807a12e36cd2..fb1d94b5934ca8f42df965c2aadd2add6ecb5e95 100644 (file)
@@ -27,6 +27,7 @@ extern string init_name_global;
 
 /* options */
 extern vector<string> dump_header_fieldnames_global;
+extern vector<string> start_environment_global;
 extern string output_backend_global;
 extern string output_name_global;
 extern bool be_safe_global;
index 6caafd73c90a503443444c71a1148dad4f122a4c..79de28c44f5dd56c82d8bddaf6a1e0904262c27d 100644 (file)
@@ -564,9 +564,14 @@ setup_guile_env ()
               "104857600", overwrite);
 }
 
+vector<string> start_environment_global;
 int
 main (int argc, char **argv)
 {
+  for (char **p = environ; *p; p++)
+    start_environment_global.push_back(*p);
+  
   if (getenv ("LILYPOND_VERBOSE"))
     be_verbose_global = true;