version 1.1, 2025/01/19 02:04:04
|
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 292 void global (short action, char *key, ch
|
Line 291 void global (short action, char *key, ch
|
} |
} |
|
|
|
|
if ((r->name[1] == '|')) { |
if (r->name[1] == '|') { |
|
|
/* this is an mdc-style extended reference */ |
/* this is an mdc-style extended reference */ |
|
|
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); |