X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=include%2Fcerr.h;h=ee44ee429abc732d8cfcdea44acb0eaf4f760598;hp=828d03e848c6664f6505c5f5a5ca950ffca341da;hb=288d61424576d1aae956ea8e4b5fb89dc25909db;hpb=285d44a446b45fa1a5ac66617b6920bc7ba81fa6 diff --git a/include/cerr.h b/include/cerr.h index 828d03e..ee44ee4 100644 --- a/include/cerr.h +++ b/include/cerr.h @@ -5,31 +5,52 @@ #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; +/* callocを実行し、メモリを確保できない場合は */ +/* エラーを出力して終了 */ +void *calloc_chk(size_t nmemb, size_t size, char *tag); -/* エラーコードリスト */ +/* malloc_chkを実行してメモリを確保してから、 */ +/* コピーした文字列を返す */ +char *strdup_chk(const char *s, char *tag); + +/* エラーの構造体 */ 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 CERRARRAY cerr[]; +extern CERRLIST *cerrlist; enum { CERRSTRSIZE = 10, /* エラーメッセージ中に挿入できる文字列のサイズ */ CERRMSGSIZE = 70, /* エラーメッセージのサイズ */ }; +/* エラーの初期化 */ +void cerr_init(); + +/* エラーリストを作成・追加する */ +bool addcerrlist(int cerrc, CERR cerrv[]); + /* エラー番号とエラーメッセージを設定 */ void setcerr(int num, const char *str);