| version 1.11, 2025/04/01 23:21:45 | version 1.13, 2025/04/02 03:26:22 | 
| 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.13  2025/04/02 03:26:22  snw | 
 |  | *   Don't corrupt the terminal if FreeM runs before fmadm configure has been run | 
 |  | * | 
 |  | *   Revision 1.12  2025/04/02 02:16:27  snw | 
 |  | *   Add fmadm status environment command and move journals to a better location | 
 |  | * | 
 | *   Revision 1.11  2025/04/01 23:21:45  snw | *   Revision 1.11  2025/04/01 23:21:45  snw | 
 | *   fmadm commands for stopping, starting, and restarting environments now functional | *   fmadm commands for stopping, starting, and restarting environments now functional | 
 | * | * | 
| Line 109  int main (int argc, char **argv, char ** | Line 115  int main (int argc, char **argv, char ** | 
 |  |  | 
 | int option_index = 0; | int option_index = 0; | 
 |  |  | 
 |  | char fm_initialized = FALSE; | 
 |  |  | 
 | char dx_mcode[512]; | char dx_mcode[512]; | 
 | char startup_routine[256]; | char startup_routine[256]; | 
 | short routine_mode; | short routine_mode; | 
| Line 644  int main (int argc, char **argv, char ** | Line 652  int main (int argc, char **argv, char ** | 
 |  |  | 
 | exit (1); | exit (1); | 
 |  |  | 
| } | } | 
|  | else { | 
|  | fm_initialized = TRUE; | 
|  | } | 
 |  |  | 
 |  |  | 
 | direct_mode = FALSE; | direct_mode = FALSE; | 
| Line 711  int main (int argc, char **argv, char ** | Line 722  int main (int argc, char **argv, char ** | 
 |  |  | 
 | } | } | 
 |  |  | 
|  |  | 
 | if (!file_exists (config_file)) { | if (!file_exists (config_file)) { | 
 |  |  | 
| set_io (UNIX); | if (fm_initialized == TRUE) set_io (UNIX); | 
|  |  | 
 | fprintf (stderr, "\nFreeM has not been configured. Please run 'fmadm configure'.\n\n\n\n"); | fprintf (stderr, "\nFreeM has not been configured. Please run 'fmadm configure'.\n\n\n\n"); | 
 |  |  | 
 | exit (2); | exit (2); | 
| Line 724  int main (int argc, char **argv, char ** | Line 736  int main (int argc, char **argv, char ** | 
 | if (!skip_init) { | if (!skip_init) { | 
 | /* initialize FreeM environment */ | /* initialize FreeM environment */ | 
 | strncpy (nsnbuf, nsname, 255); | strncpy (nsnbuf, nsname, 255); | 
| if (init (nsnbuf) == FALSE) { | if (init (nsnbuf) == FALSE) { | 
|  |  | 
 | set_io (UNIX); | set_io (UNIX); | 
 | fprintf (stderr, "\nError initializing FreeM.\n"); | fprintf (stderr, "\nError initializing FreeM.\n"); | 
 |  |  | 
 | exit (1); | exit (1); | 
 |  |  | 
 | } | } | 
 |  | else { | 
 |  | fm_initialized = TRUE; | 
 |  | } | 
 | } | } | 
 |  |  | 
 | if (first_process == TRUE) { | if (first_process == TRUE) { | 
| Line 940  void freem_usage(void) | Line 953  void freem_usage(void) | 
 | fprintf (stdout, "\t-x <MCODE>\n\t\texecute M code <MCODE> on startup\n\n"); | fprintf (stdout, "\t-x <MCODE>\n\t\texecute M code <MCODE> on startup\n\n"); | 
 | fprintf (stdout, "\t-d\n\t\trun the FreeM daemon (one and only one FreeM daemon must always be running)\n\n"); | fprintf (stdout, "\t-d\n\t\trun the FreeM daemon (one and only one FreeM daemon must always be running)\n\n"); | 
 | fprintf (stdout, "\t-k\n\t\trun the FreeM daemon in foreground (requires --daemon)\n\n"); | fprintf (stdout, "\t-k\n\t\trun the FreeM daemon in foreground (requires --daemon)\n\n"); | 
 | fprintf (stdout, "\t-p <PIDFILE>\n\t\tuse <PIDFILE> to record the PID of the FreeM daemon\n\n\n"); |  | 
 | fprintf (stdout, "\t-S <BYTES>\n\t\tsets the size of the shared memory segment where FreeM stores the job table, lock table, and IPC table.\n"); | fprintf (stdout, "\t-S <BYTES>\n\t\tsets the size of the shared memory segment where FreeM stores the job table, lock table, and IPC table.\n"); | 
 | #endif | #endif | 
 | fprintf (stdout, "\t\t  - Each concurrent job takes %d bytes (1 page) of shared memory\n", PG_SIZE); | fprintf (stdout, "\t\t  - Each concurrent job takes %d bytes (1 page) of shared memory\n", PG_SIZE); |