--- freem/src/ssvn_job.c 2025/04/11 23:27:04 1.8 +++ freem/src/ssvn_job.c 2025/04/28 19:38:55 1.10 @@ -1,5 +1,5 @@ /* - * $Id: ssvn_job.c,v 1.8 2025/04/11 23:27:04 snw Exp $ + * $Id: ssvn_job.c,v 1.10 2025/04/28 19:38:55 snw Exp $ * ^$JOB ssvn * * @@ -24,6 +24,12 @@ * along with FreeM. If not, see . * * $Log: ssvn_job.c,v $ + * 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 * Fix overflow bugs in ssvn_job.c * @@ -142,7 +148,11 @@ void ssvn_job_update(void) ierr_sav = ierr; 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); snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid); @@ -279,7 +289,7 @@ void ssvn_job_update(void) snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$IO\201", pid); 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); symtab_shm (set_sym, k_buf, d_buf); @@ -339,7 +349,7 @@ void ssvn_job_update(void) default: 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; break; @@ -435,6 +445,10 @@ void ssvn_job(short action, char *key, c 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) { stcpy (l_o_val, data); @@ -904,7 +918,7 @@ void ssvn_job(short action, char *key, c fp_mode = 1; 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; merr_clear (); @@ -934,7 +948,7 @@ void ssvn_job(short action, char *key, c goto done; } - case get_sym: + case get_sym: if (strcmp (mref_get_subscript (r, 1), "LVNQOVAL") == 0) { stcpy (data, l_o_val); goto done; @@ -943,6 +957,10 @@ void ssvn_job(short action, char *key, c stcpy (data, g_o_val); 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_order: case fra_query: