diff interps/c-intercal/src/ick_lose.c @ 996:859f9b4339e6

<Gregor> tar xf egobot.tar.xz
author HackBot
date Sun, 09 Dec 2012 19:30:08 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/interps/c-intercal/src/ick_lose.c	Sun Dec 09 19:30:08 2012 +0000
@@ -0,0 +1,74 @@
+/*
+ *
+ * NAME
+ *    ick_lose.c -- report INTERCAL compile- or run-time error
+ *
+LICENSE TERMS
+    Copyright (C) 1996 Eric S. Raymond
+
+    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., 675 Mass Ave, Cambridge, MA 02139, USA.
+ */
+/*LINTLIBRARY*/
+#include "config.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <signal.h>
+#include "ick_lose.h"
+
+int ick_coreonerr = 0; /* AIS */
+
+int ick_checkforbugs; /* AIS */
+
+/*@-formatconst@*/
+void ick_lose(const char *m, int n, const char *s)
+{
+    (void) fflush(stdout); /* AIS: To stop stdout getting muddled with stderr*/
+    (void) fprintf(stderr,
+		   "ICL%c%c%cI\t",
+		   m[0], m[1], m[2]);
+    if (s)
+	(void) fprintf(stderr, m + 4, s, n);
+    else
+	(void) fprintf(stderr, m + 4, n);
+    (void) fprintf(stderr, "        CORRECT SOURCE AND RESUBNIT\n");
+    if(atoi(m)==778&&ick_coreonerr) /* AIS */
+    {
+      /* AIS: Dump core. */
+      (void) raise(SIGABRT);
+    }
+    exit(atoi(m));
+}
+
+/* AIS: This function reports potential bugs. It's paraphrased from ick_lose. */
+void ick_lwarn(const char *m, int n, const char *s)
+{
+  if(!ick_checkforbugs) return; /* Don't report a potential bug without -l */
+  (void) fflush(stdout);
+  (void) fprintf(stderr,
+		 "ICL%c%c%cW\t",
+		 m[0],m[1],m[2]);
+  if (s)
+    (void) fprintf(stderr, m + 4, s, n);
+  else if(m[0]!='2'||m[1]!='7'||m[2]!='8')
+    (void) fprintf(stderr, m + 4, n);
+  else
+    (void) fprintf(stderr, m + 4);
+  (void) fprintf(stderr, "        RECONSIDER SOURCE AND RESUBNIT\n\n");
+  /* Don't exit. This is not any error except one not causing immediate
+     termination of program execution. */
+}
+/*@=formatconst@*/
+
+/* ick_lose.c ends here */