--- freem/src/global_dispatch.c 2025/01/19 02:04:04 1.1.1.1 +++ freem/src/global_dispatch.c 2025/04/09 19:52:02 1.8 @@ -1,23 +1,11 @@ /* - * * - * * * - * * * - * *************** - * * * * * - * * MUMPS * - * * * * * - * *************** - * * * - * * * - * * - * - * global_dispatch.c + * $Id: global_dispatch.c,v 1.8 2025/04/09 19:52:02 snw Exp $ * global handler dispatch module * * - * 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: global_dispatch.c,v $ + * 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 @@ -58,17 +65,9 @@ void (*gbl_s)(short, char *, char *); void global_set_engine(char ns, char *engine) { - - - 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"); + + if (strcmp (engine, "BUILTIN") != 0) { - j[2] = '\201'; - } - printf ("\r\nERROR: '%s' is not a valid global storage engine\r\n", engine); merr_raise (M38); @@ -197,7 +196,7 @@ void global (short action, char *key, ch name[i] = '\0'; 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); @@ -292,7 +291,7 @@ void global (short action, char *key, ch } - if ((r->name[1] == '|')) { + if (r->name[1] == '|') { /* this is an mdc-style extended reference */ @@ -429,7 +428,7 @@ void global (short action, char *key, ch case get_sym: sprintf (an, "GET"); break; - case dat: + case fra_dat: sprintf (an, "DATA"); break; case fra_order: @@ -471,7 +470,7 @@ void global (short action, char *key, ch evt_enqueue (ev_id, EVT_CLS_TRIGGER, 0); free (k_buf); - free (d_buf); + /* free (d_buf); */ } free (old_value);