--- freem/src/fmadm.c 2025/04/03 01:41:02 1.29 +++ freem/src/fmadm.c 2025/04/10 01:24:38 1.33 @@ -1,5 +1,5 @@ /* - * $Id: fmadm.c,v 1.29 2025/04/03 01:41:02 snw Exp $ + * $Id: fmadm.c,v 1.33 2025/04/10 01:24:38 snw Exp $ * FreeM Administration Tool * * @@ -24,6 +24,18 @@ * along with FreeM. If not, see . * * $Log: fmadm.c,v $ + * Revision 1.33 2025/04/10 01:24:38 snw + * Remove C++ style comments + * + * Revision 1.32 2025/04/09 19:52:02 snw + * Eliminate as many warnings as possible while building with -Wall + * + * Revision 1.31 2025/04/04 19:43:18 snw + * Switch to using environment catalog to determine user and group for environment, and remove -u and -g flags from freem + * + * Revision 1.30 2025/04/03 20:48:14 snw + * Improve daemon error diagnostics and bump to 0.63.0-rc3 + * * Revision 1.29 2025/04/03 01:41:02 snw * New features frozen; prepare 0.63.0-rc1 * @@ -597,10 +609,7 @@ int fm_shell (void) char *cmdt = (char *) malloc (65535 * sizeof (char)); char *result = (char *) malloc (65535 * sizeof (char)); - /* - strcpy (fma_namespace, "SYSTEM"); - set_namespace (fma_namespace, FALSE); - */ + obj = 0; snprintf (fma_prompt, STRLEN - 1, "fmadm [%s]> ", fma_namespace); @@ -705,7 +714,6 @@ int fm_shell (void) i = 0; while ((result = strtok (NULL, " ")) != NULL) { - // printf ("%d = %s\n", i, result); strcpy (args[i++], result); } @@ -1165,8 +1173,6 @@ long fm_get_pid (char *env) { char pid_file[4096]; char tmp_pid[255]; - long res; - FILE *fp; snprintf (pid_file, 4095, "%s/freem/run/%s.pid", LOCALSTATEDIR, env); @@ -1210,7 +1216,7 @@ int fm_validate_environment (char *env) return FALSE; } -int fm_start_environment (char *env, char *e_user, char *e_grp) +int fm_start_environment (char *env) { char basecmd[255]; char cmd[4096]; @@ -1226,9 +1232,9 @@ int fm_start_environment (char *env, cha #endif #if !defined(__OS2__) - snprintf (cmd, 4095, "%s -d -e %s -u %s -g %s", basecmd, env, e_user, e_grp); + snprintf (cmd, 4095, "%s -d -e %s", basecmd, env); #else - sprintf (cmd, 4095, "%s -d -k -e %s -u %s -g %s", basecmd, env, e_user, e_grp); + sprintf (cmd, 4095, "%s -d -k -e %s", basecmd, env); #endif system (cmd); @@ -1305,7 +1311,9 @@ int fm_daemonctl (short action, short ob char *savptr; int result; long epid; + int retval; + retval = 0; switch (action) { case ACT_START: @@ -1384,7 +1392,7 @@ int fm_daemonctl (short action, short ob switch (action) { case ACT_START: - result = fm_start_environment (cur_env, e_user, e_grp); + result = fm_start_environment (cur_env); if (result == TRUE) { fprintf (stderr, "[OK]\n"); } @@ -1400,21 +1408,24 @@ int fm_daemonctl (short action, short ob } else { fprintf (stderr, "[FAIL]\n"); + retval++; } break; case ACT_RESTART: if (fm_stop_environment (cur_env) == TRUE) { - result = fm_start_environment (cur_env, e_user, e_grp); + result = fm_start_environment (cur_env); if (result == TRUE) { fprintf (stderr, "[OK]\n"); } else { fprintf (stderr, "[FAIL]\n"); + retval++; } } else { fprintf (stderr, "[FAIL]\n"); + retval++; } break; @@ -1422,7 +1433,7 @@ int fm_daemonctl (short action, short ob case ACT_STATUS: epid = fm_get_pid (cur_env); if (epid > -1) { - fprintf (stderr, " - %s environment daemon running as pid %d\n", cur_env, epid); + fprintf (stderr, " - %s environment daemon running as pid %ld\n", cur_env, epid); } else { fprintf (stderr, " - %s environment daemon does not appear to be running\n", cur_env); @@ -1435,7 +1446,7 @@ int fm_daemonctl (short action, short ob } while ((cur_env = strtok_r (NULL, ",", &savptr)) != NULL); free (envlist); - exit (0); + exit (retval); } /* fm_daemonctl() */ @@ -1448,7 +1459,6 @@ void fm_checkperms(void) void fm_reconfigure(void) { char config_backup[4096]; - char vers[4096]; int retval; @@ -1527,7 +1537,6 @@ void fm_configure (void) int reconfigure = FALSE; struct stat etcstat; - int stat_result; DIR *dir; struct dirent *ent; @@ -1538,27 +1547,22 @@ void fm_configure (void) char *groupname = env_group; #if !defined(__OS2__) + struct group *d_grp; + struct passwd *d_user; + if (geteuid () != 0) { fprintf (stderr, "fmadm: not superuser\n"); exit (1); } - struct group *d_grp; - struct passwd *d_user; - gid_t d_gid; - uid_t d_uid; - if ((d_grp = getgrnam (groupname)) == NULL) { fprintf (stderr, "fmadm: '%s' group must exist before configuring\n", groupname); exit (1); } - d_gid = d_grp->gr_gid; - if ((d_user = getpwnam (username)) == NULL) { fprintf (stderr, "fmadm: '%s' user must exist before configuring\n", username); exit (1); } - d_uid = d_user->pw_uid; #endif snprintf (varbase, 4095, "%s/freem", LOCALSTATEDIR); @@ -1767,8 +1771,6 @@ void fm_configure (void) fprintf (stderr, "[OK]\n"); } else { - char modtmp[255]; - fprintf (stderr, "\nUpdating %s: \n", env_config_file); update_conf (env_config_file, fma_environment, "user", env_user);