--- freem/src/strings.c 2025/03/09 15:20:18 1.2 +++ freem/src/strings.c 2025/05/01 17:02:30 1.8 @@ -1,23 +1,11 @@ /* - * * - * * * - * * * - * *************** - * * * * * - * * MUMPS * - * * * * * - * *************** - * * * - * * * - * * - * - * strings.c + * $Id: strings.c,v 1.8 2025/05/01 17:02:30 snw Exp $ * freem string library * * * Author: Serena Willis * 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. @@ -35,6 +23,28 @@ * You should have received a copy of the GNU Affero Public License * along with FreeM. If not, see . * + * $Log: strings.c,v $ + * Revision 1.8 2025/05/01 17:02:30 snw + * Further debugging improvements + * + * Revision 1.7 2025/04/15 02:24:43 snw + * Improve FreeM logging capabilities + * + * Revision 1.6 2025/04/13 04:22:43 snw + * Fix snprintf calls + * + * Revision 1.5 2025/04/10 01:24:39 snw + * Remove C++ style comments + * + * Revision 1.4 2025/04/09 19:52:02 snw + * Eliminate as many warnings as possible while building with -Wall + * + * 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 "mpsdef.h" @@ -42,6 +52,7 @@ #include #include #include +#include /* length of 'source' string in bytes */ long int stlen (const char *source) @@ -62,7 +73,6 @@ long int stnlen (const char *source, siz return length; } - /* copy string from 'source' to 'dest' */ long int stcpy (char *dest, const char *source) { @@ -113,7 +123,6 @@ short int stcat (char *dest, const char while ((dest[i] = *source++) != EOL) { if (i++ >= STRLEN) { - //printf("i = %d\r\n", i); dest[--i] = EOL; return FALSE; } @@ -123,18 +132,6 @@ short int stcat (char *dest, const char return TRUE; } -long int stncat (char *dest, const char *source, size_t siz) -{ - long int srclen; - long int dstlen; - - srclen = stnlen (source, siz); - dstlen = stnlen (dest, siz); - - - return 0; -} - /* compare str1 and str2 */ short int stcmp (char *str1, char *str2) { @@ -187,6 +184,48 @@ char *trim (char *s) } +/* +int stnprintf(char *dst, int size, char *fmt, ...) +{ + va_list ptr; + va_start (ptr, fmt); + + char ch; + char typ; + + register int i; + register int k; + + k = 0; + + for (i = 0; fmt[i] != '\201'; i++) { + ch = fmt[i]; + + if ((k + 1) == size) { + dst[k + 1] = '\201'; + return k; + } + + if (ch == '%') { + typ = fmt[++i]; + + switch (typ) { + + case '%': + dst[k++] = '%'; + break; + + case 's': + + + } + } + else if (ch == '\') { + + } + } +} +*/ /* convert EOL-terminated string 'mstr' to NUL-terminated string in-place */ void stcnv_m2c(char *mstr) @@ -230,6 +269,7 @@ void stncnv_c2m(char *cstr, size_t siz) return; } + /* convert at most 'count' characters of *key into human-readable format in *buf */ size_t key_to_name(char *buf, const char *key, size_t count) { @@ -254,7 +294,7 @@ size_t key_to_name(char *buf, const char c = key[i]; next = key[i + 1]; - switch (key[i]) { + switch (c) { case EOL: @@ -424,7 +464,8 @@ size_t name_to_key(char *buf, const char } n_to_k_done: - + buf[j] = '\201'; + return j; } @@ -490,8 +531,8 @@ void uuid_v4 (char *buf) seg2[4] = '\0'; - snprintf (seg3, 5, "%04x", seg3num); - snprintf (seg4, 5, "%04x", seg4num); + snprintf (seg3, sizeof (seg3), "%04x", seg3num); + snprintf (seg4, sizeof (seg4), "%04x", seg4num); for (i = 0; i < 12; i++) { seg5[i] = chars[rand () % 16];