X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=libcitadel%2Flib%2Ftools.c;h=b50cd66b5842f1fbad54db57f424dfa1e70b13dd;hb=61ee61844618c781da76b236c6a119528c23e867;hp=ff35f9ecae04b9e7408cf9322bb17848fca7216d;hpb=79adce4c855c03160e37e6b65553369ca9c04e10;p=citadel.git diff --git a/libcitadel/lib/tools.c b/libcitadel/lib/tools.c index ff35f9eca..b50cd66b5 100644 --- a/libcitadel/lib/tools.c +++ b/libcitadel/lib/tools.c @@ -2,7 +2,7 @@ * A basic toolset containing miscellaneous functions for string manipluation, * encoding/decoding, and a bunch of other stuff. * - * Copyright (c) 1987-2011 by the citadel.org team + * Copyright (c) 1987-2017 by the citadel.org team * * This program is open source software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -65,7 +65,8 @@ int safestrncpy(char *dest, const char *src, size_t n) { int i = 0; - if (dest == NULL || src == NULL) { + if (dest == NULL || src == NULL) + { fprintf(stderr, "safestrncpy: NULL argument\n"); abort(); } @@ -80,7 +81,6 @@ int safestrncpy(char *dest, const char *src, size_t n) } - /* * num_tokens() - discover number of parameters/tokens in a string */ @@ -89,12 +89,15 @@ int num_tokens(const char *source, char tok) int count = 1; const char *ptr = source; - if (source == NULL) { + if (source == NULL) + { return (0); } - while (*ptr != '\0') { - if (*ptr++ == tok) { + while (*ptr != '\0') + { + if (*ptr++ == tok) + { ++count; } } @@ -102,8 +105,6 @@ int num_tokens(const char *source, char tok) return (count); } -//extern void cit_backtrace(void); - /* * extract_token() - a string tokenizer @@ -117,88 +118,45 @@ long extract_token(char *dest, const char *source, int parmnum, char separator, s = source; - if (dest == NULL) { + if (dest == NULL) + { return(-1); } - //cit_backtrace(); - //lprintf (CTDL_DEBUG, "test >: n: %d sep: %c source: %s \n willi \n", parmnum, separator, source); dest[0] = 0; - if (s == NULL) { + if (s == NULL) + { return(-1); } maxlen--; - while (*s) { - if (*s == separator) { + while (*s) + { + if (*s == separator) + { ++current_token; } - if ( (current_token == parmnum) && - (*s != separator) && - (len < maxlen) ) { + if ( (current_token == parmnum) && (*s != separator) && (len < maxlen) ) + { dest[len] = *s; ++len; } - else if ((current_token > parmnum) || (len >= maxlen)) { + else if ((current_token > parmnum) || (len >= maxlen)) + { break; } ++s; } dest[len] = '\0'; - if (current_token < parmnum) { - //lprintf (CTDL_DEBUG,"test : n: %d sep: %c source: %s \n willi \n", parmnum, separator, source); - strcpy(dest, ""); - - // Locate desired parameter - s = source; - while (count < parmnum) { - // End of string, bail! - if (!*s) { - s = NULL; - break; - } - if (*s == separator) { - count++; - } - s++; - } - if (!s) { - //lprintf (CTDL_DEBUG,"test = 2) { + if (num_tokens(setstr, ':') >= 2) + { extract_token(histr, setstr, 1, ':', sizeof histr); - if (!strcmp(histr, "*")) { + if (!strcmp(histr, "*")) + { snprintf(histr, sizeof histr, "%ld", LONG_MAX); } } - else { + else + { strcpy(histr, lostr); } lo = atol(lostr); @@ -522,18 +455,18 @@ int is_msg_in_sequence_set(const char *mset, long msgnum) { return(0); } -/** - * \brief Utility function to "readline" from memory - * \param start Location in memory from which we are reading. - * \param buf the buffer to place the string in. - * \param maxlen Size of string buffer - * \return Pointer to the source memory right after we stopped reading. +/* + * Utility function to "readline" from memory + * start Location in memory from which we are reading. + * buf the buffer to place the string in. + * maxlen Size of string buffer + * returns pointer to the source memory right after we stopped reading. */ char *memreadline(char *start, char *buf, int maxlen) { char ch; char *ptr; - int len = 0; /**< tally our own length to avoid strlen() delays */ + int len = 0; /* tally our own length to avoid strlen() delays */ ptr = start; @@ -550,28 +483,31 @@ char *memreadline(char *start, char *buf, int maxlen) } -/** - * \brief Utility function to "readline" from memory - * \param start Location in memory from which we are reading. - * \param buf the buffer to place the string in. - * \param maxlen Size of string buffer - * \param retlen the length of the returned string - * \return Pointer to the source memory right after we stopped reading. +/* + * Utility function to "readline" from memory + * start Location in memory from which we are reading. + * buf the buffer to place the string in. + * maxlen Size of string buffer + * retlen the length of the returned string + * returns a pointer to the source memory right after we stopped reading. */ char *memreadlinelen(char *start, char *buf, int maxlen, int *retlen) { char ch; char *ptr; - int len = 0; /**< tally our own length to avoid strlen() delays */ + int len = 0; /* tally our own length to avoid strlen() delays */ ptr = start; - while (1) { + while (1) + { ch = *ptr++; - if ((len + 1 < (maxlen)) && (ch != 13) && (ch != 10)) { + if ((len + 1 < (maxlen)) && (ch != 13) && (ch != 10)) + { buf[len++] = ch; } - if ((ch == 10) || (ch == 0)) { + if ((ch == 10) || (ch == 0)) + { buf[len] = 0; *retlen = len; return ptr;