2 // RMAC - Reboot's Macro Assembler for all Atari computers
3 // ERROR.C - Error Handling
4 // Copyright (C) 199x Landon Dyer, 2011-2017 Reboot and Friends
5 // RMAC derived from MADMAC v1.07 Written by Landon Dyer, 1986
6 // Source utilised with the kind permission of Landon Dyer
14 int errcnt; // Error count
15 char * err_fname; // Name of error message file
17 static long unused; // For supressing 'write' warnings
21 // Report error if not at EOL
26 error("syntax error. expected EOL, found $%X ('%c')", *tok, *tok);
33 // Cannot create a file
35 void cantcreat(const char * fn)
37 printf("cannot create: '%s'\n", fn);
43 // Setup for error message
44 // o Create error listing file (if necessary)
45 // o Set current filename
51 if (err_fname != NULL)
53 strcpy(fnbuf, err_fname);
56 strcpy(fnbuf, firstfname);
60 if ((err_fd = open(fnbuf, _OPEN_FLAGS, _PERM_MODE)) < 0)
69 // Display error message (uses printf() style variable arguments)
71 int error(const char * text, ...)
80 vsprintf(buf, text, arg);
86 sprintf(buf1, "%s %d: Error: %s\n", curfname, curlineno, buf);
89 unused = write(err_fd, buf1, (LONG)strlen(buf1));
101 // Display warning message (uses printf() style variable arguments)
103 int warn(const char * text, ...)
111 vsprintf(buf, text, arg);
117 sprintf(buf1, "%s %d: Warning: %s\n", curfname, curlineno, buf);
120 unused = write(err_fd, buf1, (LONG)strlen(buf1));
130 int fatal(const char * s)
139 sprintf(buf, "%s %d: Fatal: %s\n", curfname, curlineno, s);
142 unused = write(err_fd, buf, (LONG)strlen(buf));
155 sprintf(buf, "%s %d: Internal error #%d\n", curfname, curlineno, n);
161 unused = write(err_fd, buf, (LONG)strlen(buf));