Removed newlines from error strings.
[gedcom-parse.git] / gedcom / message.c
index 49e91e5ad1c19102cfab8b7a3e92bd8bbd347506..c3a5abf1ab642502f9639edda1997d9cfb9cf082 100644 (file)
@@ -45,32 +45,41 @@ void init_mess_buffer()
 {
   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 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, ...)
@@ -94,7 +103,6 @@ int gedcom_message(char* s, ...)
   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;
@@ -110,7 +118,6 @@ int gedcom_warning(char* s, ...)
   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);
   
@@ -127,9 +134,13 @@ int gedcom_error(char* s, ...)
   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(char *filename, int line)
+{
+  gedcom_error(_("Could not allocate memory at %s, %d"), filename, line);
+}