|
|
| version 1.1.1.1, 2025/01/19 02:04:04 | version 1.5, 2025/03/22 18:43:54 |
|---|---|
| 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.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 124 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]; | char ns_data[STRLEN]; |
| long blkcount; | long blkcount; |
| Line 167 void ssvn_global(short action, char *key | Line 165 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, "^$SYSTEM\202MAPPINGS\202GLOBAL\202^%s\201", mref_get_subscript (r, 0)); |
| global (kill_sym, ns_key, data); | global (kill_sym, ns_key, data); |
| goto done; | goto done; |
| Line 230 void ssvn_global(short action, char *key | Line 228 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 251 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 262 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 273 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 382 done: | Line 380 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, "^$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, "^$SYSTEM\202MAPPINGS\202GLOBAL\202%s\201", global_name); |
| } | } |
| global (get_sym, mapk_buf, mapd_buf); | global (get_sym, mapk_buf, mapd_buf); |
| Line 435 short frm_global_exists(char *gbl_namesp | Line 433 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, "%s/^%s", goobuf, global_name); |
| } | } |
| else { | else { |
| snprintf (glofile, STRLEN - 1, "%s/%s", goobuf, global_name); | snprintf (glofile, PATHLEN, "%s/%s", goobuf, global_name); |
| } | } |
| strcpy (gbl_path, glofile); | strcpy (gbl_path, glofile); |