|
|
| version 1.2, 2025/02/28 20:51:20 | version 1.8, 2025/04/09 19:52:02 |
|---|---|
| Line 1 | Line 1 |
| /* | /* |
| * * | * $Id$ |
| * * * | |
| * * * | |
| * *************** | |
| * * * * * | |
| * * MUMPS * | |
| * * * * * | |
| * *************** | |
| * * * | |
| * * * | |
| * * | |
| * | |
| * global_dispatch.c | |
| * global handler dispatch module | * global handler dispatch module |
| * | * |
| * | * |
| * 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/09 19:52:02 snw | |
| * Eliminate as many warnings as possible while building with -Wall | |
| * | |
| * Revision 1.7 2025/04/09 15:16:50 snw | |
| * Fix buffer overruns in mref_to_external and ssvn.c | |
| * | |
| * Revision 1.6 2025/03/29 16:50:42 snw | |
| * Back to cvs-current as version for development; temp fix for double-free issue in global_dispatch | |
| * | |
| * 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:14:25 snw | |
| * First phase of REUSE compliance and header reformat | |
| * | |
| * | |
| * SPDX-FileCopyrightText: (C) 2025 Coherent Logic Development LLC | |
| * SPDX-License-Identifier: AGPL-3.0-or-later | |
| **/ | **/ |
| #include <stdlib.h> | #include <stdlib.h> |
| Line 58 void (*gbl_s)(short, char *, char *); | Line 65 void (*gbl_s)(short, char *, char *); |
| void global_set_engine(char ns, char *engine) | void global_set_engine(char ns, char *engine) |
| { | { |
| if (strcmp (engine, "BUILTIN") != 0) { | |
| if ((strcmp (engine, "BUILTIN") != 0) && (strcmp (engine, "BERKELEYDB") != 0)) { | |
| if (strcmp (engine, "NICKELBACK") == 0) { | |
| char *j; | |
| printf ("\r\nERROR: please go burn your CD collection in fire. Here, have a segfault...\r\n"); | |
| j[2] = '\201'; | |
| } | |
| printf ("\r\nERROR: '%s' is not a valid global storage engine\r\n", engine); | printf ("\r\nERROR: '%s' is not a valid global storage engine\r\n", engine); |
| merr_raise (M38); | merr_raise (M38); |
| Line 197 void global (short action, char *key, ch | Line 196 void global (short action, char *key, ch |
| name[i] = '\0'; | name[i] = '\0'; |
| snprintf (mapk_buf, STRLEN - 1, "^$SYSTEM\202MAPPINGS\202GLOBAL\202%s\201", name); | snprintf (mapk_buf, STRLEN - 1, "^$SYSTEM\202MAPPINGS\202GLOBAL\202%s\201", 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 429 void global (short action, char *key, ch | Line 428 void global (short action, char *key, ch |
| case get_sym: | case get_sym: |
| sprintf (an, "GET"); | sprintf (an, "GET"); |
| break; | break; |
| case dat: | case fra_dat: |
| sprintf (an, "DATA"); | sprintf (an, "DATA"); |
| break; | break; |
| case fra_order: | case fra_order: |
| Line 471 void global (short action, char *key, ch | Line 470 void global (short action, char *key, ch |
| evt_enqueue (ev_id, EVT_CLS_TRIGGER, 0); | evt_enqueue (ev_id, EVT_CLS_TRIGGER, 0); |
| free (k_buf); | free (k_buf); |
| free (d_buf); | /* free (d_buf); */ |
| } | } |
| free (old_value); | free (old_value); |