version 1.5, 2025/04/13 04:22:43
|
version 1.10, 2025/05/14 12:22:04
|
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.10 2025/05/14 12:22:04 snw |
|
* Further work on shared memory |
|
* |
|
* Revision 1.9 2025/05/03 04:21:01 snw |
|
* Another fix for user-defined errors |
|
* |
|
* 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 |
* Revision 1.5 2025/04/13 04:22:43 snw |
* Fix snprintf calls |
* Fix snprintf calls |
* |
* |
Line 209 err_lut errtab[] = {
|
Line 224 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 220 inline int merr_raise(int num)
|
Line 241 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 318 void merr_set_ecode_ierr (void)
|
Line 346 void merr_set_ecode_ierr (void)
|
snprintf (t, MERR_COD_LENGTH - 1, ",%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); */ |
|
|
done: |
done: |
|
|
Line 405 void merr_dump (int num, char *rtn, char
|
Line 433 void merr_dump (int num, char *rtn, char
|
snprintf (tbuf, STRLEN - 1, "^$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); |
stcnv_m2c (nem); |
stcnv_m2c (nem); |
} |
} |
else { |
else { |
|
sprintf (nem, "user-defined error"); |
merr_clear (); |
merr_clear (); |
} |
} |
|
|
|
if (strlen (nem) == 0) { |
|
sprintf (nem, "user-defined error"); |
|
} |
|
|
} |
} |
else { |
else { |