summaryrefslogtreecommitdiff
path: root/libguile
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2010-03-30 10:53:05 +0200
committerAndy Wingo <wingo@pobox.com>2010-03-30 10:53:05 +0200
commit6128f34c4b6ae713c4dddc38093aafe7260ccab6 (patch)
treea830087ec04bb3c2d8f10c9fda5dc6cba3ed5828 /libguile
parent2533f10b40cdab357140347fe05e291f02bb5cb5 (diff)
downloadguile-6128f34c4b6ae713c4dddc38093aafe7260ccab6.tar.gz
correctly handle --no-autocompile (fixed broken previous patch)
* libguile/load.c (scm_init_load): Initialize %load-should-autocompile to false. * libguile/init.c (scm_i_init_guile): * libguile/load.h: * libguile/load.c (scm_init_load_should_autocompile): At the end of init, check GUILE_AUTO_COMPILE. * libguile/script.c (scm_compile_shell_switches): Instead of making --autocompile / --no-autocompile render into the s-expression, just handle them immediately, so that --no-autocompile takes effect for the expander.
Diffstat (limited to 'libguile')
-rw-r--r--libguile/init.c1
-rw-r--r--libguile/load.c17
-rw-r--r--libguile/load.h1
-rw-r--r--libguile/script.c24
4 files changed, 19 insertions, 24 deletions
diff --git a/libguile/init.c b/libguile/init.c
index 9879cb300..d6f619698 100644
--- a/libguile/init.c
+++ b/libguile/init.c
@@ -586,6 +586,7 @@ scm_i_init_guile (SCM_STACKITEM *base)
atexit (cleanup_for_exit);
scm_load_startup_files ();
+ scm_init_load_should_autocompile ();
}
/*
diff --git a/libguile/load.c b/libguile/load.c
index c64c746d6..eeb35439e 100644
--- a/libguile/load.c
+++ b/libguile/load.c
@@ -901,13 +901,9 @@ scm_init_load ()
scm_loc_compile_fallback_path
= SCM_VARIABLE_LOC (scm_c_define ("%compile-fallback-path", SCM_BOOL_F));
+ scm_loc_load_should_autocompile
+ = SCM_VARIABLE_LOC (scm_c_define ("%load-should-autocompile", SCM_BOOL_F));
- {
- SCM autocomp = scm_from_bool (scm_getenv_int ("GUILE_AUTO_COMPILE", 1));
- scm_loc_load_should_autocompile
- = SCM_VARIABLE_LOC (scm_c_define ("%load-should-autocompile", autocomp));
- }
-
the_reader = scm_make_fluid ();
scm_fluid_set_x (the_reader, SCM_BOOL_F);
scm_c_define("current-reader", the_reader);
@@ -921,6 +917,15 @@ scm_init_load ()
#include "libguile/load.x"
}
+void
+scm_init_load_should_autocompile ()
+{
+ *scm_loc_load_should_autocompile =
+ scm_from_bool (scm_getenv_int ("GUILE_AUTO_COMPILE", 1));
+}
+
+
+
/*
Local Variables:
c-file-style: "gnu"
diff --git a/libguile/load.h b/libguile/load.h
index 0feabad52..0bff53cbd 100644
--- a/libguile/load.h
+++ b/libguile/load.h
@@ -39,6 +39,7 @@ SCM_API SCM scm_c_primitive_load_path (const char *filename);
SCM_INTERNAL SCM scm_sys_warn_autocompilation_enabled (void);
SCM_INTERNAL void scm_init_load_path (void);
SCM_INTERNAL void scm_init_load (void);
+SCM_INTERNAL void scm_init_load_should_autocompile (void);
SCM_INTERNAL void scm_init_eval_in_scheme (void);
#endif /* SCM_LOAD_H */
diff --git a/libguile/script.c b/libguile/script.c
index 3ba656fcf..7b606ae9c 100644
--- a/libguile/script.c
+++ b/libguile/script.c
@@ -457,8 +457,6 @@ scm_compile_shell_switches (int argc, char **argv)
int use_emacs_interface = 0;
int turn_on_debugging = 0;
int dont_turn_on_debugging = 0;
- int turn_on_autocompile = 0;
- int dont_turn_on_autocompile = 0;
int i;
char *argv0 = guile;
@@ -595,17 +593,15 @@ scm_compile_shell_switches (int argc, char **argv)
turn_on_debugging = 0;
}
+ /* Do autocompile on/off now, because the form itself might need this
+ decision. */
else if (! strcmp (argv[i], "--autocompile"))
- {
- turn_on_autocompile = 1;
- dont_turn_on_autocompile = 0;
- }
+ scm_variable_set_x (scm_c_lookup ("%load-should-autocompile"),
+ SCM_BOOL_T);
else if (! strcmp (argv[i], "--no-autocompile"))
- {
- dont_turn_on_autocompile = 1;
- turn_on_autocompile = 0;
- }
+ scm_variable_set_x (scm_c_lookup ("%load-should-autocompile"),
+ SCM_BOOL_F);
else if (! strcmp (argv[i], "--emacs")) /* use emacs protocol */
use_emacs_interface = 1;
@@ -720,14 +716,6 @@ scm_compile_shell_switches (int argc, char **argv)
tail = scm_cons (scm_cons (sym_load_user_init, SCM_EOL), tail);
}
- /* If we are given an autocompilation arg, set %load-should-autocompile. */
- if (turn_on_autocompile || dont_turn_on_autocompile)
- {
- tail = scm_cons (scm_list_3 (sym_set_x, sym_sys_load_should_autocompile,
- scm_from_bool (turn_on_autocompile)),
- tail);
- }
-
/* If debugging was requested, or we are interactive and debugging
was not explicitly turned off, turn on debugging. */
if (turn_on_debugging || (interactive && !dont_turn_on_debugging))