X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=include%2Fcerr.h;h=7265b0ed25c476e333e1bcd2a04dcdf0fc6705b3;hp=586ab4d5b3502a2d7ca7a74fc2aa331ad0cec2da;hb=4ee27a568fb9222907a566e59aaefe248f08a8e4;hpb=d2638d2dd5f2437cabbf752c89042ca49347a248;ds=sidebyside diff --git a/include/cerr.h b/include/cerr.h index 586ab4d..7265b0e 100644 --- a/include/cerr.h +++ b/include/cerr.h @@ -1,32 +1,47 @@ #ifndef YACASL2_CERR_H_INCLUDED #define YACASL2_CERR_H_INCLUDED +#include #include #include #include +#include #ifndef ARRAYSIZE #define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0])) #endif -/* エラー番号 */ -extern int cerrno; +/* mallocを実行し、メモリを確保できない場合は */ +/* エラーを出力して終了 */ +void *malloc_chk(size_t size, char *tag); -/* エラーメッセージ */ -extern char *cerrmsg; - -/* エラーコードリスト */ +/* エラーの構造体 */ typedef struct { - int num; - char *msg; -} CERRARRAY; + int num; /* エラー番号 */ + char *msg; /* エラーメッセージ */ +} CERR; + +/* 現在のエラー */ +extern CERR *cerr; + +/* エラーリスト */ +typedef struct _CERRLIST { + struct _CERRLIST *next; + CERR *cerr; +} CERRLIST; + +extern CERRLIST *cerrlist; enum { - MSGSIZE = 60, + CERRSTRSIZE = 10, /* エラーメッセージ中に挿入できる文字列のサイズ */ + CERRMSGSIZE = 70, /* エラーメッセージのサイズ */ }; +/* エラーリストを作成・追加する */ +bool addcerrlist(int cerrc, CERR cerrv[]); + /* エラー番号とエラーメッセージを設定 */ -void setcerr(int num, const char *val); +void setcerr(int num, const char *str); /* エラー番号からメッセージを返す */ char *getcerrmsg(int num);