1 /* 2 * error.c - error handling functions for cawf(1) 3 */ 4 5 /* 6 * Copyright (c) 1991 Purdue University Research Foundation, 7 * West Lafayette, Indiana 47907. All rights reserved. 8 * 9 * Written by Victor A. Abell <abe@mace.cc.purdue.edu>, Purdue 10 * University Computing Center. Not derived from licensed software; 11 * derived from awf(1) by Henry Spencer of the University of Toronto. 12 * 13 * Permission is granted to anyone to use this software for any 14 * purpose on any computer system, and to alter it and redistribute 15 * it freely, subject to the following restrictions: 16 * 17 * 1. The author is not responsible for any consequences of use of 18 * this software, even if they arise from flaws in it. 19 * 20 * 2. The origin of this software must not be misrepresented, either 21 * by explicit claim or by omission. Credits must appear in the 22 * documentation. 23 * 24 * 3. Altered versions must be plainly marked as such, and must not 25 * be misrepresented as being the original software. Credits must 26 * appear in the documentation. 27 * 28 * 4. This notice may not be removed or altered. 29 */ 30 31 #include "cawf.h" 32 33 34 /* 35 * Error(t, l, s1, s2) - issue error message 36 */ 37 38 void Error(int t, int l, char *s1, char *s2) { 39 /* type: WARN or FATAL t 40 * LINE: display Line[] l 41 * optional text s1 and s2 42 */ 43 char msg[MAXLINE]; /* message */ 44 45 if (t == WARN && !Dowarn) return; 46 47 if (l == LINE) 48 (void) fprintf(Efs, "%s: (%s, %d):%s%s - %s\n", 49 Pname, 50 Inname, 51 NR, 52 (s1 == NULL) ? "" : s1, 53 (s2 == NULL) ? "" : s2, 54 Line); 55 else 56 (void) fprintf(Efs, "%s:%s%s\n", 57 Pname, 58 (s1 == NULL) ? "" : s1, 59 (s2 == NULL) ? "" : s2); 60 if (t == FATAL) 61 exit(1); 62 Err = 1; 63 return; 64 } 65 66 67 /* 68 * Error3(len, word, sarg, narg) - process error in pass3 69 */ 70 71 void Error3(int len, char* word, char *sarg, int narg, char *msg) { 72 /* length (negative is special) len 73 * word word 74 * string argument sarg 75 * numeric argument narg 76 * message msg 77 */ 78 if (len == MESSAGE) { 79 (void) fprintf(Efs, "%s: (%s, %d) %s\n", 80 Pname, 81 (word == NULL) ? "<none>" : word, 82 narg, 83 (sarg == NULL) ? "<none>" : sarg); 84 return; 85 } 86 (void) fprintf(Efs, 87 "%s: pass3, len=%d, word=\"%s\", sarg=\"%s\", narg=%d%s%s\n", 88 Pname, len, 89 (word == NULL) ? "" : word, 90 (sarg == NULL) ? "" : sarg, 91 narg, 92 (msg == NULL) ? "" : " - ", 93 (msg == NULL) ? "" : msg); 94 Err = 1; 95 } 96