version 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; |