mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-10 14:00:21 +02:00
(scm_c_export): Do nothing when the first argument is
already the terminating NULL. Thanks to Han-Wen Nienhuys!
This commit is contained in:
parent
19a35d19d9
commit
eb880cef29
1 changed files with 30 additions and 13 deletions
|
@ -176,24 +176,41 @@ scm_c_use_module (const char *name)
|
|||
|
||||
static SCM module_export_x_var;
|
||||
|
||||
|
||||
|
||||
/*
|
||||
@code{scm_c_export}(@var{name-list})
|
||||
|
||||
@code{scm_c_export} exports the named bindings from the current
|
||||
module, making them visible to users of the module. This function
|
||||
takes a list of string arguments, terminated by NULL, e.g.
|
||||
|
||||
@example
|
||||
scm_c_export ("add-double-record", "bamboozle-money", NULL);
|
||||
@end example
|
||||
*/
|
||||
|
||||
void
|
||||
scm_c_export (const char *name, ...)
|
||||
{
|
||||
va_list ap;
|
||||
SCM names = scm_cons (scm_str2symbol (name), SCM_EOL);
|
||||
SCM *tail = SCM_CDRLOC (names);
|
||||
va_start (ap, name);
|
||||
while (1)
|
||||
if (name)
|
||||
{
|
||||
const char *n = va_arg (ap, const char *);
|
||||
if (n == NULL)
|
||||
break;
|
||||
*tail = scm_cons (scm_str2symbol (n), SCM_EOL);
|
||||
tail = SCM_CDRLOC (*tail);
|
||||
va_list ap;
|
||||
SCM names = scm_cons (scm_str2symbol (name), SCM_EOL);
|
||||
SCM *tail = SCM_CDRLOC (names);
|
||||
va_start (ap, name);
|
||||
while (1)
|
||||
{
|
||||
const char *n = va_arg (ap, const char *);
|
||||
if (n == NULL)
|
||||
break;
|
||||
*tail = scm_cons (scm_str2symbol (n), SCM_EOL);
|
||||
tail = SCM_CDRLOC (*tail);
|
||||
}
|
||||
va_end (ap);
|
||||
scm_call_2 (SCM_VARIABLE_REF (module_export_x_var),
|
||||
scm_current_module (), names);
|
||||
}
|
||||
va_end (ap);
|
||||
scm_call_2 (SCM_VARIABLE_REF (module_export_x_var),
|
||||
scm_current_module (), names);
|
||||
}
|
||||
|
||||
/* Environments */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue