13 bool addcerrlist(int newerrc, CERRARRAY newerrv[])
18 assert(newerrc > 0 && newerrv != NULL);
20 for(p = cerr; p != NULL; p = p->next) {
23 if((p = q->next = malloc(sizeof(CERRLIST))) == NULL) {
26 } else if((p = cerr = malloc(sizeof(CERRLIST))) == NULL) {
29 for(i = 0; i < newerrc; i++) {
30 p->err = &(newerrv[i]);
31 if((p->next = malloc(sizeof(CERRLIST))) == NULL) {
40 fprintf(stderr, "addcerrlist: cannot allocate memory\n");
44 /* エラー番号とエラーメッセージを設定する */
45 void setcerr(int num, const char *str)
48 cerrmsg = malloc(CERRMSGSIZE + 1);
49 if(str != NULL && strlen(str) <= CERRSTRSIZE) {
50 sprintf(cerrmsg, "%s: %s", str, getcerrmsg(cerrno));
52 strcpy(cerrmsg, getcerrmsg(cerrno));
56 /* リストから、エラー番号に対応するメッセージを返す */
57 char *getcerrmsg(int num)
61 for(p = cerr; p != NULL; p = p->next) {
62 if(num == p->err->num) {
66 return "unkown error";
74 if(strlen(cerrmsg) > 0) {