diff options
Diffstat (limited to 'libguile/feature.c')
-rw-r--r-- | libguile/feature.c | 74 |
1 files changed, 30 insertions, 44 deletions
diff --git a/libguile/feature.c b/libguile/feature.c index b4622b7e9..9aaee678c 100644 --- a/libguile/feature.c +++ b/libguile/feature.c @@ -43,73 +43,57 @@ #include <stdio.h> #include "_scm.h" +#include "feature.h" + +#ifdef HAVE_STRING_H +#include <string.h> +#endif -SCM *scm_loc_features; +static SCM *scm_loc_features; -#ifdef __STDC__ -void -scm_add_feature(char* str) -#else void scm_add_feature(str) char* str; -#endif -{ - *scm_loc_features = scm_cons(SCM_CAR(scm_intern(str, strlen(str))), *scm_loc_features); -} - - - -/* {Help finding slib} - */ - - -SCM_PROC(s_compiled_library_path, "compiled-library-path", 0, 0, 0, scm_compiled_library_path); -#ifdef __STDC__ -SCM -scm_compiled_library_path (void) -#else -SCM -scm_compiled_library_path () -#endif { -#ifndef LIBRARY_PATH - return SCM_BOOL_F; -#else - return scm_makfrom0str (LIBRARY_PATH); -#endif + *scm_loc_features = scm_cons(SCM_CAR(scm_intern(str, strlen(str))), + *scm_loc_features); } - SCM_PROC(s_program_arguments, "program-arguments", 0, 0, 0, scm_program_arguments); -#ifdef __STDC__ -SCM -scm_program_arguments (void) -#else + SCM scm_program_arguments () -#endif { return scm_progargs; } +/* Set the value returned by program-arguments, given ARGC and ARGV. + If FIRST is non-zero, make it the first element; we do this in + situations where other code (like getopt) has parsed out a few + arguments, but we still want the script name to be the first + element. */ +void +scm_set_program_arguments (argc, argv, first) + int argc; + char **argv; + char *first; +{ + scm_progargs = scm_makfromstrs (argc, argv); + if (first) + scm_progargs = scm_cons (scm_makfrom0str (first), scm_progargs); +} -#ifdef __STDC__ -void -scm_init_feature(void) -#else void scm_init_feature() -#endif { - scm_loc_features = &SCM_CDR(scm_sysintern("*features*", SCM_EOL)); + scm_loc_features = SCM_CDRLOC (scm_sysintern ("*features*", SCM_EOL)); #ifdef RECKLESS scm_add_feature("reckless"); #endif @@ -128,8 +112,10 @@ scm_init_feature() #ifndef CHEAP_CONTINUATIONS scm_add_feature ("full-continuation"); #endif - - - scm_sysintern ("char-code-limit", SCM_MAKINUM (SCM_CHAR_SCM_CODE_LIMIT)); +#ifdef USE_THREADS + scm_add_feature ("threads"); +#endif + + scm_sysintern ("char-code-limit", SCM_MAKINUM (SCM_CHAR_CODE_LIMIT)); #include "feature.x" } |