00001 /* 00002 * $Id: error.c,v 1.4 2002/09/09 23:55:44 fabio Exp $ 00003 * 00004 */ 00005 #include "util.h" 00006 #include "error.h" 00007 00008 static char *error_str = 0; 00009 static int error_str_len, error_str_maxlen; 00010 00011 00012 void 00013 error_init(void) 00014 { 00015 if (error_str != 0) { 00016 FREE(error_str); 00017 } 00018 error_str_len = 0; 00019 error_str_maxlen = 100; 00020 error_str = ALLOC(char, error_str_maxlen); 00021 *error_str = '\0'; 00022 } 00023 00024 00025 void 00026 error_append(char *s) 00027 { 00028 int slen; 00029 00030 slen = strlen(s); 00031 if (error_str_len + slen + 1 > error_str_maxlen) { 00032 error_str_maxlen = (error_str_len + slen) * 2; /* cstevens@ic */ 00033 error_str = REALLOC(char, error_str, error_str_maxlen); 00034 } 00035 (void) strcpy(error_str + error_str_len, s); 00036 error_str_len += slen; 00037 } 00038 00039 00040 char * 00041 error_string(void) 00042 { 00043 return error_str; 00044 } 00045 00046 00047 void 00048 error_cleanup(void) 00049 { 00050 FREE(error_str); 00051 error_str_len = 0; 00052 error_str_maxlen = 0; 00053 error_str = 0; 00054 }