|
|
| version 1.4, 2025/04/09 19:52:02 | version 1.8, 2025/05/03 04:12:34 |
|---|---|
| Line 24 | Line 24 |
| * along with FreeM. If not, see <https://www.gnu.org/licenses/>. | * along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
| * | * |
| * $Log$ | * $Log$ |
| * Revision 1.8 2025/05/03 04:12:34 snw | |
| * Fix user-defined error codes | |
| * | |
| * Revision 1.7 2025/05/01 03:56:29 snw | |
| * -m | |
| * | |
| * Revision 1.6 2025/04/30 17:19:16 snw | |
| * Improve backtraces in debugger | |
| * | |
| * Revision 1.5 2025/04/13 04:22:43 snw | |
| * Fix snprintf calls | |
| * | |
| * Revision 1.4 2025/04/09 19:52:02 snw | * Revision 1.4 2025/04/09 19:52:02 snw |
| * Eliminate as many warnings as possible while building with -Wall | * Eliminate as many warnings as possible while building with -Wall |
| * | * |
| Line 206 err_lut errtab[] = { | Line 218 err_lut errtab[] = { |
| inline int merr_raise(int num) | inline int merr_raise(int num) |
| { | { |
| char placebuf[256]; | |
| char lref[256]; | |
| if (num != OK) { | |
| lasterr[nstx] = ierr; | |
| } | |
| if (merr_in_break ()) { | if (merr_in_break ()) { |
| ierr = num - CTRLB; | ierr = num - CTRLB; |
| Line 217 inline int merr_raise(int num) | Line 235 inline int merr_raise(int num) |
| if (num != OK) { | if (num != OK) { |
| merr_set_ecode_ierr (); | merr_set_ecode_ierr (); |
| stcpy (merr_stack[nstx].MCODE, code); | |
| stcpy (merr_stack[nstx].ECODE, ecode); | stcpy (merr_stack[nstx].ECODE, ecode); |
| if (direct_mode == 1 && nstx == 0) { | if (direct_mode == 1 && nstx == 0) { |
| stcpy (merr_stack[nstx].PLACE, "@\201\0"); | stcpy (merr_stack[nstx].PLACE, "@\201\0"); |
| stcpy (merr_stack[nstx].MCODE, " \201\0"); | |
| } | } |
| else { | else { |
| if (!rtn_get_offset (merr_stack[nstx].PLACE)) { | getraddress (placebuf, nstx); |
| stcpy (merr_stack[nstx].PLACE, "???\201"); | stcpy (merr_stack[nstx].PLACE, &(placebuf[3])); |
| stcpy (lref, merr_stack[nstx].PLACE); | |
| stcnv_m2c (lref); | |
| if (routine_get_line (lref, merr_stack[nstx].MCODE) == NULL) { | |
| sprintf (merr_stack[nstx].MCODE, "???\201"); | |
| } | |
| else { | |
| stcnv_c2m (merr_stack[nstx].MCODE); | |
| } | } |
| } | } |
| if (nstx > merr_topstk) merr_topstk = nstx; | if (nstx > merr_topstk) merr_topstk = nstx; |
| } | } |
| return ierr; | return ierr; |
| } | } |
| Line 304 void merr_set_ecode_ierr (void) | Line 329 void merr_set_ecode_ierr (void) |
| char *cod; | char *cod; |
| char *t; | char *t; |
| cod = (char *) malloc (256 * sizeof (char)); | cod = (char *) malloc (MERR_COD_LENGTH * sizeof (char)); |
| NULLPTRCHK(cod,"merr_set_ecode_ierr"); | NULLPTRCHK(cod,"merr_set_ecode_ierr"); |
| t = (char *) malloc (256 * sizeof (char)); | t = (char *) malloc (MERR_COD_LENGTH * sizeof (char)); |
| NULLPTRCHK(t,"merr_set_ecode_ierr"); | NULLPTRCHK(t,"merr_set_ecode_ierr"); |
| if ((merr_num_to_code (merr (), cod)) == -1) goto done; | if ((merr_num_to_code (merr (), cod)) == -1) goto done; |
| snprintf (t, 255, ",%s,\201", cod); | snprintf (t, MERR_COD_LENGTH - 1, ",%s,\201", cod); |
| merr_set_ecode (t); | merr_set_ecode (t); |
| job_set_ecode (pid, cod); | job_set_ecode (pid, cod); |
| Line 399 void merr_dump (int num, char *rtn, char | Line 424 void merr_dump (int num, char *rtn, char |
| stcnv_m2c (real_ecode); | stcnv_m2c (real_ecode); |
| real_ecode [strlen (real_ecode) - 1] = NUL; | real_ecode [strlen (real_ecode) - 1] = NUL; |
| snprintf (tbuf, STRLEN, "^$JOB\202%d\202USER_ERRORS\202%s\201", pid, &user_ecode[1]); | snprintf (tbuf, STRLEN - 1, "^$JOB\202%d\202USER_ERRORS\202%s\201", pid, &user_ecode[1]); |
| tbuf [stlen (tbuf) - 1] = '\201'; | tbuf [stlen (tbuf) - 1] = '\201'; |
| global (get_sym, tbuf, dbuf); | ssvn (get_sym, tbuf, dbuf); |
| if (merr () == OK) { | if (merr () == OK) { |
| stcpy (nem, dbuf); | stcpy (nem, dbuf); |
| Line 420 void merr_dump (int num, char *rtn, char | Line 445 void merr_dump (int num, char *rtn, char |
| if (!stlen (err_suppl)) { | if (!stlen (err_suppl)) { |
| snprintf (tbuf, STRLEN, "\r\n>> Error %s: %s in %s.%s::%s [$STACK = %d]\r\n\201", real_ecode, nem, shm_env, nsn, nrt, nstx); | snprintf (tbuf, STRLEN - 1, "\r\n>> Error %s: %s in %s.%s::%s [$STACK = %d]\r\n\201", real_ecode, nem, shm_env, nsn, nrt, nstx); |
| } | } |
| else { | else { |
| stcnv_m2c (err_suppl); | stcnv_m2c (err_suppl); |
| snprintf (tbuf, STRLEN, "\r\n>> Error %s: %s (%s) in %s::%s [$STACK = %d]\r\n\201", real_ecode, nem, err_suppl, nsn, nrt, nstx); | snprintf (tbuf, STRLEN - 1, "\r\n>> Error %s: %s (%s) in %s::%s [$STACK = %d]\r\n\201", real_ecode, nem, err_suppl, nsn, nrt, nstx); |
| err_suppl[0] = EOL; | err_suppl[0] = EOL; |
| } | } |
| write_m (tbuf); | write_m (tbuf); |