* Makefile.am (libguile_la_SOURCES): Remove backtrace.c, debug.c,
[bpt/guile.git] / libguile / feature.c
index e9b2053..9aaee67 100644 (file)
 
 #include <stdio.h>
 #include "_scm.h"
-#include "libpath.h"
+
+#include "feature.h"
 
 #ifdef HAVE_STRING_H
 #include <string.h>
 #endif
 \f
 
-SCM *scm_loc_features;
+static SCM *scm_loc_features;
 
 void
 scm_add_feature(str)
      char* str;
 {
-  *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);
-SCM
-scm_compiled_library_path ()
-{
-#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);
 }
 
 
 \f
-
 SCM_PROC(s_program_arguments, "program-arguments", 0, 0, 0, scm_program_arguments);
+
 SCM 
 scm_program_arguments ()
 {
   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);
+}
 
 
 \f
@@ -93,7 +93,7 @@ scm_program_arguments ()
 void
 scm_init_feature()
 {
-  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
@@ -112,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"
 }