Encapsulated msg_location inside msg_emit
authorJohn Darrington <john@darrington.wattle.id.au>
Tue, 4 Jul 2006 04:39:04 +0000 (04:39 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Tue, 4 Jul 2006 04:39:04 +0000 (04:39 +0000)
po/de.po
po/pspp.pot
src/data/data-in.c
src/language/expressions/helpers.c
src/language/line-buffer.c
src/language/line-buffer.h
src/libpspp/message.c
src/libpspp/message.h
src/math/automake.mk
src/ui/gui/message-dialog.c
src/ui/terminal/msg-ui.c

index 600271493200663c9012335c73616b496f102d3e..6c670049e11051381509399be6e7c8dbb3d59c8c 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -10,7 +10,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PSPP 0.4.2\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2006-07-04 09:03+0800\n"
+"POT-Creation-Date: 2006-07-04 10:49+0800\n"
 "PO-Revision-Date: 2006-05-26 17:49+0800\n"
 "Last-Translator: John Darrington <john@darrington.wattle.id.au>\n"
 "Language-Team: German <pspp-dev@gnu.org>\n"
index 6438e0100421911772a7e9d64ee16681f9542e0f..6659e7e384f1ad808db9e56ecd3873daaae6f1a5 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n"
-"POT-Creation-Date: 2006-07-04 09:03+0800\n"
+"POT-Creation-Date: 2006-07-04 10:49+0800\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
index 462f85579a929b571714109c92e40515998742aa..0b9e0623265562229d7982cdc0d86f5b99823fc2 100644 (file)
@@ -64,7 +64,6 @@ vdls_error (const struct data_in *i, const char *format, va_list args)
 
   m.category = MSG_DATA;
   m.severity = MSG_ERROR;
-  msg_location (&m.where);
   m.text = ds_cstr (&text);
 
   msg_emit (&m);
index fd78e734abe0eefde8c2206af5a2149faaf8dba3..bddc71269f3c65b2fd070bb271667e0ff2e8b783 100644 (file)
@@ -13,11 +13,8 @@ expr_error (void *aux UNUSED, const char *format, ...)
   struct msg m;
   va_list args;
 
-  /* FIXME: we can do better about saying where the error
-     occurred. */
   m.category = MSG_SYNTAX;
   m.severity = MSG_ERROR;
-  msg_location (&m.where);
   va_start (args, format);
   m.text = xvasprintf (format, args);
   va_end (args);
index 96ef8559a0e63dbe47f449270a02629fff87d587..f0e69720ed803134c58f9c7530cafdd4fa3c0ac0 100644 (file)
@@ -377,6 +377,7 @@ getl_location (const char **fn, int *ln)
 
 /* File locator stack. */
 static const struct msg_locator **file_loc;
+
 static int nfile_loc, mfile_loc;
 \f
 /* Close getl. */
@@ -423,10 +424,10 @@ msg_pop_msg_locator (const struct msg_locator *loc)
   nfile_loc--;
 }
 
-/* Puts the current file and line number in F, or NULL and -1 if
+/* Puts the current file and line number into LOC, or NULL and -1 if
    none. */
 void
-msg_location (struct msg_locator *loc)
+get_msg_location (struct msg_locator *loc)
 {
   if (nfile_loc)
     *loc = *file_loc[nfile_loc - 1];
index b47a2ce370e1d000e61c1f05f20c6da21558d02f..db9076c55ef58296fc49f6381f8cb65a1611d61a 100644 (file)
@@ -57,10 +57,12 @@ bool getl_is_interactive (void);
 
 bool getl_read_line (bool *interactive);
 
-void getl_location (const char **, int *);
-
 const char *getl_get_prompt (enum getl_prompt_style);
 void getl_set_prompt (enum getl_prompt_style, const char *);
 void getl_set_prompt_style (enum getl_prompt_style);
 
+struct msg_locator;
+void get_msg_location (struct msg_locator *loc);
+
+
 #endif /* line-buffer.h */
index b88c1247411f5a1f93efcba2c5671db928b54187..fe16c6b22bf72e4972f96632d95208133b5933bc 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - computes sample statistics.
-   Copyright (C) 1997-9, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc.
    Written by Ben Pfaff <blp@gnu.org>.
 
    This program is free software; you can redistribute it and/or
@@ -36,7 +36,9 @@
 static char *command_name;
 
 /* Message handler as set by msg_init(). */
-static void (*msg_handler) (const struct msg *);
+static void (*msg_handler)  (const struct msg *);
+static void (*msg_location) (struct msg_locator *);
+
 
 /* Public functions. */
 
@@ -50,7 +52,6 @@ msg (enum msg_class class, const char *format, ...)
 
   m.category = msg_class_to_category (class);
   m.severity = msg_class_to_severity (class);
-  msg_location (&m.where);
   va_start (args, format);
   m.text = xvasprintf (format, args);
   va_end (args);
@@ -59,9 +60,11 @@ msg (enum msg_class class, const char *format, ...)
 }
 
 void
-msg_init (void (*handler) (const struct msg *)) 
+msg_init ( void (*handler) (const struct msg *), 
+          void (*location) (struct msg_locator *) ) 
 {
   msg_handler = handler;
+  msg_location = location;
 }
 
 void
@@ -95,6 +98,7 @@ msg_destroy(struct msg *m)
 void
 msg_emit (struct msg *m) 
 {
+  msg_location (&m->where);
   msg_handler (m);
   free (m->text);
 }
index d46ea97d60505a8bed5e73cc6887570ed8add29a..9f037cb264d80683c54f8377c56a5e5254b9f1a2 100644 (file)
@@ -86,7 +86,9 @@ struct msg
   };
 
 /* Initialization. */
-void msg_init (void (*handler) (const struct msg *));
+void msg_init ( void (*handler) (const struct msg *), 
+               void (*location) (struct msg_locator *) ) ;
+
 void msg_done (void);
 
 struct msg * msg_dup(const struct msg *m);
@@ -102,7 +104,7 @@ void msg_set_command_name (const char *);
 const char *msg_get_command_name (void);
 void msg_push_msg_locator (const struct msg_locator *);
 void msg_pop_msg_locator (const struct msg_locator *);
-void msg_location (struct msg_locator *);
+
 
 /* Used in panic situations only. */
 void request_bug_report_and_abort (const char *msg);
index 0966e73444a2bcd6d1cc85cee5ecd2187cd2241b..45543fc3c21c8d90412cc795f4ecce3c3d5afe6e 100644 (file)
@@ -1,5 +1,6 @@
 ## Process this file with automake to produce Makefile.in  -*- makefile -*-
 
+include $(top_srcdir)/src/math/ts/automake.mk
 include $(top_srcdir)/src/math/linreg/automake.mk
 
 noinst_LIBRARIES += src/math/libpspp_math.a
index 840e1e2adc0c71107b62101d8b129e1c3a881c1c..af1886c98a7f619fdd5706259ebf21d4548dcb48 100644 (file)
@@ -43,16 +43,25 @@ extern GladeXML *xml;
 
 
 
-static void enqueue_msg(const struct msg *m);
+static void enqueue_msg (const struct msg *m);
 
 
 static GQueue *message_queue;
 
+
+static void 
+msg_location (struct msg_locator *loc)
+{
+  loc->file_name = NULL; 
+  loc->line_number = -1;
+}
+
+
 void
 message_dialog_init (void) 
 {
   message_queue = g_queue_new();
-  msg_init(enqueue_msg);
+  msg_init (enqueue_msg, msg_location);
 }
 
 
@@ -155,13 +164,3 @@ popup_message(const struct msg *m)
   gtk_widget_destroy (dialog);
 }
 
-/* FIXME: This is a stub .
- * A temporary workaround until getl.c is rearranged
- */
-void
-msg_location (struct msg_locator *loc)
-{
-       loc->file_name = 0;
-       loc->line_number = -1;
-}
-
index 3e354a7b372d7b5c5cd2b882be5e85780b8fdd91..9b71cb51eea1e69eb2c4670b91e171b3a765fcc1 100644 (file)
@@ -41,7 +41,7 @@ static void handle_msg (const struct msg *);
 void
 msg_ui_init (void) 
 {
-  msg_init (handle_msg);
+  msg_init (handle_msg, get_msg_location);
 }
 
 void
@@ -50,6 +50,7 @@ msg_ui_done (void)
   msg_done ();
 }
 
+
 /* Checks whether we've had so many errors that it's time to quit
    processing this syntax file. */
 void