1 #include <../../nrnconf.h> 35 static char rcsid[] =
"err.c,v 1.1 1997/12/04 17:55:19 hines Exp";
42 #if defined(__MWERKS__) 43 #define isascii isprint 48 #include <sys/signal.h> 70 "sizes of objects don't match",
71 "index out of bounds",
72 "can't allocate memory",
74 "matrix not positive definite",
75 "incorrect format input",
76 "bad input file/device",
77 "NULL objects passed",
79 "object out of range",
80 "can't do operation in situ for non-square matrix",
81 "can't do operation in situ",
82 "excessive number of iterations",
83 "convergence criterion failed",
86 "internal inconsistency (data structure)",
87 "unexpected end-of-file",
88 "shared vectors (cannot release them)",
90 "cannot overwrite object",
91 "breakdown in iterative method" 94 #define MAXERR (sizeof(err_mesg)/sizeof(char *)) 98 "wrong type number (use macro TYPE_*)",
99 "no corresponding mem_stat_mark",
100 "computed norm of a residual is less than 0",
101 "resizing a shared vector" 104 #define MAXWARN (sizeof(warn_mesg)/sizeof(char *)) 139 int list_num, list_len, warn;
142 if (list_num < 0 || list_len <= 0 ||
143 err_ptr == (
char **)
NULL)
147 fprintf(stderr,
"\n file \"%s\": %s %s\n",
148 "err.c",
"increase the value of ERR_LIST_MAX_LEN",
149 "in matrix.h and zmatdef.h");
150 if ( ! isatty(fileno(stdout)) )
151 fprintf(stderr,
"\n file \"%s\": %s %s\n",
152 "err.c",
"increase the value of ERR_LIST_MAX_LEN",
153 "in matrix.h and zmatdef.h");
154 printf(
"Exiting program\n");
158 if (err_list[list_num].listp != (
char **)NULL &&
159 err_list[list_num].listp != err_ptr)
160 free((
char *)err_list[list_num].listp);
161 err_list[list_num].
listp = err_ptr;
162 err_list[list_num].
len = list_len;
163 err_list[list_num].
warn = warn;
174 if (list_num < 0 || list_num >=
err_list_end)
return -1;
175 if (err_list[list_num].listp != (
char **)
NULL) {
176 err_list[list_num].
listp = (
char **)NULL;
177 err_list[list_num].
len = 0;
178 err_list[list_num].
warn = 0;
194 if (err_list[list_num].listp != (
char **)
NULL)
231 int ev_err(file,err_num,line_num,fn_name,list_num)
232 char *file, *fn_name;
233 int err_num, line_num,list_num;
237 if ( err_num < 0 ) err_num = 0;
240 err_list[list_num].listp == (
char **)
NULL) {
242 "\n Not (properly) attached list of errors: list_num = %d\n",
244 fprintf(stderr,
" Call \"err_list_attach\" in your program\n");
245 if ( ! isatty(fileno(stdout)) ) {
247 "\n Not (properly) attached list of errors: list_num = %d\n",
249 fprintf(stderr,
" Call \"err_list_attach\" in your program\n");
251 printf(
"\nExiting program\n");
256 if ( num >= err_list[list_num].len ) num = 0;
260 fprintf(stderr,
"\n\"%s\", line %d: %s in function %s()\n",
261 file,line_num,err_list[list_num].listp[num],
262 isascii(*fn_name) ? fn_name :
"???");
263 if ( ! isatty(fileno(stdout)) )
264 fprintf(stdout,
"\n\"%s\", line %d: %s in function %s()\n",
265 file,line_num,err_list[list_num].listp[num],
266 isascii(*fn_name) ? fn_name :
"???");
268 printf(
"Exiting program\n");
271 if ( err_list[list_num].warn )
276 fprintf(stderr,
"\n\"%s\", line %d: %s in function %s()\n\n",
277 file,line_num,err_list[list_num].listp[num],
278 isascii(*fn_name) ? fn_name :
"???");
279 if ( ! isatty(fileno(stdout)) )
280 fprintf(stdout,
"\n\"%s\", line %d: %s in function %s()\n\n",
281 file,line_num,err_list[list_num].listp[num],
282 isascii(*fn_name) ? fn_name :
"???");
289 longjmp(
restart,(err_num==0)? -1 : err_num);
292 fprintf(stderr,
"\n\"%s\", line %d: %s in function %s()\n",
293 file,line_num,err_list[list_num].listp[num],
294 isascii(*fn_name) ? fn_name :
"???");
295 if ( ! isatty(fileno(stdout)) )
296 fprintf(stdout,
"\n\"%s\", line %d: %s in function %s()\n",
297 file,line_num,err_list[list_num].listp[num],
298 isascii(*fn_name) ? fn_name :
"???");
302 fprintf(stderr,
"\n\"%s\", line %d: %s in function %s()\n",
303 file,line_num,err_list[list_num].listp[num],
304 isascii(*fn_name) ? fn_name :
"???");
305 if ( ! isatty(fileno(stdout)) )
306 fprintf(stdout,
"\n\"%s\", line %d: %s in function %s()\n",
307 file,line_num,err_list[list_num].listp[num],
308 isascii(*fn_name) ? fn_name :
"???");
309 longjmp(
restart,(err_num==0)? -1 : err_num);
312 fprintf(stderr,
"\n\"%s\", line %d: %s in function %s()\n\n",
313 file,line_num,err_list[list_num].listp[num],
314 isascii(*fn_name) ? fn_name :
"???");
315 if ( ! isatty(fileno(stdout)) )
316 fprintf(stdout,
"\n\"%s\", line %d: %s in function %s()\n\n",
317 file,line_num,err_list[list_num].listp[num],
318 isascii(*fn_name) ? fn_name :
"???");
324 if ( ! err_list[list_num].warn ) {
int err_list_attach(int list_num, int list_len, char **err_ptr, int warn)
void hoc_execerror(const char *, const char *)
fprintf(stderr, "Don't know the location of params at %p\, pp)
static void float_error(int num)
static char * warn_mesg[]
int err_is_list_attached(int list_num)
int err_list_free(int list_num)
int ev_err(char *file, int err_num, int line_num, char *fn_name, int list_num)
int set_err_flag(int flag)
static Err_list err_list[ERR_LIST_MAX_LEN]