--- freem/src/cmd_write.c 2025/01/19 02:04:04 1.1.1.1 +++ freem/src/cmd_write.c 2025/04/09 19:52:02 1.6 @@ -1,21 +1,9 @@ /* - * * - * * * - * * * - * *************** - * * * * * - * * MUMPS * - * * * * * - * *************** - * * * - * * * - * * - * - * cmd_write.c + * $Id: cmd_write.c,v 1.6 2025/04/09 19:52:02 snw Exp $ * Implementation of the WRITE command * * - * Author: Serena Willis + * Author: Serena Willis * Copyright (C) 1998 MUG Deutschland * Copyright (C) 2023 Coherent Logic Development LLC * @@ -35,6 +23,22 @@ * You should have received a copy of the GNU Affero Public License * along with FreeM. If not, see . * + * $Log: cmd_write.c,v $ + * Revision 1.6 2025/04/09 19:52:02 snw + * Eliminate as many warnings as possible while building with -Wall + * + * Revision 1.5 2025/03/24 04:05:36 snw + * Replace crlf with frm_crlf to avoid symbol conflict with readline on OS/2 + * + * Revision 1.4 2025/03/22 18:43:54 snw + * Make STRLEN 255 chars and add BIGSTR macro for larger buffers + * + * Revision 1.3 2025/03/09 19:14:24 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 @@ -49,7 +53,7 @@ MRESULT cmd_write(MACTION *ra, int *i) { char vn[255]; char *wr_terminator = (char *) malloc (STRLEN * sizeof (char)); - char *sw_buf = (char *) malloc (STRLEN * sizeof (char)); + char *sw_buf = (char *) malloc (BIGSTR * sizeof (char)); NULLPTRCHK(wr_terminator,"cmd_write"); NULLPTRCHK(sw_buf,"cmd_write"); @@ -57,11 +61,14 @@ MRESULT cmd_write(MACTION *ra, int *i) if (io > FIRSTSCK) msck_get_terminator (io, wr_terminator); if (io != HOME && devopen[io] == 'r' && io < FIRSTSCK) { + free (wr_terminator); free (sw_buf); return NOWRITE; } if ((*i = (*codptr)) == SP || *i == EOL) { + free (wr_terminator); + free (sw_buf); return ARGLIST; } @@ -74,7 +81,7 @@ writeproc: if (io < FIRSTSCK) { - if (crlf[io]) { + if (frm_crlf[io]) { write_m ("\012\201"); } else {