00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <stdlib.h>
00022 #include <stdarg.h>
00023 #include <stdio.h>
00024 #include "cgnslib.h"
00025 #include "cgns_header.h"
00026 #include "cgns_io.h"
00027
00028 void (*cgns_error_handler)(int, char *) = 0;
00029
00030 char cgns_error_mess[200] = "no CGNS error reported";
00031
00032 CGNSDLL void cgi_error(char *format, ...) {
00033 va_list arg;
00034 va_start(arg, format);
00035 vsprintf(cgns_error_mess,format, arg);
00036 va_end(arg);
00037 if (cgns_error_handler)
00038 (*cgns_error_handler)(1, cgns_error_mess);
00039 }
00040
00041 CGNSDLL void cgi_warning(char *format, ...) {
00042 va_list arg;
00043 va_start(arg, format);
00044 if (cgns_error_handler) {
00045 char warning_msg[200];
00046 vsprintf(warning_msg, format, arg);
00047 (*cgns_error_handler)(0, warning_msg);
00048 }
00049 else {
00050 fprintf(stdout,"*** Warning:");
00051 vfprintf(stdout,format,arg);
00052 fprintf(stdout," ***\n");
00053 }
00054 va_end(arg);
00055 }
00056
00057 CGNSDLL const char *cg_get_error() {
00058 return cgns_error_mess;
00059 }
00060
00061 CGNSDLL void cg_error_exit() {
00062 if (cgns_error_handler)
00063 (*cgns_error_handler)(-1, cgns_error_mess);
00064 else
00065 fprintf(stderr,"%s\n",cgns_error_mess);
00066 cgio_cleanup();
00067 exit(1);
00068 }
00069
00070 CGNSDLL void cg_error_print() {
00071 fprintf(stderr,"%s\n",cgns_error_mess);
00072 }
00073
00074 CGNSDLL void cg_io_error (const char *funcname)
00075 {
00076 char errmsg[81];
00077 cgio_error_message(sizeof(errmsg), errmsg);
00078 cgi_error("%s:%s", funcname, errmsg);
00079 }
00080