version 1.2, 2025/05/19 02:03:31
|
version 1.3, 2025/05/19 17:57:20
|
Line 26
|
Line 26
|
* 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.3 2025/05/19 17:57:20 snw |
|
* Extend ZEDIT to create the specified routine if it does not yet exist |
|
* |
* Revision 1.2 2025/05/19 02:03:31 snw |
* Revision 1.2 2025/05/19 02:03:31 snw |
* Reverse-engineer and document argumented ZPRINT (thanks to D. Wicksell) |
* Reverse-engineer and document argumented ZPRINT (thanks to D. Wicksell) |
* |
* |
Line 38
|
Line 41
|
**/ |
**/ |
|
|
#include <string.h> |
#include <string.h> |
|
#include <stdio.h> |
#include <stdlib.h> |
#include <stdlib.h> |
#include <ctype.h> |
#include <ctype.h> |
#include "mpsdef.h" |
#include "mpsdef.h" |
Line 51 MRESULT cmd_zedit(MACTION *ra)
|
Line 55 MRESULT cmd_zedit(MACTION *ra)
|
char editor_command[PATHLEN]; |
char editor_command[PATHLEN]; |
char *tgt_editor; |
char *tgt_editor; |
short free_editor = FALSE; |
short free_editor = FALSE; |
|
FILE *fp; |
|
|
if (restricted_mode) { |
if (restricted_mode) { |
/* we never shell out in restricted mode */ |
/* we never shell out in restricted mode */ |
retval = NOSTAND; |
retval = NOSTAND; |
Line 105 MRESULT cmd_zedit(MACTION *ra)
|
Line 110 MRESULT cmd_zedit(MACTION *ra)
|
|
|
if ((rtn_get_path (tgt_routine, pth)) == FALSE) { |
if ((rtn_get_path (tgt_routine, pth)) == FALSE) { |
/* the routine could not be found */ |
/* the routine could not be found */ |
retval = NOPGM; |
if ((fp = fopen (pth, "w")) == NULL) { |
goto done; |
retval = PROTECT; |
|
goto done; |
|
} |
|
|
|
fprintf (fp, "%s ; Created by FreeM Administrator\n QUIT\n", tgt_routine); |
|
fclose (fp); |
} |
} |
|
|
snprintf (editor_command, sizeof (editor_command) - 1, "%s %s", tgt_editor, pth); |
snprintf (editor_command, sizeof (editor_command) - 1, "%s %s", tgt_editor, pth); |
Line 122 MRESULT cmd_zedit(MACTION *ra)
|
Line 132 MRESULT cmd_zedit(MACTION *ra)
|
sig_attach (SIGUSR1, &oncld); |
sig_attach (SIGUSR1, &oncld); |
|
|
retval = OK; |
retval = OK; |
|
codptr++; |
|
|
done: |
done: |
if (free_editor) free (tgt_editor); |
if (free_editor) free (tgt_editor); |