work toward better error reporting
[pspp] / src / libpspp / message.c
index 41a1da17502ea5e18386cdecb5c0d99df2c3afae..e3d301efd7ae8ae76a09a83360e1b09ed8f5c671 100644 (file)
@@ -51,12 +51,14 @@ static int messages_disabled;
 
 
 void
-vmsg (enum msg_class class, const char *format, va_list args)
+vmsg (enum msg_class class, const struct msg_location *location,
+      const char *format, va_list args)
 {
   struct msg *m = xmalloc (sizeof *m);
   *m = (struct msg) {
     .category = msg_class_to_category (class),
     .severity = msg_class_to_severity (class),
+    .location = msg_location_dup (location),
     .text = xvasprintf (format, args),
   };
   msg_emit (m);
@@ -69,11 +71,21 @@ msg (enum msg_class class, const char *format, ...)
 {
   va_list args;
   va_start (args, format);
-  vmsg (class, format, args);
+  vmsg (class, NULL, format, args);
   va_end (args);
 }
 
-
+/* Outputs error message in CLASS, with text FORMAT, formatted with printf.
+   LOCATION is the reported location for the message. */
+void
+msg_at (enum msg_class class, const struct msg_location *location,
+        const char *format, ...)
+{
+  va_list args;
+  va_start (args, format);
+  vmsg (class, location, format, args);
+  va_end (args);
+}
 
 void
 msg_error (int errnum, const char *format, ...)