--- freem/src/fmadm.c 2025/03/22 18:43:54 1.8 +++ freem/src/fmadm.c 2025/03/30 01:36:58 1.17 @@ -1,5 +1,5 @@ /* - * $Id: fmadm.c,v 1.8 2025/03/22 18:43:54 snw Exp $ + * $Id: fmadm.c,v 1.17 2025/03/30 01:36:58 snw Exp $ * FreeM Administration Tool * * @@ -24,6 +24,33 @@ * along with FreeM. If not, see . * * $Log: fmadm.c,v $ + * 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 + * + * Revision 1.10 2025/03/24 19:22:16 snw + * Make fmadm configure copy freem.exe to freemd.exe for daemon operation on OS/2 systems + * + * Revision 1.9 2025/03/24 19:19:42 snw + * Make fmadm configure copy freem.exe to freemd.exe for daemon operation on OS/2 systems + * * Revision 1.8 2025/03/22 18:43:54 snw * Make STRLEN 255 chars and add BIGSTR macro for larger buffers * @@ -50,6 +77,10 @@ #include "namespace.h" #include "fs.h" +#if defined(__OS2__) +# include +#endif + #ifdef HAVE_LIBREADLINE # if defined(HAVE_READLINE_READLINE_H) # include @@ -1024,10 +1055,9 @@ int fm_edit (short object, int optc, cha case OBJ_ROUTINE: return fma_routines_edit (optc, options); - /* - case OBJ_GLOBAL: + /*case OBJ_GLOBAL: return fma_globals_edit (optc, options); - */ + */ default: fprintf (stderr, "fmadm: 'edit' is an invalid action for '%s'\n", obj_str); @@ -1137,12 +1167,34 @@ void fm_configure (void) snprintf (envbase, 4095, "%s/freem/%s", SYSCONFDIR, fma_environment); snprintf (nsbase, 4095, "%s/freem/%s", LOCALSTATEDIR, fma_environment); +#if defined(__OS2__) + { + char srcfile[PATHLEN]; + char dstfile[PATHLEN]; + + snprintf (srcfile, PATHLEN, "%s/bin/freem.exe", PREFIX); + snprintf (dstfile, PATHLEN, "%s/bin/freemd.exe", PREFIX); + + unlink (dstfile); + + fprintf (stderr, "fmadm: running on OS/2; will copy %s to %s\n", srcfile, dstfile); + + 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"); +#endif + printf ("\nFreeM Initial Configuration\n"); printf ("---------------------------\n\n"); 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) {