|
|
| version 1.1.1.1, 2025/01/19 02:04:04 | version 1.5, 2025/04/10 01:24:38 |
|---|---|
| Line 1 | Line 1 |
| /* | /* |
| * * | * $Id$ |
| * * * | |
| * * * | |
| * *************** | |
| * * * * * | |
| * * MUMPS * | |
| * * * * * | |
| * *************** | |
| * * * | |
| * * * | |
| * * | |
| * | |
| * mlib.h | |
| * Function prototypes, structs, and macros for FreeM | * Function prototypes, structs, and macros for FreeM |
| * binding library | * binding library |
| * | * |
| * | * |
| * 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 36 | Line 24 |
| * 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/04/10 01:24:38 snw | |
| * Remove C++ style comments | |
| * | |
| * Revision 1.4 2025/03/24 04:13:11 snw | |
| * Replace action macro dat with fra_dat to avoid symbol conflict on OS/2 | |
| * | |
| * Revision 1.3 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 <stdlib.h> | #include <stdlib.h> |
| Line 95 void mref2str(freem_ref_t *ref, char *ke | Line 96 void mref2str(freem_ref_t *ref, char *ke |
| strcat (key, ref->name); | strcat (key, ref->name); |
| } | } |
| // ends with EOL | /* ends with EOL */ |
| strncat (key, "\201", 2); | strncat (key, "\201", 2); |
| } | } |
| Line 144 short freem_get(freem_ref_t *ref) | Line 145 short freem_get(freem_ref_t *ref) |
| freem_return_io (); | freem_return_io (); |
| // set up the EOL-delimited string | /* set up the EOL-delimited string */ |
| mref2str (ref, key); | mref2str (ref, key); |
| switch (ref->reftype) { | switch (ref->reftype) { |
| case MREF_RT_LOCAL: | case MREF_RT_LOCAL: |
| // call into the symbol table to get the local var | /* call into the symbol table to get the local var */ |
| symtab (get_sym, key, result); | symtab (get_sym, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_GLOBAL: | case MREF_RT_GLOBAL: |
| // call into the FreeM global handler; result in &result | /* call into the FreeM global handler; result in &result */ |
| global (get_sym, key, result); | global (get_sym, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_SSVN: | case MREF_RT_SSVN: |
| // call into the SSVN code | /* call into the SSVN code */ |
| ssvn (get_sym, key, result); | ssvn (get_sym, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| Line 171 short freem_get(freem_ref_t *ref) | Line 172 short freem_get(freem_ref_t *ref) |
| stcnv_m2c (result); | stcnv_m2c (result); |
| strncpy (ref->value, result, 255); | strncpy (ref->value, result, sizeof (ref->value)); |
| freem_release_io (); | freem_release_io (); |
| Line 192 short freem_set(freem_ref_t *ref) | Line 193 short freem_set(freem_ref_t *ref) |
| switch (ref->reftype) { | switch (ref->reftype) { |
| case MREF_RT_LOCAL: | case MREF_RT_LOCAL: |
| // call into the symbol table to set the local var | /* call into the symbol table to set the local var */ |
| symtab (set_sym, key, data); | symtab (set_sym, key, data); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_GLOBAL: | case MREF_RT_GLOBAL: |
| // call into the FreeM global handler; data in &data | /* call into the FreeM global handler; data in &data */ |
| global (set_sym, key, data); | global (set_sym, key, data); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_SSVN: | case MREF_RT_SSVN: |
| // call into the SSVN code | /* call into the SSVN code */ |
| ssvn (set_sym, key, data); | ssvn (set_sym, key, data); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| Line 229 short freem_kill(freem_ref_t *ref) | Line 230 short freem_kill(freem_ref_t *ref) |
| switch (ref->reftype) { | switch (ref->reftype) { |
| case MREF_RT_LOCAL: | case MREF_RT_LOCAL: |
| // call into the symbol table to kill the local var | /* call into the symbol table to kill the local var */ |
| symtab (kill_sym, key, result); | symtab (kill_sym, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_GLOBAL: | case MREF_RT_GLOBAL: |
| // call into the FreeM global handler; result in &result | /* call into the FreeM global handler; result in &result */ |
| global (kill_sym, key, result); | global (kill_sym, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_SSVN: | case MREF_RT_SSVN: |
| // call into the SSVN code | /* call into the SSVN code */ |
| ssvn (kill_sym, key, result); | ssvn (kill_sym, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| Line 250 short freem_kill(freem_ref_t *ref) | Line 251 short freem_kill(freem_ref_t *ref) |
| stcnv_m2c (result); | stcnv_m2c (result); |
| strncpy (ref->value, result, 255); | strncpy (ref->value, result, sizeof (ref->value) - 1); |
| freem_release_io (); | freem_release_io (); |
| Line 270 short freem_data(freem_ref_t *ref) | Line 271 short freem_data(freem_ref_t *ref) |
| switch (ref->reftype) { | switch (ref->reftype) { |
| case MREF_RT_LOCAL: | case MREF_RT_LOCAL: |
| // call into the symbol table | /* call into the symbol table */ |
| symtab (dat, key, result); | symtab (fra_dat, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_GLOBAL: | case MREF_RT_GLOBAL: |
| // call into the FreeM global handler; result in &result | /* call into the FreeM global handler; result in &result */ |
| global (dat, key, result); | global (fra_dat, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_SSVN: | case MREF_RT_SSVN: |
| // call into the SSVN code | /* call into the SSVN code */ |
| ssvn (dat, key, result); | ssvn (fra_dat, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| Line 310 short freem_order(freem_ref_t *ref) | Line 311 short freem_order(freem_ref_t *ref) |
| switch (ref->reftype) { | switch (ref->reftype) { |
| case MREF_RT_LOCAL: | case MREF_RT_LOCAL: |
| // call into the symbol table for $ORDER | /* call into the symbol table for $ORDER */ |
| symtab (fra_order, key, result); | symtab (fra_order, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_GLOBAL: | case MREF_RT_GLOBAL: |
| // call into the FreeM global handler; result in &result | /* call into the FreeM global handler; result in &result */ |
| global (fra_order, key, result); | global (fra_order, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_SSVN: | case MREF_RT_SSVN: |
| // call into the SSVN code | /* call into the SSVN code */ |
| ssvn (fra_order, key, result); | ssvn (fra_order, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| Line 349 short freem_query(freem_ref_t *ref) | Line 350 short freem_query(freem_ref_t *ref) |
| switch (ref->reftype) { | switch (ref->reftype) { |
| case MREF_RT_LOCAL: | case MREF_RT_LOCAL: |
| // call into the symbol table | /* call into the symbol table */ |
| symtab (fra_query, key, result); | symtab (fra_query, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_GLOBAL: | case MREF_RT_GLOBAL: |
| // call into the FreeM global handler; result in &result | /* call into the FreeM global handler; result in &result */ |
| global (fra_query, key, result); | global (fra_query, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |
| case MREF_RT_SSVN: | case MREF_RT_SSVN: |
| // call into the SSVN code | /* call into the SSVN code */ |
| ssvn (fra_query, key, result); | ssvn (fra_query, key, result); |
| ref->status = merr (); | ref->status = merr (); |
| break; | break; |