summaryrefslogtreecommitdiff
path: root/gr-run-waveform/xyzzy-load.c
diff options
context:
space:
mode:
Diffstat (limited to 'gr-run-waveform/xyzzy-load.c')
-rw-r--r--gr-run-waveform/xyzzy-load.c40
1 files changed, 28 insertions, 12 deletions
diff --git a/gr-run-waveform/xyzzy-load.c b/gr-run-waveform/xyzzy-load.c
index bf814fbd1..f96ae73ef 100644
--- a/gr-run-waveform/xyzzy-load.c
+++ b/gr-run-waveform/xyzzy-load.c
@@ -65,6 +65,9 @@
#include "xyzzy.h"
+// This is the magic number used when loading files
+static const char *MAGIC = "-XyZzY-";
+
/* Loading a file, given an absolute filename. */
@@ -76,7 +79,7 @@ static SCM *scm_loc_load_hook;
static SCM the_reader = SCM_BOOL_F;
static size_t the_reader_fluid_num = 0;
-SCM_DEFINE (scm_xyzzy_primitive_load, "primitive-load", 1, 0, 0,
+SCM_DEFINE (scm_primitive_load, "primitive-load", 1, 0, 0,
(SCM filename),
"Load the file named @var{filename} and evaluate its contents in\n"
"the top-level environment. The load paths are not searched;\n"
@@ -85,7 +88,7 @@ SCM_DEFINE (scm_xyzzy_primitive_load, "primitive-load", 1, 0, 0,
"@code{%load-hook} is defined, it should be bound to a procedure\n"
"that will be called before any code is loaded. See the\n"
"documentation for @code{%load-hook} later in this section.")
-#define FUNC_NAME s_scm_xyzzy_primitive_load
+#define FUNC_NAME s_scm_primitive_load
{
SCM hook = *scm_loc_load_hook;
SCM_VALIDATE_STRING (1, filename);
@@ -99,7 +102,14 @@ SCM_DEFINE (scm_xyzzy_primitive_load, "primitive-load", 1, 0, 0,
if (!scm_is_false (hook))
scm_call_1 (hook, filename);
+ /* if (strncmp(scm_from_locale_string(filename), MAGIC, strlen(MAGIC))) { */
+ /* const char *ptr = strdup(scm_from_locale_string(filename)); */
+ /* /\* ptr += strlen(MAGIC); *\/ */
+ /* fprintf(stderr, "FIXME: magic %s\n", ptr); */
+ /* } */
+
{ /* scope */
+ fprintf(stderr, "FIXME: magic %s\n", scm_from_locale_string(filename));
SCM port = scm_open_file (filename, scm_from_locale_string ("r"));
scm_dynwind_begin (SCM_F_DYNWIND_REWINDABLE);
scm_i_dynwind_current_load_port (port);
@@ -132,7 +142,8 @@ SCM_DEFINE (scm_xyzzy_primitive_load, "primitive-load", 1, 0, 0,
SCM
scm_c_primitive_load (const char *filename)
{
- return scm_xyzzy_primitive_load (scm_from_locale_string (filename));
+ fprintf(stderr, "TRACE %s: %d:\n", __FUNCTION__, __LINE__);
+ return scm_primitive_load (scm_from_locale_string (filename));
}
@@ -218,6 +229,8 @@ scm_init_load_path ()
char *env;
SCM path = SCM_EOL;
+ fprintf(stderr, "TRACE %s: %d:\n", __FUNCTION__, __LINE__);
+
#ifdef SCM_LIBRARY_DIR
path = scm_list_3 (scm_from_locale_string (SCM_SITE_DIR),
scm_from_locale_string (SCM_LIBRARY_DIR),
@@ -327,6 +340,8 @@ SCM_DEFINE (scm_xyzzy_search_path, "search-path", 2, 1, 0,
SCM result = SCM_BOOL_F;
SCM exists;
+ fprintf(stderr, "TRACE %s: %d: %s\n", __FUNCTION__, __LINE__, scm_to_locale_string(filename));
+
if (SCM_UNBNDP (extensions))
extensions = SCM_EOL;
@@ -335,16 +350,17 @@ SCM_DEFINE (scm_xyzzy_search_path, "search-path", 2, 1, 0,
filename_len = strlen (filename_chars);
scm_dynwind_free (filename_chars);
- fprintf(stderr, "TRACE %s: %d: %s\n", __FUNCTION__, __LINE__, filename_chars);
-
/* Look in the fake filesystem for this file */
if (xyzzy_file_exists(filename_chars)) {
- fprintf(stderr, "TRACE %s exists in filesystem.dat!\n", filename_chars);
- exists = scm_from_locale_string (filename_chars);
-#if 0
+ // fprintf(stderr, "TRACE %s exists in filesystem.dat!\n", filename_chars);
+ char *modpath = (char *)malloc(filename_len + strlen(MAGIC));
+ memset(modpath, 0, filename_len + strlen(MAGIC));
+ memcpy(modpath, MAGIC, strlen(MAGIC));
+ memcpy(modpath+7, filename_chars, filename_len);
+ scm_dynwind_free (modpath);
+ exists = scm_from_locale_string (modpath);
scm_dynwind_end ();
return exists;
-#endif
}
/* If FILENAME is absolute, return it unchanged. */
@@ -510,10 +526,10 @@ SCM_DEFINE (scm_xyzzy_primitive_load_path, "primitive-load-path", 1, 0, 0,
full_filename = scm_sys_search_load_path (filename);
if (scm_is_false (full_filename))
- SCM_MISC_ERROR ("Unable to find file ~S in load path",
+ SCM_MISC_ERROR ("Unable to find the file ~S in load path",
scm_list_1 (filename));
- return scm_xyzzy_primitive_load (full_filename);
+ return scm_primitive_load (full_filename);
}
#undef FUNC_NAME
@@ -564,7 +580,7 @@ scm_init_load ()
init_build_info ();
/* cpp arguments: load.c -DHAVE_CONFIG_H -I.. -I.. -I.. -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -Wall -Wmissing-prototypes */
- scm_c_define_gsubr (s_scm_xyzzy_primitive_load, 1, 0, 0, (SCM (*)()) scm_xyzzy_primitive_load); ;
+ scm_c_define_gsubr (s_scm_primitive_load, 1, 0, 0, (SCM (*)()) scm_primitive_load); ;
scm_c_define_gsubr (s_scm_sys_package_data_dir, 0, 0, 0, (SCM (*)()) scm_sys_package_data_dir); ;
scm_c_define_gsubr (s_scm_sys_library_dir, 0, 0, 0, (SCM (*)()) scm_sys_library_dir); ;
scm_c_define_gsubr (s_scm_sys_site_dir, 0, 0, 0, (SCM (*)()) scm_sys_site_dir); ;