--- freem/src/ssvn_system.c 2025/03/24 04:13:11 1.5 +++ freem/src/ssvn_system.c 2026/04/07 18:33:22 1.8 @@ -1,5 +1,5 @@ /* - * $Id: ssvn_system.c,v 1.5 2025/03/24 04:13:11 snw Exp $ + * $Id: ssvn_system.c,v 1.8 2026/04/07 18:33:22 snw Exp $ * ^$SYSTEM ssvn * * @@ -24,6 +24,15 @@ * along with FreeM. If not, see . * * $Log: ssvn_system.c,v $ + * Revision 1.8 2026/04/07 18:33:22 snw + * Add WORD_SIZE node to SYSTEM SSVN + * + * Revision 1.7 2025/04/13 04:22:43 snw + * Fix snprintf calls + * + * Revision 1.6 2025/04/06 03:38:05 snw + * Prepare for adding packaging functionality to fmd + * * Revision 1.5 2025/03/24 04:13:11 snw * Replace action macro dat with fra_dat to avoid symbol conflict on OS/2 * @@ -54,7 +63,7 @@ void ssvn_system_set(char *sub) d_buf[0] = '\201'; d_buf[1] = '\201'; - snprintf (k_buf, 254, "^$SYSTEM\202%s\201", sub); + snprintf (k_buf, sizeof (k_buf) - 1, "^$SYSTEM\202%s\201", sub); symtab_shm (set_sym, k_buf, d_buf); @@ -96,6 +105,7 @@ void ssvn_system_update(void) ssvn_system_set ("EOK"); ssvn_system_set ("OFFOK"); ssvn_system_set ("BIG_ENDIAN"); + ssvn_system_set ("WORD_SIZE"); ssvn_system_set ("ZDATE_FORMAT"); ssvn_system_set ("ZTIME_FORMAT"); @@ -107,7 +117,7 @@ void ssvn_system_update(void) strcpy (line_ns, line + 1); line_ns[strlen (line_ns) - 2] = '\0'; - snprintf (k_buf, 254, "^$SYSTEM\202NAMESPACE\202%s\201", line_ns); + snprintf (k_buf, sizeof (k_buf) - 1, "^$SYSTEM\202NAMESPACE\202%s\201", line_ns); symtab_shm (set_sym, k_buf, "\201"); } @@ -115,16 +125,16 @@ void ssvn_system_update(void) fclose (fp); - snprintf (k_buf, 254, "^$SYSTEM\202CHANNELS\202TERMINAL\201"); - snprintf (d_buf, 254, "0,0\201"); + snprintf (k_buf, sizeof (k_buf) - 1, "^$SYSTEM\202CHANNELS\202TERMINAL\201"); + snprintf (d_buf, sizeof (d_buf) - 1, "0,0\201"); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 254, "^$SYSTEM\202CHANNELS\202FILE\201"); - snprintf (d_buf, 254, "1,%d\201", FIRSTSCK - 1); + snprintf (k_buf, sizeof (k_buf) - 1, "^$SYSTEM\202CHANNELS\202FILE\201"); + snprintf (d_buf, sizeof (d_buf) - 1, "1,%d\201", FIRSTSCK - 1); symtab_shm (set_sym, k_buf, d_buf); - snprintf (k_buf, 254, "^$SYSTEM\202CHANNELS\202SOCKET\201"); - snprintf (d_buf, 254, "%d,%d\201", FIRSTSCK, MAXDEV - 1); + snprintf (k_buf, sizeof (k_buf) - 1, "^$SYSTEM\202CHANNELS\202SOCKET\201"); + snprintf (d_buf, sizeof (d_buf) - 1, "%d,%d\201", FIRSTSCK, MAXDEV - 1); symtab_shm (set_sym, k_buf, d_buf); ssvn_job_update (); @@ -372,10 +382,19 @@ void ssvn_system(short action, char *key goto done; #endif } + else if (strcmp (r->subscripts[0], "WORD_SIZE") == 0) { + size_t siz; + + siz = sizeof (void *) * 8; + + sprintf (data, "%d\201", siz); + + merr_clear (); + break; + } else if (strcmp (r->subscripts[0], "ZDATE_FORMAT") == 0) { get_conf ("SYSTEM", "zdate_format", data); - stcnv_c2m (data); - + stcnv_c2m (data); break; }