|
|
| version 1.1, 2025/01/19 02:04:04 | version 1.6, 2025/04/13 04:22:43 |
|---|---|
| Line 1 | Line 1 |
| /* | /* |
| * * | * $Id$ |
| * * * | |
| * * * | |
| * *************** | |
| * * * * * | |
| * * MUMPS * | |
| * * * * * | |
| * *************** | |
| * * * | |
| * * * | |
| * * | |
| * | |
| * namespace.c | |
| * Namespace support | * Namespace support |
| * | * |
| * | * |
| * 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.6 2025/04/13 04:22:43 snw | |
| * Fix snprintf calls | |
| * | |
| * Revision 1.5 2025/04/09 19:52:02 snw | |
| * Eliminate as many warnings as possible while building with -Wall | |
| * | |
| * Revision 1.4 2025/04/02 03:02:42 snw | |
| * Stop requiring users to pass -e to fmadm when -u or -g are passed | |
| * | |
| * 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 <stddef.h> | #include <stddef.h> |
| Line 64 | Line 68 |
| #endif | #endif |
| #define LOCK 'l' | #define LOCK 'l' |
| #define ZDEALLOCATE 'D' | |
| void ns_error(char *ns, char *e) | void ns_error(char *ns, char *e) |
| { | { |
| char msg_buf[256]; | char msg_buf[256]; |
| snprintf(msg_buf, 256, "error switching to namespace '%s': %s (possibly a configuration error?)\r\n\201", ns, e); | snprintf(msg_buf, sizeof (msg_buf) - 1, "error switching to namespace '%s': %s (possibly a configuration error?)\r\n\201", ns, e); |
| write_m(msg_buf); | write_m(msg_buf); |
| return; | return; |
| Line 98 void set_namespace(char *ns, int verbose | Line 101 void set_namespace(char *ns, int verbose |
| get_conf (ns, "root", nsroot); | get_conf (ns, "root", nsroot); |
| if(!file_exists (config_file)) { | if(!file_exists (config_file)) { |
| snprintf (tmps, 256, "configuration file '%s' does not exist.\n", config_file); | snprintf (tmps, sizeof (tmps) - 1, "configuration file '%s' does not exist.\n", config_file); |
| ns_error (ns, tmps); | ns_error (ns, tmps); |
| cleanup (); | cleanup (); |
| Line 110 void set_namespace(char *ns, int verbose | Line 113 void set_namespace(char *ns, int verbose |
| /* turn off all the old so-called "journal" implementation */ | /* turn off all the old so-called "journal" implementation */ |
| ug_buf[HOME][0] = EOL; | ug_buf[HOME][0] = EOL; |
| jour_flag = 0; | jour_flag = 0; |
| jourfile[0] = NUL; | |
| /* the real journal file */ | /* the real journal file */ |
| jour_file[0] = NUL; | jour_file[0] = NUL; |
| Line 156 void set_namespace(char *ns, int verbose | Line 158 void set_namespace(char *ns, int verbose |
| } | } |
| else { | else { |
| snprintf (tmps, 256, "invalid journal_mode '%s'", ns_buf); | snprintf (tmps, sizeof (tmps) - 1, "invalid journal_mode '%s'", ns_buf); |
| ns_error ("SYSTEM", tmps); | ns_error ("SYSTEM", tmps); |
| goto jour_end; | goto jour_end; |
| Line 247 jour_end: | Line 249 jour_end: |
| /* set up local engine */ | /* set up local engine */ |
| for(i = 0; i < 256; i++) ns_buf[i] = NUL; | for(i = 0; i < 256; i++) ns_buf[i] = NUL; |
| if(get_conf(ns, "local_engine", ns_buf) == TRUE) { | if(get_conf (ns, "local_engine", ns_buf) == TRUE) { |
| sprintf(loc_engine, "%s", ns_buf); | snprintf (loc_engine, sizeof (loc_engine), "%s", ns_buf); |
| } | } |
| else { | else { |
| sprintf(loc_engine, "BUILTIN"); | sprintf (loc_engine, "BUILTIN"); |
| } | } |
| Line 325 jour_end: | Line 327 jour_end: |
| strcpy (nsname, ns); | strcpy (nsname, ns); |
| if (verbose == TRUE) { | if (verbose == TRUE) { |
| snprintf (notif, 256, "Namespace set to '%s'\r\n\201", ns); | snprintf (notif, sizeof (notif) - 1, "Namespace set to '%s'\r\n\201", ns); |
| write_m (notif); | write_m (notif); |
| } | } |