X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gedcom%2Fmessage.c;h=213e0493126ec81184adcc895093ef209a2b6583;hb=5b86b2a5b5572129984e8d9f056771b7c5afca98;hp=c3a5abf1ab642502f9639edda1997d9cfb9cf082;hpb=f7b7f4752136dc40686676194a2895d82fe6018e;p=gedcom-parse.git diff --git a/gedcom/message.c b/gedcom/message.c index c3a5abf..213e049 100644 --- a/gedcom/message.c +++ b/gedcom/message.c @@ -41,6 +41,12 @@ void reset_mess_buffer() mess_buffer[0] = '\0'; } +void cleanup_mess_buffer() +{ + if (mess_buffer) + free(mess_buffer); +} + void init_mess_buffer() { if (mess_buffer == NULL) { @@ -48,6 +54,8 @@ void init_mess_buffer() if (mess_buffer) { mess_buffer[0] = '\0'; bufsize = INITIAL_BUF_SIZE; + if (atexit(cleanup_mess_buffer) != 0) + gedcom_warning(_("Could not register buffer cleanup function")); } else { fprintf(stderr, _("Could not allocate memory at %s, %d"), @@ -57,7 +65,7 @@ void init_mess_buffer() } } -int safe_buf_vappend(char *s, va_list ap) +int safe_buf_vappend(const char *s, va_list ap) { int res = 0; int len; @@ -82,7 +90,7 @@ int safe_buf_vappend(char *s, va_list ap) return res; } -int safe_buf_append(char *s, ...) +int safe_buf_append(const char *s, ...) { int res; va_list ap; @@ -94,7 +102,7 @@ int safe_buf_append(char *s, ...) return res; } -int gedcom_message(char* s, ...) +int gedcom_message(const char* s, ...) { int res; va_list ap; @@ -108,13 +116,16 @@ int gedcom_message(char* s, ...) return res; } -int gedcom_warning(char* s, ...) +int gedcom_warning(const char* s, ...) { int res; va_list ap; reset_mess_buffer(); - safe_buf_append(_("Warning on line %d: "), line_no); + if (line_no != 0) + safe_buf_append(_("Warning on line %d: "), line_no); + else + safe_buf_append(_("Warning: ")); va_start(ap, s); res = safe_buf_vappend(s, ap); va_end(ap); @@ -124,13 +135,16 @@ int gedcom_warning(char* s, ...) return res; } -int gedcom_error(char* s, ...) +int gedcom_error(const char* s, ...) { int res; va_list ap; reset_mess_buffer(); - safe_buf_append(_("Error on line %d: "), line_no); + if (line_no != 0) + safe_buf_append(_("Error on line %d: "), line_no); + else + safe_buf_append(_("Error: ")); va_start(ap, s); res = safe_buf_vappend(s, ap); va_end(ap); @@ -140,7 +154,7 @@ int gedcom_error(char* s, ...) return res; } -void gedcom_mem_error(char *filename, int line) +void gedcom_mem_error(const char *filename, int line) { gedcom_error(_("Could not allocate memory at %s, %d"), filename, line); }