--- freem/src/ssvn_system.c 2025/01/19 02:04:04 1.1.1.1 +++ freem/src/ssvn_system.c 2026/04/07 18:33:22 1.8 @@ -1,23 +1,11 @@ /* - * * - * * * - * * * - * *************** - * * * * * - * * MUMPS * - * * * * * - * *************** - * * * - * * * - * * - * - * ssvn_system.c - * ^$SYSTEM ssv + * $Id: ssvn_system.c,v 1.8 2026/04/07 18:33:22 snw Exp $ + * ^$SYSTEM ssvn * * - * Author: Serena Willis + * Author: Serena Willis * Copyright (C) 1998 MUG Deutschland - * Copyright (C) 2020 Coherent Logic Development LLC + * Copyright (C) 2020, 2025 Coherent Logic Development LLC * * * This file is part of FreeM. @@ -35,6 +23,25 @@ * You should have received a copy of the GNU Affero Public License * 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 + * + * Revision 1.4 2025/03/09 19:50:47 snw + * Second phase of REUSE compliance and header reformat + * + * + * SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC + * SPDX-License-Identifier: AGPL-3.0-or-later **/ #include @@ -56,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); @@ -98,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"); @@ -109,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"); } @@ -117,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 (); @@ -240,7 +248,7 @@ void ssvn_system(short action, char *key break; } - sprintf (data, errmes[errnum]); + sprintf (data, "%s", errmes[errnum]); merr_clear (); break; @@ -258,78 +266,78 @@ void ssvn_system(short action, char *key break; } else if (strcmp (r->subscripts[0], "DEFUDFSVSIZ") == 0) { - sprintf (data, "%ld\201", DEFUDFSVSIZ); + sprintf (data, "%ld\201", (long) DEFUDFSVSIZ); merr_clear (); break; } else if (strcmp (r->subscripts[0], "DEFNSIZE") == 0) { - sprintf (data, "%ld\201", DEFNSIZE); + sprintf (data, "%ld\201", (long) DEFNSIZE); merr_clear (); break; } else if (strcmp (r->subscripts[0], "MAXNO_OF_RBUF") == 0) { - sprintf (data, "%ld\201", MAXNO_OF_RBUF); + sprintf (data, "%d\201", MAXNO_OF_RBUF); merr_clear (); break; } else if (strcmp (r->subscripts[0], "DEFNO_OF_RBUF") == 0) { - sprintf (data, "%ld\201", DEFNO_OF_RBUF); + sprintf (data, "%ld\201", (long) DEFNO_OF_RBUF); merr_clear (); break; } else if (strcmp (r->subscripts[0], "DEFPSIZE0") == 0) { - sprintf (data, "%ld\201", DEFPSIZE0); + sprintf (data, "%d\201", DEFPSIZE0); merr_clear (); break; } else if (strcmp (r->subscripts[0], "NO_GLOBLS") == 0) { - sprintf (data, "%ld\201", NO_GLOBLS); + sprintf (data, "%d\201", NO_GLOBLS); merr_clear (); break; } else if (strcmp (r->subscripts[0], "NO_OF_GBUF") == 0) { - sprintf (data, "%ld\201", NO_OF_GBUF); + sprintf (data, "%d\201", NO_OF_GBUF); merr_clear (); break; } else if (strcmp (r->subscripts[0], "NESTLEVLS") == 0) { - sprintf (data, "%ld\201", NESTLEVLS); + sprintf (data, "%d\201", NESTLEVLS); merr_clear (); break; } else if (strcmp (r->subscripts[0], "PARDEPTH") == 0) { - sprintf (data, "%ld\201", PARDEPTH); + sprintf (data, "%d\201", PARDEPTH); merr_clear (); break; } else if (strcmp (r->subscripts[0], "PATDEPTH") == 0) { - sprintf (data, "%ld\201", PATDEPTH); + sprintf (data, "%d\201", PATDEPTH); merr_clear (); break; } else if (strcmp (r->subscripts[0], "TRLIM") == 0) { - sprintf (data, "%ld\201", TRLIM); + sprintf (data, "%d\201", TRLIM); merr_clear (); break; } else if (strcmp (r->subscripts[0], "ARGS_IN_ESC") == 0) { - sprintf (data, "%ld\201", ARGS_IN_ESC); + sprintf (data, "%d\201", ARGS_IN_ESC); merr_clear (); break; } else if (strcmp (r->subscripts[0], "ZTLEN") == 0) { - sprintf (data, "%ld\201", ZTLEN); + sprintf (data, "%d\201", ZTLEN); merr_clear (); break; } else if (strcmp (r->subscripts[0], "FUNLEN") == 0) { - sprintf (data, "%ld\201", FUNLEN); + sprintf (data, "%d\201", FUNLEN); merr_clear (); break; } else if (strcmp (r->subscripts[0], "STRING_MAX") == 0) { - sprintf (data, "%ld\201", STRLEN); + sprintf (data, "%d\201", STRLEN); merr_clear (); break; @@ -374,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; } @@ -437,7 +454,7 @@ void ssvn_system(short action, char *key merr_clear (); goto done; - case dat: + case fra_dat: symtab_shm (action, key, data); merr_clear (); goto done;