Diff for /freem/src/ssvn_job.c between versions 1.8 and 1.11

version 1.8, 2025/04/11 23:27:04 version 1.11, 2025/06/23 20:53:30
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.11  2025/06/23 20:53:30  snw
    *   Documentation updates
    *
    *   Revision 1.10  2025/04/28 19:38:55  snw
    *   Add trace mode
    *
    *   Revision 1.9  2025/04/13 04:22:43  snw
    *   Fix snprintf calls
    *
  *   Revision 1.8  2025/04/11 23:27:04  snw   *   Revision 1.8  2025/04/11 23:27:04  snw
  *   Fix overflow bugs in ssvn_job.c   *   Fix overflow bugs in ssvn_job.c
  *   *
Line 63 Line 72
 #include "freem.h"  #include "freem.h"
 #include "mref.h"  #include "mref.h"
 #include "jobtab.h"  #include "jobtab.h"
   #include "shmmgr.h"
   
 short cur_symtab = 0;  short cur_symtab = 0;
   
Line 142  void ssvn_job_update(void) Line 152  void ssvn_job_update(void)
     ierr_sav = ierr;      ierr_sav = ierr;
           
     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid);
     snprintf (d_buf, 5, "%%\201");      snprintf (d_buf, STRLEN - 1, "%%\201");
       symtab_shm (set_sym, k_buf, d_buf);
   
       snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202TRACE\201", pid);
       snprintf (d_buf, STRLEN - 1, "%d\201", trace_mode);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
           
     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid);
Line 279  void ssvn_job_update(void) Line 293  void ssvn_job_update(void)
     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$IO\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$IO\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
     snprintf (d_buf, STRLEN -1, "%s\201", gvndefault);      snprintf (d_buf, STRLEN - 1, "%s\201", gvndefault);
     snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVNDEFAULT\201", pid);      snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVNDEFAULT\201", pid);
     symtab_shm (set_sym, k_buf, d_buf);      symtab_shm (set_sym, k_buf, d_buf);
   
Line 339  void ssvn_job_update(void) Line 353  void ssvn_job_update(void)
         default:          default:
   
             snprintf (d_buf, STRLEN - 1, "IEEE754\201");              snprintf (d_buf, STRLEN - 1, "IEEE754\201");
             snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG);              snprintf (fp_conversion, sizeof (fp_conversion) - 1, "%%.%df\201", DBL_DIG);
             zprecise = DBL_DIG;              zprecise = DBL_DIG;
                           
             break;              break;
Line 385  void ssvn_job(short action, char *key, c Line 399  void ssvn_job(short action, char *key, c
     mref_init (r, MREF_RT_SSVN, "^$JOB");      mref_init (r, MREF_RT_SSVN, "^$JOB");
     internal_to_mref (r, kbuf);      internal_to_mref (r, kbuf);
   
     t_pid = atol (mref_get_subscript (r, 0));      if (r->subscript_count > 0) {
           t_pid = atol (mref_get_subscript (r, 0));
       }
       else {
           t_pid = shm_config->hdr->first_process;
       }
   
     slot = job_get (t_pid);      slot = job_get (t_pid);
           
Line 435  void ssvn_job(short action, char *key, c Line 454  void ssvn_job(short action, char *key, c
                     goto done;                      goto done;
   
                 }                  }
                   else if (strcmp (mref_get_subscript (r, 1), "TRACE") == 0) {
                       trace_mode = tvexpr (data);
                       goto done;
                   }
                 else if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {                  else if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
                     stcpy (l_o_val, data);                      stcpy (l_o_val, data);
   
Line 904  void ssvn_job(short action, char *key, c Line 927  void ssvn_job(short action, char *key, c
                         fp_mode = 1;                          fp_mode = 1;
                         symtab_shm (set_sym, kbuf, data);                          symtab_shm (set_sym, kbuf, data);
   
                         snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG);                          snprintf (fp_conversion, sizeof (fp_conversion) - 1, "%%.%df\201", DBL_DIG);
                         zprecise = DBL_DIG;                          zprecise = DBL_DIG;
   
                         merr_clear ();                          merr_clear ();
Line 934  void ssvn_job(short action, char *key, c Line 957  void ssvn_job(short action, char *key, c
                 goto done;                  goto done;
             }              }
   
         case get_sym:          case get_sym:            
             if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {              if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) {
                 stcpy (data, l_o_val);                  stcpy (data, l_o_val);
                 goto done;                  goto done;
Line 943  void ssvn_job(short action, char *key, c Line 966  void ssvn_job(short action, char *key, c
                 stcpy (data, g_o_val);                  stcpy (data, g_o_val);
                 goto done;                  goto done;
             }              }
               else if (strcmp (mref_get_subscript (r, 1), "TRACE") == 0) {
                   snprintf (data, STRLEN - 1, "%d\201", trace_mode);
                   goto done;
               }
         case fra_dat:          case fra_dat:
         case fra_order:          case fra_order:
         case fra_query:          case fra_query:

Removed from v.1.8  
changed lines
  Added in v.1.11


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