Diff for /freem/src/fmadm.c between versions 1.34 and 1.35

version 1.34, 2025/04/10 15:31:25 version 1.35, 2025/04/13 04:22:43
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.35  2025/04/13 04:22:43  snw
    *   Fix snprintf calls
    *
  *   Revision 1.34  2025/04/10 15:31:25  snw   *   Revision 1.34  2025/04/10 15:31:25  snw
  *   Attempt to fix DosCopy calls for OS/2   *   Attempt to fix DosCopy calls for OS/2
  *   *
Line 360  int main (int argc, char **argv) Line 363  int main (int argc, char **argv)
           
     if (obj != OBJ_DAEMON) {      if (obj != OBJ_DAEMON) {
         if (strlen (env_user) == 0) {          if (strlen (env_user) == 0) {
             snprintf (env_user, 6, "freem");              snprintf (env_user, sizeof (env_user) - 1, "freem");
         }          }
                   
         if (strlen (env_group) == 0) {          if (strlen (env_group) == 0) {
             snprintf (env_group, 6, "freem");              snprintf (env_group, sizeof (env_group) - 1, "freem");
         }          }
   
   
         if (!fma_explicit_environment) snprintf (fma_environment, 4096, "DEFAULT");          if (!fma_explicit_environment) snprintf (fma_environment, sizeof (fma_environment) - 1, "DEFAULT");
         if (!fma_explicit_namespace) snprintf (fma_namespace, 4096, "SYSTEM");          if (!fma_explicit_namespace) snprintf (fma_namespace, sizeof (fma_namespace) - 1, "SYSTEM");
           
         snprintf (config_file, 4096, "%s/freem/%s/freem.conf", SYSCONFDIR, fma_environment);          snprintf (config_file, sizeof (config_file) - 1, "%s/freem/%s/freem.conf", SYSCONFDIR, fma_environment);
     }      }
           
     snprintf (env_config_file, 4096, "%s/freem/env.conf", SYSCONFDIR);      snprintf (env_config_file, sizeof (env_config_file) - 1, "%s/freem/env.conf", SYSCONFDIR);
           
 /*  /*
     printf ("action = '%s' object = '%s' environment = '%s' namespace = '%s' config_file = '%s' base_arg = '%d' next argument = '%s'\n", action, obj_str, fma_environment, fma_namespace, config_file, base_arg, argv[base_arg]);      printf ("action = '%s' object = '%s' environment = '%s' namespace = '%s' config_file = '%s' base_arg = '%d' next argument = '%s'\n", action, obj_str, fma_environment, fma_namespace, config_file, base_arg, argv[base_arg]);
Line 1178  long fm_get_pid (char *env) Line 1181  long fm_get_pid (char *env)
     char tmp_pid[255];      char tmp_pid[255];
     FILE *fp;      FILE *fp;
   
     snprintf (pid_file, 4095, "%s/freem/run/%s.pid", LOCALSTATEDIR, env);      snprintf (pid_file, sizeof (pid_file) - 1, "%s/freem/run/%s.pid", LOCALSTATEDIR, env);
   
     if ((fp = fopen (pid_file, "r")) != NULL) {      if ((fp = fopen (pid_file, "r")) != NULL) {
         if (fgets (tmp_pid, 255, fp)) {          if (fgets (tmp_pid, 255, fp)) {
Line 1201  int fm_validate_environment (char *env) Line 1204  int fm_validate_environment (char *env)
     char line[255];      char line[255];
     char chkline[255];      char chkline[255];
   
     snprintf (chkline, 254, "[%s]\n", env);      snprintf (chkline, sizeof (chkline) - 1, "[%s]\n", env);
           
     if ((fp = fopen (env_config_file, "r")) == NULL) {      if ((fp = fopen (env_config_file, "r")) == NULL) {
         fprintf (stderr, "fmadm:  could not open %s [%s]\n", env_config_file, strerror (errno));          fprintf (stderr, "fmadm:  could not open %s [%s]\n", env_config_file, strerror (errno));
Line 1229  int fm_start_environment (char *env) Line 1232  int fm_start_environment (char *env)
     }      }
           
 #if !defined(__OS2__)  #if !defined(__OS2__)
     snprintf (basecmd, 254, "%s/bin/freem", PREFIX);      snprintf (basecmd, sizeof (basecmd) - 1, "%s/bin/freem", PREFIX);
 #else  #else
     snprintf (basecmd, 254, "%s/bin/freemd.exe", PREFIX);      snprintf (basecmd, sizeof (basecmd) - 1, "%s/bin/freemd.exe", PREFIX);
 #endif  #endif
   
 #if !defined(__OS2__)                      #if !defined(__OS2__)                    
     snprintf (cmd, 4095, "%s -d -e %s", basecmd, env);      snprintf (cmd, sizeof (basecmd) - 1, "%s -d -e %s", basecmd, env);
 #else  #else
     sprintf (cmd, 4095, "%s -d -k -e %s", basecmd, env);      sprintf (cmd, 4095, "%s -d -k -e %s", basecmd, env);
 #endif  #endif
Line 1351  int fm_daemonctl (short action, short ob Line 1354  int fm_daemonctl (short action, short ob
             if (line[0] == '[') {              if (line[0] == '[') {
                 strncpy (env, &(line[1]), 255);                  strncpy (env, &(line[1]), 255);
                 env[strlen (env) - 2] = '\0';                  env[strlen (env) - 2] = '\0';
                 snprintf (tmps, 255, "%s,", env);                  snprintf (tmps, sizeof (tmps) - 1, "%s,", env);
                 strncat (envlist, tmps, BIGSTR - 1);                  strncat (envlist, tmps, BIGSTR - 1);
             }              }
         }          }
Line 1470  void fm_reconfigure(void) Line 1473  void fm_reconfigure(void)
         exit (1);          exit (1);
     }      }
           
     snprintf (config_backup, 4095, "%s.orig", config_file);      snprintf (config_backup, sizeof (config_backup) - 1, "%s.orig", config_file);
   
     fprintf (stderr, "fmadm:  reconfiguring FreeM with system defaults for %s...\n", FREEM_VERSION_CSTR);      fprintf (stderr, "fmadm:  reconfiguring FreeM with system defaults for %s...\n", FREEM_VERSION_CSTR);
     fprintf (stderr, "fmadm:  backing up %s to %s...\t", config_file, config_backup);          fprintf (stderr, "fmadm:  backing up %s to %s...\t", config_file, config_backup);    
Line 1501  void update_conf (char *file, char *sect Line 1504  void update_conf (char *file, char *sect
     char old_value[255];      char old_value[255];
     char tbuf[255];      char tbuf[255];
   
     snprintf (tbuf, 254, "%s.%s", section, key);      snprintf (tbuf, sizeof (tbuf) - 1, "%s.%s", section, key);
                   
     read_profile_string (file, section, key, old_value);      read_profile_string (file, section, key, old_value);
     if (strcmp (old_value, new_value) != 0) {      if (strcmp (old_value, new_value) != 0) {
Line 1568  void fm_configure (void) Line 1571  void fm_configure (void)
     }      }
 #endif      #endif    
                   
     snprintf (varbase, 4095, "%s/freem", LOCALSTATEDIR);      snprintf (varbase, sizeof (varbase) - 1, "%s/freem", LOCALSTATEDIR);
     snprintf (rundir, 4095, "%s/freem/run", LOCALSTATEDIR);      snprintf (rundir, sizeof (rundir) - 1, "%s/freem/run", LOCALSTATEDIR);
     snprintf (sysrtn, 4095, "%s/freem/%s/SYSTEM/routines", LOCALSTATEDIR, fma_environment);      snprintf (sysrtn, sizeof (sysrtn) - 1, "%s/freem/%s/SYSTEM/routines", LOCALSTATEDIR, fma_environment);
     snprintf (sysgbl, 4095, "%s/freem/%s/SYSTEM/globals", LOCALSTATEDIR, fma_environment);      snprintf (sysgbl, sizeof (sysgbl) - 1, "%s/freem/%s/SYSTEM/globals", LOCALSTATEDIR, fma_environment);
     snprintf (usrrtn, 4095, "%s/freem/%s/USER/routines", LOCALSTATEDIR, fma_environment);      snprintf (usrrtn, sizeof (usrrtn) - 1, "%s/freem/%s/USER/routines", LOCALSTATEDIR, fma_environment);
     snprintf (usrgbl, 4095, "%s/freem/%s/USER/globals", LOCALSTATEDIR, fma_environment);      snprintf (usrgbl, sizeof (usrgbl) - 1, "%s/freem/%s/USER/globals", LOCALSTATEDIR, fma_environment);
     snprintf (jnldir, 4095, "%s/freem/%s/journals", LOCALSTATEDIR, fma_environment);      snprintf (jnldir, sizeof (jnldir) - 1, "%s/freem/%s/journals", LOCALSTATEDIR, fma_environment);
     snprintf (jnlfile, 4095, "%s/freem_journal_%s.dat", jnldir, fma_environment);      snprintf (jnlfile, sizeof (jnlfile) - 1, "%s/freem_journal_%s.dat", jnldir, fma_environment);
     snprintf (jnlmode, 3, "on");      snprintf (jnlmode, sizeof (jnlmode) - 1, "on");
     snprintf (jnlhostid, 4095, "DEFAULT");      snprintf (jnlhostid, sizeof (jnlhostid) - 1, "DEFAULT");
     snprintf (jnlcut, 4095, "4294967000");      snprintf (jnlcut, sizeof (jnlcut) - 1, "4294967000");
           
     if (geteuid () != 0) {      if (geteuid () != 0) {
         fprintf (stderr, "fmadm:  not superuser\n");          fprintf (stderr, "fmadm:  not superuser\n");
Line 1592  void fm_configure (void) Line 1595  void fm_configure (void)
     gethostname (hostid, 4095);      gethostname (hostid, 4095);
     uuid_v4 (buf);      uuid_v4 (buf);
   
     snprintf (jnlhostid, 4095, "%s:%s", hostid, buf);      snprintf (jnlhostid, sizeof (jnlhostid) - 1, "%s:%s", hostid, buf);
     snprintf (confbase, 4095, "%s/freem", SYSCONFDIR);      snprintf (confbase, sizeof (confbase) - 1, "%s/freem", SYSCONFDIR);
     snprintf (envbase, 4095, "%s/freem/%s", SYSCONFDIR, fma_environment);       snprintf (envbase, sizeof (envbase) - 1, "%s/freem/%s", SYSCONFDIR, fma_environment); 
     snprintf (nsbase, 4095, "%s/freem/%s", LOCALSTATEDIR, fma_environment);      snprintf (nsbase, sizeof (nsbase) - 1, "%s/freem/%s", LOCALSTATEDIR, fma_environment);
   
 #if defined(__OS2__)  #if defined(__OS2__)
     {      {
         char srcfile[PATHLEN];          char srcfile[PATHLEN];
         char dstfile[PATHLEN];                  char dstfile[PATHLEN];        
                   
         snprintf (srcfile, PATHLEN, "%s/bin/freem.exe", PREFIX);          snprintf (srcfile, PATHLEN - 1, "%s/bin/freem.exe", PREFIX);
         snprintf (dstfile, PATHLEN, "%s/bin/freemd.exe", PREFIX);          snprintf (dstfile, PATHLEN - 1, "%s/bin/freemd.exe", PREFIX);
   
         unlink (dstfile);          unlink (dstfile);
                   
Line 1677  void fm_configure (void) Line 1680  void fm_configure (void)
     }      }
   
           
     snprintf (src_dir, 4095, "%s/freem/mlib", DATADIR);      snprintf (src_dir, sizeof (src_dir) - 1, "%s/freem/mlib", DATADIR);
     snprintf (dest_dir, 4095, "%s/freem/%s/SYSTEM/routines", LOCALSTATEDIR, fma_environment);      snprintf (dest_dir, sizeof (dest_dir) - 1, "%s/freem/%s/SYSTEM/routines", LOCALSTATEDIR, fma_environment);
   
     if (reconfigure == FALSE) {      if (reconfigure == FALSE) {
         fprintf (stderr, "fmadm:  populating new environment '%s'\n", fma_environment);          fprintf (stderr, "fmadm:  populating new environment '%s'\n", fma_environment);
Line 1687  void fm_configure (void) Line 1690  void fm_configure (void)
         fprintf (stderr, "fmadm:  upgrading environment '%s'\n", fma_environment);          fprintf (stderr, "fmadm:  upgrading environment '%s'\n", fma_environment);
     }      }
           
     snprintf (buf, 4095, "%s/freem/%s/SYSTEM", LOCALSTATEDIR, fma_environment);      snprintf (buf, sizeof (buf) - 1, "%s/freem/%s/SYSTEM", LOCALSTATEDIR, fma_environment);
     mkdir (buf, 0775);      mkdir (buf, 0775);
     set_permissions (buf, username, groupname, 0775);      set_permissions (buf, username, groupname, 0775);
           
     snprintf (buf, 4095, "%s/freem/%s/USER", LOCALSTATEDIR, fma_environment);      snprintf (buf, sizeof (buf) - 1, "%s/freem/%s/USER", LOCALSTATEDIR, fma_environment);
     mkdir (buf, 0775);      mkdir (buf, 0775);
     set_permissions (buf, username, groupname, 0775);      set_permissions (buf, username, groupname, 0775);
           
     snprintf (buf, 4095, "%s/freem/%s/SYSTEM/routines", LOCALSTATEDIR, fma_environment);      snprintf (buf, sizeof (buf) - 1, "%s/freem/%s/SYSTEM/routines", LOCALSTATEDIR, fma_environment);
     mkdir (buf, 0775);      mkdir (buf, 0775);
     set_permissions (buf, username, groupname, 0775);      set_permissions (buf, username, groupname, 0775);
           
     snprintf (buf, 4095, "%s/freem/%s/USER/globals", LOCALSTATEDIR, fma_environment);      snprintf (buf, sizeof (buf) - 1, "%s/freem/%s/USER/globals", LOCALSTATEDIR, fma_environment);
     mkdir (buf, 0775);      mkdir (buf, 0775);
     set_permissions (buf, username, groupname, 0775);      set_permissions (buf, username, groupname, 0775);
           
     snprintf (buf, 4095, "%s/freem/%s/SYSTEM/globals", LOCALSTATEDIR, fma_environment);      snprintf (buf, sizeof (buf) - 1, "%s/freem/%s/SYSTEM/globals", LOCALSTATEDIR, fma_environment);
     mkdir (buf, 0775);      mkdir (buf, 0775);
     set_permissions (buf, username, groupname, 0775);      set_permissions (buf, username, groupname, 0775);
           
     snprintf (buf, 4095, "%s/freem/%s/USER/routines", LOCALSTATEDIR, fma_environment);      snprintf (buf, sizeof (buf) - 1, "%s/freem/%s/USER/routines", LOCALSTATEDIR, fma_environment);
     mkdir (buf, 0775);      mkdir (buf, 0775);
     set_permissions (buf, username, groupname, 0775);      set_permissions (buf, username, groupname, 0775);
           
Line 1724  void fm_configure (void) Line 1727  void fm_configure (void)
                   
         if ((strcmp (ent->d_name, ".") != 0) && (strcmp (ent->d_name, "..") != 0)) {                     if ((strcmp (ent->d_name, ".") != 0) && (strcmp (ent->d_name, "..") != 0)) {           
                           
             snprintf (infile, 4095, "%s/%s", src_dir, ent->d_name);              snprintf (infile, sizeof (infile) - 1, "%s/%s", src_dir, ent->d_name);
             snprintf (outfile, 4095, "%s/%s", dest_dir, ent->d_name);              snprintf (outfile, sizeof (outfile) - 1, "%s/%s", dest_dir, ent->d_name);
   
             if (stat (outfile, &etcstat) == 0) {              if (stat (outfile, &etcstat) == 0) {
                 unlink (outfile);                  unlink (outfile);
Line 1755  void fm_configure (void) Line 1758  void fm_configure (void)
                   
         fprintf (stderr, "Creating %s... ", env_config_file);          fprintf (stderr, "Creating %s... ", env_config_file);
                   
         snprintf (buf, 4095, "[%s]", fma_environment);          snprintf (buf, sizeof (buf) - 1, "[%s]", fma_environment);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "user=%s", env_user);          snprintf (buf, sizeof (buf) - 1, "user=%s", env_user);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "group=%s", env_group);          snprintf (buf, sizeof (buf) - 1, "group=%s", env_group);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "enabled=%s", env_enabled);          snprintf (buf, sizeof (buf) - 1, "enabled=%s", env_enabled);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "env_path=%s/freem/%s", LOCALSTATEDIR, fma_environment);          snprintf (buf, sizeof (buf) - 1, "env_path=%s/freem/%s", LOCALSTATEDIR, fma_environment);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         fclose (fp);          fclose (fp);
Line 1786  void fm_configure (void) Line 1789  void fm_configure (void)
                   
         fprintf (stderr, "Creating %s... ", config_file);           fprintf (stderr, "Creating %s... ", config_file); 
                   
         snprintf (buf, 4095, "[SYSTEM]");          snprintf (buf, sizeof (buf) - 1, "[SYSTEM]");
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "root=%s/freem/%s/SYSTEM", LOCALSTATEDIR, fma_environment);          snprintf (buf, sizeof (buf) - 1, "root=%s/freem/%s/SYSTEM", LOCALSTATEDIR, fma_environment);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "routines_path=%s", sysrtn);          snprintf (buf, sizeof (buf) - 1, "routines_path=%s", sysrtn);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "globals_path=%s", sysgbl);          snprintf (buf, sizeof (buf) - 1, "globals_path=%s", sysgbl);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "journal_file=%s", jnlfile);          snprintf (buf, sizeof (buf) - 1, "journal_file=%s", jnlfile);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "journal_mode=%s", jnlmode);          snprintf (buf, sizeof (buf) - 1, "journal_mode=%s", jnlmode);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "journal_host_id=%s", jnlhostid);          snprintf (buf, sizeof (buf) - 1, "journal_host_id=%s", jnlhostid);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "journal_cut_threshold=%s", jnlcut);          snprintf (buf, sizeof (buf) - 1, "journal_cut_threshold=%s", jnlcut);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "zdate_format=%%x");          snprintf (buf, sizeof (buf) - 1, "zdate_format=%%x");
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "ztime_format=%%X");          snprintf (buf, sizeof (buf) - 1, "ztime_format=%%X");
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "\n[USER]");          snprintf (buf, sizeof (buf) - 1, "\n[USER]");
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "root=%s/freem/%s/USER", LOCALSTATEDIR, fma_environment);          snprintf (buf, sizeof (buf) - 1, "root=%s/freem/%s/USER", LOCALSTATEDIR, fma_environment);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "routines_path=%s", usrrtn);          snprintf (buf, sizeof (buf) - 1, "routines_path=%s", usrrtn);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         snprintf (buf, 4095, "globals_path=%s", usrgbl);          snprintf (buf, sizeof (buf) - 1, "globals_path=%s", usrgbl);
         fm_write (fp, buf);          fm_write (fp, buf);
                   
         fclose (fp);          fclose (fp);
Line 1841  void fm_configure (void) Line 1844  void fm_configure (void)
         /* existing configuration */          /* existing configuration */
         fprintf (stderr, "\nUpdating environment configuration for %s:\n", fma_environment);          fprintf (stderr, "\nUpdating environment configuration for %s:\n", fma_environment);
   
         snprintf (buf, 4095, "%s/freem/%s/SYSTEM", LOCALSTATEDIR, fma_environment);          snprintf (buf, sizeof (buf) - 1, "%s/freem/%s/SYSTEM", LOCALSTATEDIR, fma_environment);
         update_conf (config_file, "SYSTEM", "root", buf);          update_conf (config_file, "SYSTEM", "root", buf);
         update_conf (config_file, "SYSTEM", "routines_path", sysrtn);                 update_conf (config_file, "SYSTEM", "routines_path", sysrtn);       
         update_conf (config_file, "SYSTEM", "globals_path", sysgbl);          update_conf (config_file, "SYSTEM", "globals_path", sysgbl);
Line 1850  void fm_configure (void) Line 1853  void fm_configure (void)
         update_conf (config_file, "SYSTEM", "journal_host_id", tmpsd);          update_conf (config_file, "SYSTEM", "journal_host_id", tmpsd);
         update_conf (config_file, "SYSTEM", "journal_cut_threshold", jnlcut);          update_conf (config_file, "SYSTEM", "journal_cut_threshold", jnlcut);
   
         snprintf (buf, 4095, "%%x");          snprintf (buf, sizeof (buf) - 1, "%%x");
         update_conf (config_file, "SYSTEM", "zdate_format", buf);          update_conf (config_file, "SYSTEM", "zdate_format", buf);
                   
         snprintf (buf, 4095, "%%X");          snprintf (buf, sizeof (buf) - 1, "%%X");
         update_conf (config_file, "SYSTEM", "ztime_format", buf);          update_conf (config_file, "SYSTEM", "ztime_format", buf);
   
         /* USER */                  /* USER */        
         snprintf (buf, 4095, "%s/freem/%s/USER", LOCALSTATEDIR, fma_environment);          snprintf (buf, sizeof (buf) - 1, "%s/freem/%s/USER", LOCALSTATEDIR, fma_environment);
         update_conf (config_file, "USER", "root", buf);                  update_conf (config_file, "USER", "root", buf);        
         update_conf (config_file, "USER", "routines_path", usrrtn);          update_conf (config_file, "USER", "routines_path", usrrtn);
         update_conf (config_file, "USER", "globals_path", usrgbl);          update_conf (config_file, "USER", "globals_path", usrgbl);

Removed from v.1.34  
changed lines
  Added in v.1.35


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>