1
Fork 0
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:
Marius Vollmer 2001-11-20 22:45:24 +00:00
parent 19a35d19d9
commit eb880cef29

View file

@ -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 */