X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Flibpspp%2Fmessage.c;h=e0f9bf178a202a94e76f93d4a6d3dd8d83bb3185;hb=638a86001fe7a237bd6c19a181d796305290d72a;hp=0d226a1732ed45a2825ac02ce263780f769947ee;hpb=3f31e9c3fe628db6fe7bb7fdf2a80634cecc8181;p=pspp diff --git a/src/libpspp/message.c b/src/libpspp/message.c index 0d226a1732..e0f9bf178a 100644 --- a/src/libpspp/message.c +++ b/src/libpspp/message.c @@ -57,6 +57,8 @@ msg (enum msg_class class, const char *format, ...) m.severity = msg_class_to_severity (class); va_start (args, format); m.text = xvasprintf (format, args); + m.where.file_name = NULL; + m.where.line_number = 0; va_end (args); msg_emit (&m); @@ -118,7 +120,7 @@ msg_to_string (const struct msg *m, const char *command_name) { if (m->where.file_name) ds_put_format (&s, "%s:", m->where.file_name); - if (m->where.line_number != -1) + if (m->where.line_number > 0) ds_put_format (&s, "%d:", m->where.line_number); ds_put_char (&s, ' '); } @@ -156,6 +158,9 @@ static bool too_many_errors; /* True after the maximum number of notes has been exceeded. */ static bool too_many_notes; +/* True iff warnings have been explicitly disabled (MXWARNS = 0) */ +static bool warnings_off = false; + /* Checks whether we've had so many errors that it's time to quit processing this syntax file. */ bool @@ -164,6 +169,13 @@ msg_ui_too_many_errors (void) return too_many_errors; } +void +msg_ui_disable_warnings (bool x) +{ + warnings_off = x; +} + + void msg_ui_reset_counts (void) { @@ -189,18 +201,23 @@ submit_note (char *s) m.category = MSG_C_GENERAL; m.severity = MSG_S_NOTE; m.where.file_name = NULL; - m.where.line_number = -1; + m.where.line_number = 0; m.text = s; msg_handler (&m); free (s); } + + static void process_msg (const struct msg *m) { int n_msgs, max_msgs; - if (too_many_errors || (too_many_notes && m->severity == MSG_S_NOTE)) + + if (too_many_errors + || (too_many_notes && m->severity == MSG_S_NOTE) + || (warnings_off && m->severity == MSG_S_WARNING) ) return; msg_handler (m); @@ -223,10 +240,10 @@ process_msg (const struct msg *m) { too_many_errors = true; if (m->severity == MSG_S_WARNING) - submit_note (xasprintf (_("Warnings (%d) exceed limit (%d)."), + submit_note (xasprintf (_("Warnings (%d) exceed limit (%d). Syntax processing will be halted."), n_msgs, max_msgs)); else - submit_note (xasprintf (_("Errors (%d) exceed limit (%d)."), + submit_note (xasprintf (_("Errors (%d) exceed limit (%d). Syntax processing will be halted."), n_msgs, max_msgs)); } } @@ -243,7 +260,7 @@ msg_emit (struct msg *m) else { m->where.file_name = NULL; - m->where.line_number = -1; + m->where.line_number = 0; } if (!messages_disabled)