version 1.2, 2025/02/28 20:51:20
|
version 1.7, 2025/04/13 04:22:43
|
Line 1
|
Line 1
|
/* |
/* |
* * |
* $Id$ |
* * * |
|
* * * |
|
* *************** |
|
* * * * * |
|
* * MUMPS * |
|
* * * * * |
|
* *************** |
|
* * * |
|
* * * |
|
* * |
|
* |
|
* journal.c |
|
* Implementation of FreeM journaling |
* Implementation of FreeM journaling |
* |
* |
* |
* |
* 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.7 2025/04/13 04:22:43 snw |
|
* Fix snprintf calls |
|
* |
|
* Revision 1.6 2025/04/10 01:24:38 snw |
|
* Remove C++ style comments |
|
* |
|
* Revision 1.5 2025/04/03 20:48:14 snw |
|
* Improve daemon error diagnostics and bump to 0.63.0-rc3 |
|
* |
|
* 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 <stdio.h> |
#include <stdio.h> |
Line 93 short jnl_init(char *jnlfile, char *host
|
Line 97 short jnl_init(char *jnlfile, char *host
|
|
|
jnl_desc = open (jnl_file_path, O_CREAT | O_APPEND | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO); |
jnl_desc = open (jnl_file_path, O_CREAT | O_APPEND | O_RDWR, S_IRWXU | S_IRWXG | S_IRWXO); |
|
|
if (jnl_desc == -1) jnl_panic ("error creating new journal file"); |
snprintf (tmsg, sizeof (tmsg) - 1, "error creating new journal file '%s' [errno %d: '%s']", jnl_file_path, errno, strerror (errno)); |
|
if (jnl_desc == -1) jnl_panic (tmsg); |
|
|
jnl_lock (); |
jnl_lock (); |
|
|
memcpy (hdr.magic, m, 5); |
memcpy (hdr.magic, m, 5); |
hdr.fmt_version = FRM_JNL_VERSION; |
hdr.fmt_version = FRM_JNL_VERSION; |
snprintf (hdr.host_triplet, 40, "%s", HOST); |
snprintf (hdr.host_triplet, sizeof (hdr.host_triplet) - 1, "%s", HOST); |
|
|
if (write (jnl_desc, &hdr, sizeof (jnl_hdr_t)) == -1) { |
if (write (jnl_desc, &hdr, sizeof (jnl_hdr_t)) == -1) { |
snprintf (tmsg, 255, "error %d writing to journal file", errno); |
snprintf (tmsg, sizeof (tmsg) - 1, "error %d writing to journal file", errno); |
jnl_panic (tmsg); |
jnl_panic (tmsg); |
} |
} |
|
|
Line 143 short jnl_init(char *jnlfile, char *host
|
Line 148 short jnl_init(char *jnlfile, char *host
|
|
|
} |
} |
|
|
//strncpy (jnl_host_id, hdr.) |
|
|
|
jnl_unlock (); |
jnl_unlock (); |
|
|
close (jnl_desc); |
close (jnl_desc); |
Line 226 short jnl_ent_write(short action, char *
|
Line 229 short jnl_ent_write(short action, char *
|
switch (errno) { |
switch (errno) { |
|
|
case ENOSPC: |
case ENOSPC: |
snprintf (msg, 255, "ran out of disk space while attempting journal write"); |
snprintf (msg, sizeof (msg) - 1, "ran out of disk space while attempting journal write"); |
break; |
break; |
|
|
default: |
default: |
snprintf (msg, 255, "%s", strerror (errno)); |
snprintf (msg, sizeof (msg) - 1, "%s", strerror (errno)); |
break; |
break; |
|
|
} |
} |