File: ick_lose.c

package info (click to toggle)
intercal 30:0.30-2
  • links: PTS
  • area: main
  • in suites: bullseye, buster, sid
  • size: 4,044 kB
  • sloc: ansic: 8,936; sh: 1,274; yacc: 1,073; lex: 518; lisp: 460; makefile: 435; perl: 295
file content (74 lines) | stat: -rw-r--r-- 2,304 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
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.h"        /* ugh, just for bool */
#include "ick_lose.h"

bool ick_coreonerr; /* AIS */
bool 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) fputs(m + 4, stderr);
  (void) fputs("        RECONSIDER SOURCE AND RESUBNIT\n\n", stderr);
  /* Don't exit. This is not any error except one not causing immediate
     termination of program execution. */
}
/*@=formatconst@*/

/* ick_lose.c ends here */