int SLang_run_hooks (SLFUTURE_CONST char *hook, unsigned int num_args, ...) { unsigned int i; va_list ap; if (SLang_get_error ()) return -1; if (0 == SLang_is_defined (hook)) return 0; (void) SLang_start_arg_list (); va_start (ap, num_args); for (i = 0; i < num_args; i++) { char *arg; arg = va_arg (ap, char *); if (-1 == SLang_push_string (arg)) break; } va_end (ap); (void) SLang_end_arg_list (); if (_pSLang_Error) return -1; return SLang_execute_function (hook); }
static int move_to_hook_matched_hdu (cfitsfile *fptr, const char *hook_name) { SLang_Array_Type *as = NULL; int status = -1; SLindex_Type i, num; char *s; if (hook_name == NULL) return -1; /* Does the user-defined hook exist? */ if (2 != SLang_is_defined ((char *) hook_name)) return -1; if ((-1 == SLang_run_hooks ((char *)hook_name, 0)) || (-1 == SLang_pop_array_of_type (&as, SLANG_STRING_TYPE))) goto return_error; num = as->num_elements; for (i = 0; i < num; i++) { if (-1 == SLang_get_array_element (as, &i, &s)) goto return_error; if (0 == cfits_movnam_hdu (fptr, s)) { status = 0; break; } } return_error: SLang_free_array (as); return status; }
static int is_defined_intrin (char *s) { return SLang_is_defined (s); }