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");
159 err_list[list_num].listp != err_ptr)
160 free((
char *)
err_list[list_num].listp);
174 if (list_num < 0 || list_num >=
err_list_end)
return -1;
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;
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");
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 :
"???");
int err_is_list_attached(int list_num)
int set_err_flag(int flag)
int err_list_attach(int list_num, int list_len, char **err_ptr, int warn)
static Err_list err_list[ERR_LIST_MAX_LEN]
static void float_error(int num)
static char * warn_mesg[]
int ev_err(char *file, int err_num, int line_num, char *fn_name, int list_num)
int err_list_free(int list_num)
void hoc_execerror(const char *, const char *)