--- freem/src/fmadm.c 2025/03/24 19:25:48 1.11 +++ freem/src/fmadm.c 2025/03/31 16:33:56 1.18 @@ -1,5 +1,5 @@ /* - * $Id: fmadm.c,v 1.11 2025/03/24 19:25:48 snw Exp $ + * $Id: fmadm.c,v 1.18 2025/03/31 16:33:56 snw Exp $ * FreeM Administration Tool * * @@ -24,6 +24,27 @@ * along with FreeM. If not, see . * * $Log: fmadm.c,v $ + * Revision 1.18 2025/03/31 16:33:56 snw + * Work on fmadm edit global + * + * Revision 1.17 2025/03/30 01:36:58 snw + * Make it easier to bring back fma_gedit, fix double-free in global handler, limit $CHAR to 7-bit ASCII + * + * Revision 1.16 2025/03/24 20:59:58 snw + * Try using DosCopy API instead of built-in cp function on OS/2 + * + * Revision 1.15 2025/03/24 20:58:05 snw + * Try using DosCopy API instead of built-in cp function on OS/2 + * + * Revision 1.14 2025/03/24 20:57:06 snw + * Try using DosCopy API instead of built-in cp function on OS/2 + * + * Revision 1.13 2025/03/24 20:15:09 snw + * Set file permissions on freemd.exe on OS/2 in fmadm configure + * + * Revision 1.12 2025/03/24 20:13:34 snw + * Set file permissions on freemd.exe on OS/2 in fmadm configure + * * Revision 1.11 2025/03/24 19:25:48 snw * Make fmadm configure copy freem.exe to freemd.exe for daemon operation on OS/2 systems * @@ -59,6 +80,10 @@ #include "namespace.h" #include "fs.h" +#if defined(__OS2__) +# include +#endif + #ifdef HAVE_LIBREADLINE # if defined(HAVE_READLINE_READLINE_H) # include @@ -1033,11 +1058,9 @@ int fm_edit (short object, int optc, cha case OBJ_ROUTINE: return fma_routines_edit (optc, options); - /* case OBJ_GLOBAL: return fma_globals_edit (optc, options); - */ - + default: fprintf (stderr, "fmadm: 'edit' is an invalid action for '%s'\n", obj_str); return 1; @@ -1072,7 +1095,7 @@ void fm_reconfigure(void) retval = rename (config_file, config_backup); if (retval == 0) { - fprintf (stderr, "[OK]\n\n"); + fprintf (stderr, "[OK]\n"); fm_configure (); @@ -1131,9 +1154,9 @@ void fm_configure (void) } if (file_exists (config_file)) { - fprintf (stderr, "fmadm: '%s' already exists.\n\n", config_file); - fprintf (stderr, "'fmadm configure' may only be used on a fresh installation of FreeM.\n"); - exit (1); + fprintf (stderr, "fmadm: '%s' already exists; running fmadm reconfigure instead\n", config_file); + fm_reconfigure (); + return; } @@ -1157,11 +1180,13 @@ void fm_configure (void) unlink (dstfile); fprintf (stderr, "fmadm: running on OS/2; will copy %s to %s\n", srcfile, dstfile); - - if (cp (dstfile, srcfile) != 0) { + + if (DosCopy (srcfile, dstfile, 1) != 0) { fprintf (stderr, "fmadm: fatal error copying %s to %s\n", srcfile, dstfile); exit (1); } + + chmod (dstfile, 0755); } #else fprintf (stderr, "fmadm: not running on OS/2\n"); @@ -1173,9 +1198,6 @@ void fm_configure (void) printf ("This utility will create the initial configuration file for "); printf ("FreeM environment '%s' in %s.\n\n", fma_environment, config_file); - - - /* check for existence of needed directories */ if (stat (SYSCONFDIR, &etcstat) == -1) { fprintf (stderr, "fmadm: creating %s\n", SYSCONFDIR);