-/* This program is free software; you can redistribute it and/or modify *
- * it under the terms of the GNU General Public License as published by *
- * the Free Software Foundation; either version 2 of the License, or *
- * (at your option) any later version. *
-
- (C) 2001 by The Genes Development Team
- Original author: Peter Verthez (Peter.Verthez@advalvas.be)
-*/
+/* Implementation of the messaging API to applications.
+ Copyright (C) 2001 The Genes Development Team
+ This file is part of the Gedcom parser library.
+ Contributed by Peter Verthez <Peter.Verthez@advalvas.be>, 2001.
+
+ The Gedcom parser library is free software; you can redistribute it
+ and/or modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The Gedcom parser library is distributed in the hope that it will be
+ useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the Gedcom parser library; if not, write to the
+ Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
/* $Id$ */
/* $Name$ */
{
if (mess_buffer == NULL) {
mess_buffer = (char *)malloc(INITIAL_BUF_SIZE);
- mess_buffer[0] = '\0';
- bufsize = INITIAL_BUF_SIZE;
+ if (mess_buffer) {
+ mess_buffer[0] = '\0';
+ bufsize = INITIAL_BUF_SIZE;
+ }
+ else {
+ fprintf(stderr, _("Could not allocate memory at %s, %d"),
+ __FILE__, __LINE__);
+ fprintf(stderr, "\n");
+ }
}
}
-int safe_buf_vappend(char *s, va_list ap)
+int safe_buf_vappend(const char *s, va_list ap)
{
- int res;
+ int res = 0;
int len;
init_mess_buffer();
- len = strlen(mess_buffer);
- while (1) {
- char *buf_ptr = mess_buffer + len;
- int rest_size = bufsize - len;
-
- res = vsnprintf(buf_ptr, rest_size, s, ap);
-
- if (res > -1 && res < rest_size) {
- break;
- }
- else {
- bufsize *= 2;
- mess_buffer = realloc(mess_buffer, bufsize);
+ if (mess_buffer) {
+ len = strlen(mess_buffer);
+ while (1) {
+ char *buf_ptr = mess_buffer + len;
+ int rest_size = bufsize - len;
+
+ res = vsnprintf(buf_ptr, rest_size, s, ap);
+
+ if (res > -1 && res < rest_size) {
+ break;
+ }
+ else {
+ bufsize *= 2;
+ mess_buffer = realloc(mess_buffer, bufsize);
+ }
}
}
- return res;
+ return res;
}
-int safe_buf_append(char *s, ...)
+int safe_buf_append(const char *s, ...)
{
int res;
va_list ap;
return res;
}
-int gedcom_message(char* s, ...)
+int gedcom_message(const char* s, ...)
{
int res;
va_list ap;
reset_mess_buffer();
res = safe_buf_vappend(s, ap);
va_end(ap);
- safe_buf_append("\n");
if (msg_handler)
(*msg_handler)(MESSAGE, mess_buffer);
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);
+ safe_buf_append(_("Warning on line %d: "), line_no);
va_start(ap, s);
res = safe_buf_vappend(s, ap);
va_end(ap);
- safe_buf_append("\n");
if (msg_handler)
(*msg_handler)(WARNING, mess_buffer);
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);
+ safe_buf_append(_("Error on line %d: "), line_no);
va_start(ap, s);
res = safe_buf_vappend(s, ap);
va_end(ap);
- safe_buf_append("\n");
if (msg_handler)
(*msg_handler)(ERROR, mess_buffer);
return res;
}
+
+void gedcom_mem_error(const char *filename, int line)
+{
+ gedcom_error(_("Could not allocate memory at %s, %d"), filename, line);
+}