|
|
| version 1.1, 2025/01/19 02:04:04 | version 1.8, 2025/04/13 04:22:43 |
|---|---|
| Line 1 | Line 1 |
| /* | /* |
| * * | * $Id$ |
| * * * | * ^$GLOBAL ssvn |
| * * * | |
| * *************** | |
| * * * * * | |
| * * MUMPS * | |
| * * * * * | |
| * *************** | |
| * * * | |
| * * * | |
| * * | |
| * | |
| * ssvn_global.c | |
| * ^$GLOBAL 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 2025/04/13 04:22:43 snw | |
| * Fix snprintf calls | |
| * | |
| * Revision 1.7 2025/04/10 17:21:54 snw | |
| * Remove traces of BDB global handler | |
| * | |
| * Revision 1.6 2025/04/09 19:52:02 snw | |
| * Eliminate as many warnings as possible while building with -Wall | |
| * | |
| * Revision 1.5 2025/03/22 18:43:54 snw | |
| * Make STRLEN 255 chars and add BIGSTR macro for larger buffers | |
| * | |
| * 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 <stdio.h> | #include <stdio.h> |
| Line 126 void frm_decode_block(db_blockinfo *b, c | Line 133 void frm_decode_block(db_blockinfo *b, c |
| void ssvn_global(short action, char *key, char *data) | void ssvn_global(short action, char *key, char *data) |
| { | { |
| char gb_ns[STRLEN]; | char gb_ns[STRLEN]; |
| char gb_path[STRLEN]; | char gb_path[PATHLEN]; |
| char gb_cpath[STRLEN]; | char gb_cpath[PATHLEN]; |
| char ns_key[256]; | char ns_key[STRLEN]; |
| char ns_data[256]; | |
| long blkcount; | long blkcount; |
| Line 155 void ssvn_global(short action, char *key | Line 161 void ssvn_global(short action, char *key |
| goto done; | goto done; |
| } | } |
| snprintf (ns_key, 255, "^$SYSTEM\202MAPPINGS\202GLOBAL\202^%s\201", mref_get_subscript (r, 0)); | snprintf (ns_key, STRLEN - 1, "^$SYSTEM\202MAPPINGS\202GLOBAL\202^%s\201", mref_get_subscript (r, 0)); |
| global (set_sym, ns_key, data); | symtab_shm (set_sym, ns_key, data); |
| goto done; | goto done; |
| Line 167 void ssvn_global(short action, char *key | Line 173 void ssvn_global(short action, char *key |
| goto done; | goto done; |
| } | } |
| snprintf (ns_key, 255, "^$SYSTEM\202MAPPINGS\202GLOBAL\202^%s\201", mref_get_subscript (r, 0)); | snprintf (ns_key, STRLEN - 1, "^$SYSTEM\202MAPPINGS\202GLOBAL\202^%s\201", mref_get_subscript (r, 0)); |
| global (kill_sym, ns_key, data); | symtab_shm (kill_sym, ns_key, data); |
| goto done; | goto done; |
| Line 230 void ssvn_global(short action, char *key | Line 236 void ssvn_global(short action, char *key |
| goto done; | goto done; |
| } | } |
| sprintf (data, "%d\201", bi->blockcount); | sprintf (data, "%ld\201", bi->blockcount); |
| merr_raise (OK); | merr_raise (OK); |
| goto done; | goto done; |
| } | } |
| Line 253 void ssvn_global(short action, char *key | Line 259 void ssvn_global(short action, char *key |
| } | } |
| sprintf (data, "%d\201", bi->rlptr); | sprintf (data, "%ld\201", bi->rlptr); |
| merr_raise (OK); | merr_raise (OK); |
| goto done; | goto done; |
| } | } |
| Line 264 void ssvn_global(short action, char *key | Line 270 void ssvn_global(short action, char *key |
| goto done; | goto done; |
| } | } |
| sprintf (data, "%d\201", bi->free_offset); | sprintf (data, "%ld\201", bi->free_offset); |
| merr_raise (OK); | merr_raise (OK); |
| goto done; | goto done; |
| } | } |
| Line 275 void ssvn_global(short action, char *key | Line 281 void ssvn_global(short action, char *key |
| goto done; | goto done; |
| } | } |
| sprintf (data, "%d\201", bi->llptr); | sprintf (data, "%ld\201", bi->llptr); |
| merr_raise (OK); | merr_raise (OK); |
| goto done; | goto done; |
| } | } |
| Line 346 void ssvn_global(short action, char *key | Line 352 void ssvn_global(short action, char *key |
| } | } |
| else if (strcmp (mref_get_subscript (r, 1), "BYTES") == 0) { | else if (strcmp (mref_get_subscript (r, 1), "BYTES") == 0) { |
| FILE *fp; | |
| long bytecount; | long bytecount; |
| stcpy (gb_cpath, gb_path); | stcpy (gb_cpath, gb_path); |
| Line 358 void ssvn_global(short action, char *key | Line 362 void ssvn_global(short action, char *key |
| sprintf (data, "%ld\201", bytecount); | sprintf (data, "%ld\201", bytecount); |
| merr_raise (OK); | merr_raise (OK); |
| goto done; | goto done; |
| } | } |
| merr_raise (M38); | merr_raise (M38); |
| Line 382 done: | Line 385 done: |
| short frm_global_exists(char *gbl_namespace, char *gbl_path, char *global_name) | short frm_global_exists(char *gbl_namespace, char *gbl_path, char *global_name) |
| { | { |
| char *gpth; | char *gpth; |
| char glofile[STRLEN]; | char glofile[PATHLEN]; |
| char goobuf[STRLEN]; | char goobuf[STRLEN]; |
| char mapk_buf[255]; | char mapk_buf[STRLEN]; |
| char mapd_buf[255]; | char mapd_buf[STRLEN]; |
| char old_ns[255]; | char old_ns[STRLEN]; |
| int ierr_sav = OK; | int ierr_sav = OK; |
| if (global_name[0] != '^') { | if (global_name[0] != '^') { |
| snprintf (mapk_buf, 254, "^$SYSTEM\202MAPPINGS\202GLOBAL\202^%s\201", global_name); | snprintf (mapk_buf, STRLEN - 1, "^$SYSTEM\202MAPPINGS\202GLOBAL\202^%s\201", global_name); |
| } | } |
| else { | else { |
| snprintf (mapk_buf, 254, "^$SYSTEM\202MAPPINGS\202GLOBAL\202%s\201", global_name); | snprintf (mapk_buf, STRLEN - 1, "^$SYSTEM\202MAPPINGS\202GLOBAL\202%s\201", global_name); |
| } | } |
| global (get_sym, mapk_buf, mapd_buf); | symtab_shm (get_sym, mapk_buf, mapd_buf); |
| stcnv_m2c (mapd_buf); | stcnv_m2c (mapd_buf); |
| Line 435 short frm_global_exists(char *gbl_namesp | Line 438 short frm_global_exists(char *gbl_namesp |
| stcnv_m2c (goobuf); | stcnv_m2c (goobuf); |
| if (global_name[0] != '^') { | if (global_name[0] != '^') { |
| snprintf (glofile, STRLEN - 1, "%s/^%s", goobuf, global_name); | snprintf (glofile, PATHLEN - 1, "%s/^%s", goobuf, global_name); |
| } | } |
| else { | else { |
| snprintf (glofile, STRLEN - 1, "%s/%s", goobuf, global_name); | snprintf (glofile, PATHLEN - 1, "%s/%s", goobuf, global_name); |
| } | } |
| strcpy (gbl_path, glofile); | strcpy (gbl_path, glofile); |