Example #1
0
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);
}
Example #2
0
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;
}
Example #3
0
static int is_defined_intrin (char *s)
{
   return SLang_is_defined (s);
}