summaryrefslogtreecommitdiff
path: root/libguile/feature.c
diff options
context:
space:
mode:
Diffstat (limited to 'libguile/feature.c')
-rw-r--r--libguile/feature.c74
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"
}