]> granicus.if.org Git - graphviz/commitdiff
Fix agerrors so it reports run-time errors as well as lex/parse errrors.
authorerg <devnull@localhost>
Sat, 5 Dec 2009 22:34:03 +0000 (22:34 +0000)
committererg <devnull@localhost>
Sat, 5 Dec 2009 22:34:03 +0000 (22:34 +0000)
lib/graph/graphio.c
lib/graph/lexer.c

index 9f169d38ce397f4e7341d346f041a2edf3b84c50..1a54e15025d3dcb28dc1ea1c93bf18e2f0a255d4 100644 (file)
@@ -91,11 +91,6 @@ Agraph_t *agread_usergets(FILE * fp, gets_f usergets)
     return AG.parsed_g;
 }
 
-int agerrors(void)
-{
-    return AG.syntax_errors;
-}
-
 static int
 _is_number_char(char c)
 {
index e3c2c30d77bd3c40504d3585c3453bc7c0d92537..53c15e07a1749e178de78c62df9285aeb46ed24e 100644 (file)
@@ -35,6 +35,7 @@ static unsigned char Comment_start;
 static unsigned char Start_html_string;
 int Line_number;
 static char *InputFile;
+static int agmaxerr;
 
 static void
 storeFileName (char* fname, int len)
@@ -86,6 +87,7 @@ void aglexinit(FILE * fp, gets_f mygets)
        TokenBuf = N_NEW(LineBufSize, char);
     }
     AG.fgets (AG.linebuf, 0, fp);      /* reset mygets */
+    AG.syntax_errors = 0;
 }
 
 #define ISSPACE(c) ((c != 0) && ((isspace(c) || iscntrl(c))))
@@ -490,6 +492,11 @@ void agseterr(agerrlevel_t lvl)
     agerrlevel = lvl;
 }
 
+int agerrors(void)
+{
+    return MAX(agmaxerr, AG.syntax_errors);
+}
+
 char *aglasterr()
 {
     long endpos;
@@ -517,6 +524,7 @@ static int agerr_va(agerrlevel_t level, const char *fmt, va_list args)
     lvl = (level == AGPREV ? agerrno : (level == AGMAX) ? AGERR : level);
 
     agerrno = lvl;
+    agmaxerr = MAX(agmaxerr, agerrno);
     if (lvl >= agerrlevel) {
        if (level != AGPREV)
            fprintf(stderr, "%s: ",