#define ARRAYSIZE(array) (sizeof(array)/sizeof(array[0]))
#endif
-/* エラー番号 */
-extern int cerrno;
+/* mallocを実行し、メモリを確保できない場合は */
+/* エラーを出力して終了 */
+void *malloc_chk(size_t size, char *tag);
-/* エラーメッセージ */
-extern char *cerrmsg;
+/* malloc_chkを実行してメモリを確保してから、 */
+/* コピーした文字列を返す */
+char *strdup_chk(const char *s, char *tag);
-/* ã\82¨ã\83©ã\83¼ã\82³ã\83¼ã\83\89é\85\8då\88\97 */
+/* ã\82¨ã\83©ã\83¼ã\81®æ§\8bé\80 ä½\93 */
typedef struct {
- int num;
- char *msg;
-} CERRARRAY;
+ int num; /* エラー番号 */
+ char *msg; /* エラーメッセージ */
+} CERR;
-/* エラーコードリスト */
+/* 現在のエラー */
+extern CERR *cerr;
+
+/* エラーリスト */
typedef struct _CERRLIST {
struct _CERRLIST *next;
- CERRARRAY *err;
+ CERR *cerr;
} CERRLIST;
-/* エラーメッセージ */
-extern CERRLIST *cerr;
+extern CERRLIST *cerrlist;
enum {
CERRSTRSIZE = 10, /* エラーメッセージ中に挿入できる文字列のサイズ */
CERRMSGSIZE = 70, /* エラーメッセージのサイズ */
};
-/* ã\82¨ã\83©ã\83¼ã\82\92追加する */
-bool addcerrlist(int cerrc, CERRARRAY cerrv[]);
+/* ã\82¨ã\83©ã\83¼ã\83ªã\82¹ã\83\88ã\82\92ä½\9cæ\88\90ã\83»追加する */
+bool addcerrlist(int cerrc, CERR cerrv[]);
/* エラー番号とエラーメッセージを設定 */
void setcerr(int num, const char *str);