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; |
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); |
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) |
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 |
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,""); |