|
|
| version 1.1.1.1, 2025/01/19 02:04:04 | version 1.8, 2026/04/07 18:33:22 |
|---|---|
| Line 1 | Line 1 |
| /* | /* |
| * * | * $Id$ |
| * * * | * ^$SYSTEM ssvn |
| * * * | |
| * *************** | |
| * * * * * | |
| * * MUMPS * | |
| * * * * * | |
| * *************** | |
| * * * | |
| * * * | |
| * * | |
| * | |
| * ssvn_system.c | |
| * ^$SYSTEM ssv | |
| * | * |
| * | * |
| * Author: Serena Willis <jpw@coherent-logic.com> | * Author: Serena Willis <snw@coherent-logic.com> |
| * Copyright (C) 1998 MUG Deutschland | * 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. | * This file is part of FreeM. |
| Line 35 | Line 23 |
| * You should have received a copy of the GNU Affero Public License | * You should have received a copy of the GNU Affero Public License |
| * along with FreeM. If not, see <https://www.gnu.org/licenses/>. | * along with FreeM. If not, see <https://www.gnu.org/licenses/>. |
| * | * |
| * $Log$ | |
| * 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 <inttypes.h> | #include <inttypes.h> |
| Line 56 void ssvn_system_set(char *sub) | Line 63 void ssvn_system_set(char *sub) |
| d_buf[0] = '\201'; | d_buf[0] = '\201'; |
| d_buf[1] = '\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); | symtab_shm (set_sym, k_buf, d_buf); |
| Line 98 void ssvn_system_update(void) | Line 105 void ssvn_system_update(void) |
| ssvn_system_set ("EOK"); | ssvn_system_set ("EOK"); |
| ssvn_system_set ("OFFOK"); | ssvn_system_set ("OFFOK"); |
| ssvn_system_set ("BIG_ENDIAN"); | ssvn_system_set ("BIG_ENDIAN"); |
| ssvn_system_set ("WORD_SIZE"); | |
| ssvn_system_set ("ZDATE_FORMAT"); | ssvn_system_set ("ZDATE_FORMAT"); |
| ssvn_system_set ("ZTIME_FORMAT"); | ssvn_system_set ("ZTIME_FORMAT"); |
| Line 109 void ssvn_system_update(void) | Line 117 void ssvn_system_update(void) |
| strcpy (line_ns, line + 1); | strcpy (line_ns, line + 1); |
| line_ns[strlen (line_ns) - 2] = '\0'; | 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"); | symtab_shm (set_sym, k_buf, "\201"); |
| } | } |
| Line 117 void ssvn_system_update(void) | Line 125 void ssvn_system_update(void) |
| fclose (fp); | fclose (fp); |
| snprintf (k_buf, 254, "^$SYSTEM\202CHANNELS\202TERMINAL\201"); | snprintf (k_buf, sizeof (k_buf) - 1, "^$SYSTEM\202CHANNELS\202TERMINAL\201"); |
| snprintf (d_buf, 254, "0,0\201"); | snprintf (d_buf, sizeof (d_buf) - 1, "0,0\201"); |
| symtab_shm (set_sym, k_buf, d_buf); | symtab_shm (set_sym, k_buf, d_buf); |
| snprintf (k_buf, 254, "^$SYSTEM\202CHANNELS\202FILE\201"); | snprintf (k_buf, sizeof (k_buf) - 1, "^$SYSTEM\202CHANNELS\202FILE\201"); |
| snprintf (d_buf, 254, "1,%d\201", FIRSTSCK - 1); | snprintf (d_buf, sizeof (d_buf) - 1, "1,%d\201", FIRSTSCK - 1); |
| symtab_shm (set_sym, k_buf, d_buf); | symtab_shm (set_sym, k_buf, d_buf); |
| snprintf (k_buf, 254, "^$SYSTEM\202CHANNELS\202SOCKET\201"); | snprintf (k_buf, sizeof (k_buf) - 1, "^$SYSTEM\202CHANNELS\202SOCKET\201"); |
| snprintf (d_buf, 254, "%d,%d\201", FIRSTSCK, MAXDEV - 1); | snprintf (d_buf, sizeof (d_buf) - 1, "%d,%d\201", FIRSTSCK, MAXDEV - 1); |
| symtab_shm (set_sym, k_buf, d_buf); | symtab_shm (set_sym, k_buf, d_buf); |
| ssvn_job_update (); | ssvn_job_update (); |
| Line 240 void ssvn_system(short action, char *key | Line 248 void ssvn_system(short action, char *key |
| break; | break; |
| } | } |
| sprintf (data, errmes[errnum]); | sprintf (data, "%s", errmes[errnum]); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| Line 258 void ssvn_system(short action, char *key | Line 266 void ssvn_system(short action, char *key |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "DEFUDFSVSIZ") == 0) { | else if (strcmp (r->subscripts[0], "DEFUDFSVSIZ") == 0) { |
| sprintf (data, "%ld\201", DEFUDFSVSIZ); | sprintf (data, "%ld\201", (long) DEFUDFSVSIZ); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "DEFNSIZE") == 0) { | else if (strcmp (r->subscripts[0], "DEFNSIZE") == 0) { |
| sprintf (data, "%ld\201", DEFNSIZE); | sprintf (data, "%ld\201", (long) DEFNSIZE); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "MAXNO_OF_RBUF") == 0) { | 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 (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "DEFNO_OF_RBUF") == 0) { | 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 (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "DEFPSIZE0") == 0) { | else if (strcmp (r->subscripts[0], "DEFPSIZE0") == 0) { |
| sprintf (data, "%ld\201", DEFPSIZE0); | sprintf (data, "%d\201", DEFPSIZE0); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "NO_GLOBLS") == 0) { | else if (strcmp (r->subscripts[0], "NO_GLOBLS") == 0) { |
| sprintf (data, "%ld\201", NO_GLOBLS); | sprintf (data, "%d\201", NO_GLOBLS); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "NO_OF_GBUF") == 0) { | 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 (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "NESTLEVLS") == 0) { | else if (strcmp (r->subscripts[0], "NESTLEVLS") == 0) { |
| sprintf (data, "%ld\201", NESTLEVLS); | sprintf (data, "%d\201", NESTLEVLS); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "PARDEPTH") == 0) { | else if (strcmp (r->subscripts[0], "PARDEPTH") == 0) { |
| sprintf (data, "%ld\201", PARDEPTH); | sprintf (data, "%d\201", PARDEPTH); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "PATDEPTH") == 0) { | else if (strcmp (r->subscripts[0], "PATDEPTH") == 0) { |
| sprintf (data, "%ld\201", PATDEPTH); | sprintf (data, "%d\201", PATDEPTH); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "TRLIM") == 0) { | else if (strcmp (r->subscripts[0], "TRLIM") == 0) { |
| sprintf (data, "%ld\201", TRLIM); | sprintf (data, "%d\201", TRLIM); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "ARGS_IN_ESC") == 0) { | 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 (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "ZTLEN") == 0) { | else if (strcmp (r->subscripts[0], "ZTLEN") == 0) { |
| sprintf (data, "%ld\201", ZTLEN); | sprintf (data, "%d\201", ZTLEN); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "FUNLEN") == 0) { | else if (strcmp (r->subscripts[0], "FUNLEN") == 0) { |
| sprintf (data, "%ld\201", FUNLEN); | sprintf (data, "%d\201", FUNLEN); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| } | } |
| else if (strcmp (r->subscripts[0], "STRING_MAX") == 0) { | else if (strcmp (r->subscripts[0], "STRING_MAX") == 0) { |
| sprintf (data, "%ld\201", STRLEN); | sprintf (data, "%d\201", STRLEN); |
| merr_clear (); | merr_clear (); |
| break; | break; |
| Line 374 void ssvn_system(short action, char *key | Line 382 void ssvn_system(short action, char *key |
| goto done; | goto done; |
| #endif | #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) { | else if (strcmp (r->subscripts[0], "ZDATE_FORMAT") == 0) { |
| get_conf ("SYSTEM", "zdate_format", data); | get_conf ("SYSTEM", "zdate_format", data); |
| stcnv_c2m (data); | stcnv_c2m (data); |
| break; | break; |
| } | } |
| Line 437 void ssvn_system(short action, char *key | Line 454 void ssvn_system(short action, char *key |
| merr_clear (); | merr_clear (); |
| goto done; | goto done; |
| case dat: | case fra_dat: |
| symtab_shm (action, key, data); | symtab_shm (action, key, data); |
| merr_clear (); | merr_clear (); |
| goto done; | goto done; |