/[gcl]/gcl/o/error.c
ViewVC logotype

Diff of /gcl/o/error.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.8 by camm, Tue Oct 1 04:37:33 2002 UTC revision 1.9 by camm, Wed Oct 9 03:46:34 2002 UTC
# Line 145  Icall_error_handler(error_name,error_for Line 145  Icall_error_handler(error_name,error_for
145    return IapplyVector(sSuniversal_error_handler,nfmt_args+5,b);    return IapplyVector(sSuniversal_error_handler,nfmt_args+5,b);
146  }  }
147    
148    static object
149    Icall_continue_error_handler(error_name,error_format_string,nfmt_args,va_alist)
150         object error_name,error_format_string;
151         int nfmt_args;
152         va_dcl
153         /* n is the total number of args passed to this function */
154    { object b[20];
155      b[0]= error_name;
156      b[1]= Ct;  /* continue format */
157      b[2] = ihs_top_function_name(ihs_top);
158      b[3] = null_string;  /*continue format arg*/
159      b[4] = error_format_string;
160      {int i = 0;
161       va_list ap;
162       va_start(ap);
163       while (i++ < nfmt_args)
164         { b[i+4]= va_arg(ap,object);
165         }
166        va_end(ap);
167      }
168      return IapplyVector(sSuniversal_error_handler,nfmt_args+5,b);
169    }
170    
171  DEFUNO("ERROR",object,fLerror,LISP  DEFUNO("ERROR",object,fLerror,LISP
172     ,1,F_ARG_LIMIT,NONE,OO,OO,OO,OO,Lerror,"")(fmt_string,va_alist)     ,1,F_ARG_LIMIT,NONE,OO,OO,OO,OO,Lerror,"")(fmt_string,va_alist)
173  object fmt_string;  object fmt_string;
# Line 187  va_dcl Line 210  va_dcl
210    b[4]=fmt_string;    b[4]=fmt_string;
211    i=4;    i=4;
212    va_start(ap);    va_start(ap);
213      n--;
214      while (--n)
215        b[++i]=va_arg(ap,object);
216      va_end(ap);
217      RETURN1(IapplyVector(sSuniversal_error_handler,++i,b));
218    }
219    
220    
221    DEFUNO("SPECIFIC-CORRECTABLE-ERROR",object,fLspecific_correctable_error,LISP
222       ,1,F_ARG_LIMIT,NONE,OO,OO,OO,OO,Lspecific_correctable_error,"")(error_name,fmt_string,va_alist)
223    object error_name,fmt_string;
224    va_dcl
225    { int n = VFUN_NARGS,i=0;
226      object b[F_ARG_LIMIT];
227      va_list ap;
228    
229      b[0]=error_name;
230      b[1]=Ct;
231      b[2]=ihs_top_function_name(ihs_top-1);
232      b[3]=null_string;
233      b[4]=fmt_string;
234      i=4;
235      va_start(ap);
236      n--;
237    while (--n)    while (--n)
238      b[++i]=va_arg(ap,object);      b[++i]=va_arg(ap,object);
239    va_end(ap);    va_end(ap);
# Line 352  FEinvalid_function(object obj) Line 399  FEinvalid_function(object obj)
399                                            
400  }  }
401    
402    void
403    FEpackage_error(object obj,const char *s)
404    {Icall_continue_error_handler(sKpackage_error,
405                         make_simple_string("A package error occurred on ~S:~S."),
406                         2,(obj),make_simple_string(s));
407                        
408    }
409    
410    
411  object  object
412  CEerror(char *error_str, char *cont_str, int num, object arg1, object arg2, object arg3, object arg4)  CEerror(char *error_str, char *cont_str, int num, object arg1, object arg2, object arg3, object arg4)
# Line 638  void Line 693  void
693  ck_larg_at_least(int n, object x) {  ck_larg_at_least(int n, object x) {
694          for(; n > 0; n--, x = x->c.c_cdr)          for(; n > 0; n--, x = x->c.c_cdr)
695                  if(endp(x))                  if(endp(x))
696                    FEerror("APPLY sended too few arguments to LAMBDA.", 0);                    FEerror("APPLY sent too few arguments to LAMBDA.", 0);
697  }  }
698    
699  void  void
700  ck_larg_exactly(int n, object x) {  ck_larg_exactly(int n, object x) {
701          for(; n > 0; n--, x = x->c.c_cdr)          for(; n > 0; n--, x = x->c.c_cdr)
702                  if(endp(x))                  if(endp(x))
703                    FEerror("APPLY sended too few arguments to LAMBDA.", 0);                    FEerror("APPLY sent too few arguments to LAMBDA.", 0);
704          if(!endp(x)) FEerror("APPLY sended too many arguments to LAMBDA.", 0);          if(!endp(x)) FEerror("APPLY sent too many arguments to LAMBDA.", 0);
705  }  }
706    
707  void  void
# Line 778  DEF_ORDINARY("UNBOUND-VARIABLE",sKunboun Line 833  DEF_ORDINARY("UNBOUND-VARIABLE",sKunboun
833  DEF_ORDINARY("INVALID-VARIABLE",sKinvalid_variable,KEYWORD,"");  DEF_ORDINARY("INVALID-VARIABLE",sKinvalid_variable,KEYWORD,"");
834  DEF_ORDINARY("UNDEFINED-FUNCTION",sKundefined_function,KEYWORD,"");  DEF_ORDINARY("UNDEFINED-FUNCTION",sKundefined_function,KEYWORD,"");
835  DEF_ORDINARY("INVALID-FUNCTION",sKinvalid_function,KEYWORD,"");  DEF_ORDINARY("INVALID-FUNCTION",sKinvalid_function,KEYWORD,"");
836    DEF_ORDINARY("PACKAGE-ERROR",sKpackage_error,KEYWORD,"");
837  DEF_ORDINARY("CATCH",sKcatch,KEYWORD,"");  DEF_ORDINARY("CATCH",sKcatch,KEYWORD,"");
838  DEF_ORDINARY("PROTECT",sKprotect,KEYWORD,"");  DEF_ORDINARY("PROTECT",sKprotect,KEYWORD,"");
839  DEF_ORDINARY("CATCHALL",sKcatchall,KEYWORD,"");  DEF_ORDINARY("CATCHALL",sKcatchall,KEYWORD,"");

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26