1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00

(progargs_fluid): New.

(scm_program_arguments, scm_set_program_arguments): Use it instead
of scm_progargs.
(scm_init_feature): Allocate it.  Also, only add "threads" feature
when SCM_USE_PTHREAD_THREADS is true.
This commit is contained in:
Marius Vollmer 2005-03-02 19:40:20 +00:00
parent 5c6148424b
commit 731294434a

View file

@ -29,14 +29,15 @@
#include "libguile/root.h"
#include "libguile/strings.h"
#include "libguile/validate.h"
#include "libguile/fluids.h"
#include "libguile/feature.h"
static SCM progargs_fluid;
static SCM features_var;
void
scm_add_feature (const char *str)
{
@ -56,7 +57,7 @@ SCM_DEFINE (scm_program_arguments, "program-arguments", 0, 0, 0,
"options like @code{-e} and @code{-l}.")
#define FUNC_NAME s_scm_program_arguments
{
return scm_progargs;
return scm_fluid_ref (progargs_fluid);
}
#undef FUNC_NAME
@ -69,9 +70,10 @@ SCM_DEFINE (scm_program_arguments, "program-arguments", 0, 0, 0,
void
scm_set_program_arguments (int argc, char **argv, char *first)
{
scm_progargs = scm_makfromstrs (argc, argv);
SCM args = scm_makfromstrs (argc, argv);
if (first)
scm_progargs = scm_cons (scm_from_locale_string (first), scm_progargs);
args = scm_cons (scm_from_locale_string (first), args);
scm_fluid_set_x (progargs_fluid, args);
}
@ -80,6 +82,8 @@ scm_set_program_arguments (int argc, char **argv, char *first)
void
scm_init_feature()
{
progargs_fluid = scm_permanent_object (scm_make_fluid ());
features_var = scm_c_define ("*features*", SCM_EOL);
#ifndef _Windows
scm_add_feature("system");
@ -96,8 +100,10 @@ scm_init_feature()
#ifndef CHEAP_CONTINUATIONS
scm_add_feature ("full-continuation");
#endif
#if SCM_USE_PTHREAD_THREADS
scm_add_feature ("threads");
#endif
scm_c_define ("char-code-limit", scm_from_int (SCM_CHAR_CODE_LIMIT));
#include "libguile/feature.x"