diff GEMBASSY-1.0.3/gsoap/src/error2.c @ 0:8300eb051bea draft

Initial upload
author ktnyt
date Fri, 26 Jun 2015 05:19:29 -0400
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/GEMBASSY-1.0.3/gsoap/src/error2.c	Fri Jun 26 05:19:29 2015 -0400
@@ -0,0 +1,152 @@
+/*
+	error2.c
+
+	Error handling.
+
+gSOAP XML Web services tools
+Copyright (C) 2000-2008, Robert van Engelen, Genivia Inc. All Rights Reserved.
+This part of the software is released under one of the following licenses:
+GPL or Genivia's license for commercial use.
+--------------------------------------------------------------------------------
+GPL license.
+
+This program is free software; you can redistribute it and/or modify it under
+the terms of the GNU General Public License as published by the Free Software
+Foundation; either version 2 of the License, or (at your option) any later
+version.
+
+This program is distributed in the hope that it will be useful, but WITHOUT ANY
+WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+PARTICULAR PURPOSE. See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License along with
+this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+Place, Suite 330, Boston, MA 02111-1307 USA
+
+Author contact information:
+engelen@genivia.com / engelen@acm.org
+
+This program is released under the GPL with the additional exemption that
+compiling, linking, and/or using OpenSSL is allowed.
+--------------------------------------------------------------------------------
+A commercial use license is available from Genivia, Inc., contact@genivia.com
+--------------------------------------------------------------------------------
+*/
+
+#include "soapcpp2.h"
+
+#ifdef HAVE_CONFIG_H
+#include "soapcpp2_yacc.h"
+#else
+#include "soapcpp2_yacc.tab.h"
+#endif
+
+#define	MAXERR 10
+
+extern char yytext[];	/* lexeme found by the lexical analyzer */
+
+static int lexerrno = 0;
+static int synerrno = 0;
+static int semerrno = 0;
+static int semwarno = 0;
+
+char errbuf[1024];	/* to hold error messages */
+
+/*
+yyerror - called by parser from an error production with nonterminal `error'
+*/
+void yyerror(char *s)
+{	fprintf(stderr, "%s(%d): %s\n", filename, yylineno, s);
+}
+
+/*
+lexerror - called by lexical analyzer upon failure to recognize a token
+*/
+void lexerror(const char *s)
+{	fprintf(stderr, "%s(%d): %s: %s\n", filename, yylineno, s, yytext);
+	if (lexerrno++ >= MAXERR)
+		execerror("too many syntactic errors, bailing out");
+}
+
+/*
+synerror - called by a semantic action in the yacc grammar
+*/
+void synerror(const char *s)
+{	fprintf(stderr, "%s(%d): Syntax error: %s\n", filename, yylineno-1, s);
+	if (synerrno++ >= MAXERR)
+		execerror("too many syntactic errors, bailing out");
+}
+
+/*
+semerror - report semantic error from static checking
+*/
+void semerror(const char *s)
+{	fprintf(stderr, "\n%s(%d): **ERROR**: %s\n\n", filename, yylineno, s);
+	if (semerrno++ >= MAXERR)
+		execerror("too many semantic errors, bailing out");
+}
+
+/*
+semwarn - report semantic warning from static checking
+*/
+void semwarn(const char *s)
+{	fprintf(stderr, "\n%s(%d): *WARNING*: %s\n\n", filename, yylineno, s);
+	semwarno++;
+}
+
+/*
+compliancewarn - report compliance warning
+*/
+void compliancewarn(const char *s)
+{	fprintf(stderr, "Compliance warning: %s\n", s);
+}
+
+/*
+typerror - report type error (a semantic error)
+*/
+void typerror(const char *s)
+{	fprintf(stderr, "%s(%d): Type error: %s\n", filename, yylineno, s);
+	if (semerrno++ >= MAXERR)
+		execerror("too many semantic errors, bailing out");
+}
+
+/*
+execerror - print error message and terminate execution
+*/
+void execerror(const char *s)
+{	fprintf(stderr, "Critical error: %s\n", s);
+	exit(1);
+}
+
+/*
+progerror - called when check(expr) failed, i.e. upon programming error
+*/
+void progerror(const char *s, const char *f, int l)
+{	fprintf(stderr, "Program failure: %s in file %s line %d\n", s, f, l);
+	exit(1);
+}
+
+/*
+errstat - show error statistics
+*/
+int errstat(void)
+{	if (!lexerrno && !synerrno && !semerrno)
+	{	fprintf(stderr, "\nCompilation successful ");
+		if (semwarno)
+			fprintf(stderr, "(%d warning%s)\n\n", semwarno, semwarno>1?"s":"");
+		else
+			fprintf(stderr, "\n\n");
+		return 0;
+	}
+	fprintf(stderr, "\nThere were errors:\n");
+	if (lexerrno)
+		fprintf(stderr, "%d lexical error%s\n", lexerrno, lexerrno>1?"s":"");
+	if (synerrno)
+		fprintf(stderr, "%d syntax error%s\n", synerrno, synerrno>1?"s":"");
+	if (semerrno)
+		fprintf(stderr, "%d semantic error%s\n", semerrno, semerrno>1?"s":"");
+	if (semwarno)
+		fprintf(stderr, "%d warning%s\n", semwarno, semwarno>1?"s":"");
+	fprintf(stderr, "\n");
+	return -1;
+}