--- freem/src/ssvn_job.c 2025/04/10 17:21:54 1.7 +++ freem/src/ssvn_job.c 2025/04/28 19:38:55 1.10 @@ -1,5 +1,5 @@ /* - * $Id: ssvn_job.c,v 1.7 2025/04/10 17:21:54 snw Exp $ + * $Id: ssvn_job.c,v 1.10 2025/04/28 19:38:55 snw Exp $ * ^$JOB ssvn * * @@ -24,6 +24,15 @@ * 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 + * * Revision 1.7 2025/04/10 17:21:54 snw * Remove traces of BDB global handler * @@ -74,8 +83,8 @@ void ssvn_job_add_device(int channel, ch d_buf = (char *) malloc (STRLEN * sizeof (char)); NULLPTRCHK(k_buf,"ssvn_job_add_device"); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel); - snprintf (d_buf, 512 - 1, "%s\201", device); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel); + snprintf (d_buf, STRLEN - 1, "%s\201", device); symtab_shm (set_sym, k_buf, d_buf); @@ -96,8 +105,8 @@ void ssvn_job_remove_device(int channel) d_buf = (char *) malloc (STRLEN * sizeof (char)); NULLPTRCHK(k_buf,"ssvn_job_add_device"); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel); - snprintf (d_buf, 512 - 1, "\201"); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202OPEN\202%d\201", pid, channel); + snprintf (d_buf, STRLEN - 1, "\201"); symtab_shm (kill_sym, k_buf, d_buf); @@ -111,11 +120,11 @@ void ssvn_job_remove_device(int channel) void ssvn_job_update(void) { - char k_buf[512]; - char d_buf[512]; + char k_buf[STRLEN]; + char d_buf[STRLEN]; - char tk_buf[512]; - char td_buf[512]; + char tk_buf[STRLEN]; + char td_buf[STRLEN]; #ifndef AMIGA68K uid_t uid; @@ -138,216 +147,220 @@ void ssvn_job_update(void) ierr_sav = ierr; - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid); - snprintf (d_buf, 5, "%%\201"); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PIPE_GLVN\201", pid); + 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, 512 - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMANDS\201", pid); stcpy (d_buf, zcommds); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZFUNCTIONS\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZFUNCTIONS\201", pid); stcpy (d_buf, zfunctions); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZSVS\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZSVS\201", pid); stcpy (d_buf, zsvn); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202BREAK_HANDLER\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202BREAK_HANDLER\201", pid); stcpy (d_buf, brkaction); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_SIZE\201", pid); - snprintf (d_buf, 512 - 1, "%ld\201", PSIZE0 - 1); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_SIZE\201", pid); + snprintf (d_buf, STRLEN - 1, "%ld\201", PSIZE0 - 1); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_COUNT\201", pid); - snprintf (d_buf, 512 - 1, "%ld\201", NO_OF_RBUF); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_COUNT\201", pid); + snprintf (d_buf, STRLEN - 1, "%ld\201", NO_OF_RBUF); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE_BUFFER_AUTO_ADJUST\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", autorsize); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE_BUFFER_AUTO_ADJUST\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", autorsize); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SYMBOL_TABLE_SIZE\201", pid); - snprintf (d_buf, 512 - 1, "%ld\201", PSIZE); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SYMBOL_TABLE_SIZE\201", pid); + snprintf (d_buf, STRLEN - 1, "%ld\201", PSIZE); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SYMBOL_TABLE_AUTO_ADJUST\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", autopsize); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SYMBOL_TABLE_AUTO_ADJUST\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", autopsize); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_SIZE\201", pid); - snprintf (d_buf, 512 - 1, "%ld\201", UDFSVSIZ); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_SIZE\201", pid); + snprintf (d_buf, STRLEN - 1, "%ld\201", UDFSVSIZ); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_AUTO_ADJUST\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", autousize); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER_DEFINED_ISV_TABLE_AUTO_ADJUST\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", autousize); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_UNIQUE_CHARS\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", (glvnflag.one[0] == 0) ? 255 : glvnflag.one[0]); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_UNIQUE_CHARS\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", (glvnflag.one[0] == 0) ? 255 : glvnflag.one[0]); symtab_shm (set_sym, k_buf, d_buf); tf = UNSIGN (glvnflag.one[1]); toggle (tf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_CASE_SENSITIVE\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", tf); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_CASE_SENSITIVE\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", tf); symtab_shm (set_sym, k_buf, d_buf); tf = UNSIGN (glvnflag.one[2]); if (tf == 0) tf = 255; - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_NAME_SUB_LENGTH\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", tf); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_NAME_SUB_LENGTH\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", tf); symtab_shm (set_sym, k_buf, d_buf); tf = UNSIGN (glvnflag.one[3]); if (tf == 0) tf = 255; - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVN_SUB_LENGTH\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", tf); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GVN_SUB_LENGTH\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", tf); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SINGLE_USER\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", lonelyflag); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SINGLE_USER\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", lonelyflag); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LOWERCASE_EVERYWHERE\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", lowerflag); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LOWERCASE_EVERYWHERE\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", lowerflag); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZCOMMAND_ARGUMENT_NAME\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZCOMMAND_ARGUMENT_NAME\201", pid); stcpy (d_buf, zargdefname); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202TIMEZONE_OFFSET\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202TIMEZONE_OFFSET\201", pid); lintstr (d_buf, tzoffset); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202%s\201", pid, nsname); - snprintf (d_buf, 512 - 1, "%s\201", gbl_u_engine); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202%s\201", pid, nsname); + snprintf (d_buf, STRLEN - 1, "%s\201", gbl_u_engine); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202SYSTEM\201", pid); - snprintf (d_buf, 512 - 1, "%s\201", gbl_s_engine); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202GLOBAL\202SYSTEM\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", gbl_s_engine); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENGINES\202LOCAL\201", pid); - snprintf (d_buf, 512 - 1, "%s\201", loc_engine); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENGINES\202LOCAL\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", loc_engine); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202CHARACTER\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202CHARACTER\201", pid); symtab_shm (set_sym, k_buf, "M\201"); - snprintf (d_buf, 512 - 1, "%s\201", curdir); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202CWD\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", curdir); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202CWD\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GLOBAL\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GLOBAL\201", pid); symtab_shm (set_sym, k_buf, " \201"); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LOCK\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LOCK\201", pid); symtab_shm (set_sym, k_buf, " \201"); - snprintf (d_buf, 512 - 1, "%s\201", oucpath); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202IOPATH\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", oucpath); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202IOPATH\201", pid); symtab_shm (set_sym, k_buf, d_buf); #if !defined(MSDOS) - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PRIORITY\201", pid); - snprintf (d_buf, 512 - 1, "%d\201", getpriority (PRIO_PROCESS, pid)); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PRIORITY\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", getpriority (PRIO_PROCESS, pid)); symtab_shm (set_sym, k_buf, d_buf); #endif - snprintf (d_buf, 512 - 1, "%s\201", rou_name); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ROUTINE\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", rou_name); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ROUTINE\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "0:\"%s\"\201", dev[HOME]); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$PRINCIPAL\201", pid); + snprintf (d_buf, STRLEN - 1, "0:\"%s\"\201", dev[HOME]); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$PRINCIPAL\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", tp_level); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$TLEVEL\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", tp_level); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$TLEVEL\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "0:\"%s\"\201", dev[HOME]); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202$IO\201", pid); + snprintf (d_buf, STRLEN - 1, "0:\"%s\"\201", dev[HOME]); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202$IO\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 -1, "%s\201", gvndefault); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GVNDEFAULT\201", pid); + 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); - snprintf (d_buf, 512 -1, "%s\201", lvndefault); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202LVNDEFAULT\201", pid); + snprintf (d_buf, STRLEN -1, "%s\201", lvndefault); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202LVNDEFAULT\201", pid); symtab_shm (set_sym, k_buf, d_buf); ssvn_job_add_device (HOME, dev[HOME]); - snprintf (d_buf, 512 - 1, "%d\201", uid); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202USER\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", uid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202USER\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", gid); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202GROUP\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", gid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202GROUP\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%s\201", nsname); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202NAMESPACE\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", nsname); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202NAMESPACE\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", cur_symtab); - snprintf (k_buf, 512 - 1, "^$JOB\202\%d\202SYMTAB\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", cur_symtab); + snprintf (k_buf, STRLEN - 1, "^$JOB\202\%d\202SYMTAB\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", pid); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202PID\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202PID\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", frm_throw_all_errors); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202SET_ALL_ECODES\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", frm_throw_all_errors); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202SET_ALL_ECODES\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (tk_buf, 512 - 1, "^$SYSTEM\202ZDATE_FORMAT\201"); + snprintf (tk_buf, STRLEN - 1, "^$SYSTEM\202ZDATE_FORMAT\201"); ssvn (get_sym, tk_buf, td_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZDATE_FORMAT\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZDATE_FORMAT\201", pid); symtab_shm (set_sym, k_buf, td_buf); - snprintf (tk_buf, 512 - 1, "^$SYSTEM\202ZTIME_FORMAT\201"); + snprintf (tk_buf, STRLEN - 1, "^$SYSTEM\202ZTIME_FORMAT\201"); ssvn (get_sym, tk_buf, td_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ZTIME_FORMAT\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ZTIME_FORMAT\201", pid); symtab_shm (set_sym, k_buf, td_buf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202ENVIRONMENT\201", pid); - snprintf (d_buf, 512 - 1, "%s\201", shm_env); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202ENVIRONMENT\201", pid); + snprintf (d_buf, STRLEN - 1, "%s\201", shm_env); symtab_shm (set_sym, k_buf, d_buf); switch (fp_mode) { case 0: - snprintf (d_buf, 512 - 1, "FIXED\201"); + snprintf (d_buf, STRLEN - 1, "FIXED\201"); break; default: - snprintf (d_buf, 512 - 1, "IEEE754\201"); - snprintf (fp_conversion, 9, "%%.%df\201", DBL_DIG); + snprintf (d_buf, STRLEN - 1, "IEEE754\201"); + snprintf (fp_conversion, sizeof (fp_conversion) - 1, "%%.%df\201", DBL_DIG); zprecise = DBL_DIG; break; } - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202MATH\201", pid); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202MATH\201", pid); symtab_shm (set_sym, k_buf, d_buf); - snprintf (d_buf, 512 - 1, "%d\201", en_revstrf); - snprintf (k_buf, 512 - 1, "^$JOB\202%d\202REVSTR\201", pid); + snprintf (d_buf, STRLEN - 1, "%d\201", en_revstrf); + snprintf (k_buf, STRLEN - 1, "^$JOB\202%d\202REVSTR\201", pid); symtab_shm (set_sym, k_buf, d_buf); stcpy (d_buf, rou_name); @@ -432,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); @@ -493,7 +510,7 @@ void ssvn_job(short action, char *key, c int tf = tvexpr (data); lowerflag = tf; - snprintf (data, 512 - 1, "%d\n", tf); + snprintf (data, STRLEN - 1, "%d\n", tf); symtab_shm (action, key, data); @@ -550,7 +567,7 @@ void ssvn_job(short action, char *key, c else if (strcmp (mref_get_subscript (r, 1), "ROUTINE_BUFFER_AUTO_ADJUST") == 0) { autorsize = tvexpr (data); - snprintf (data, 512 - 1, "%d\201", tvexpr (data)); + snprintf (data, STRLEN - 1, "%d\201", tvexpr (data)); symtab_shm (action, key, data); @@ -576,7 +593,7 @@ void ssvn_job(short action, char *key, c else if (strcmp (mref_get_subscript (r, 1), "SYMBOL_TABLE_AUTO_ADJUST") == 0) { autopsize = tvexpr (data); - snprintf (data, 512 - 1, "%d\201", tvexpr (data)); + snprintf (data, STRLEN - 1, "%d\201", tvexpr (data)); symtab_shm (action, key, data); @@ -601,7 +618,7 @@ void ssvn_job(short action, char *key, c } else if (strcmp (mref_get_subscript (r, 1), "USER_DEFINED_ISV_TABLE_AUTO_ADJUST") == 0) { autousize = tvexpr (data); - snprintf (data, 512 - 1, "%d\201", tvexpr (data)); + snprintf (data, STRLEN - 1, "%d\201", tvexpr (data)); symtab_shm (action, key, data); @@ -618,7 +635,7 @@ void ssvn_job(short action, char *key, c glvnflag.one[0] = (char) t; - snprintf (data, 512 - 1, "%d\201", t); + snprintf (data, STRLEN - 1, "%d\201", t); symtab_shm (action, key, data); merr_clear (); @@ -639,7 +656,7 @@ void ssvn_job(short action, char *key, c glvnflag.one[1] = t; - snprintf (data, 512 - 1, "%d\201", t); + snprintf (data, STRLEN - 1, "%d\201", t); symtab_shm (action, key, data); merr_clear (); @@ -660,7 +677,7 @@ void ssvn_job(short action, char *key, c if (merr () != MXNUM) { glvnflag.one[2] = (char) t; - snprintf (data, 512 - 1, "%d\201", t); + snprintf (data, STRLEN - 1, "%d\201", t); symtab_shm (action, key, data); merr_clear (); @@ -680,7 +697,7 @@ void ssvn_job(short action, char *key, c if (merr () != MXNUM) { glvnflag.one[3] = (char) t; - snprintf (data, 512 - 1, "%d\201", t); + snprintf (data, STRLEN - 1, "%d\201", t); symtab_shm (action, key, data); merr_clear (); @@ -696,7 +713,7 @@ void ssvn_job(short action, char *key, c int tf = tvexpr (data); close_all_globals (); - snprintf (data, 512 - 1, "%d\201", tf); + snprintf (data, STRLEN - 1, "%d\201", tf); symtab_shm (action, key, data); merr_clear (); @@ -719,7 +736,7 @@ void ssvn_job(short action, char *key, c tzoffset = tzo; - snprintf (data, 512 - 1, "%ld\201", tzoffset); + snprintf (data, STRLEN - 1, "%ld\201", tzoffset); symtab_shm (action, key, data); goto done; @@ -901,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 (); @@ -931,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; @@ -940,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: