Created SILC Crypto Toolkit git repository.
[crypto.git] / lib / silcutil / silcstrutil.c
diff --git a/lib/silcutil/silcstrutil.c b/lib/silcutil/silcstrutil.c
deleted file mode 100644 (file)
index 3251c2b..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
-
-  silcstrutil.c
-
-  Author: Pekka Riikonen <priikone@silcnet.org>
-
-  Copyright (C) 2002 - 2007 Pekka Riikonen
-
-  This program is free software; you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation; version 2 of the License.
-
-  This program is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-*/
-/* $Id$ */
-
-#include "silc.h"
-#include "silcstrutil.h"
-
-/* Concatenates the `src' into `dest'.  If `src_len' is more than the
-   size of the `dest' (minus NULL at the end) the `src' will be
-   truncated to fit. */
-
-char *silc_strncat(char *dest, SilcUInt32 dest_size,
-                  const char *src, SilcUInt32 src_len)
-{
-  int len;
-
-  dest[dest_size - 1] = '\0';
-
-  len = dest_size - 1 - strlen(dest);
-  if (len < src_len) {
-    if (len > 0)
-      strncat(dest, src, len);
-  } else {
-    strncat(dest, src, src_len);
-  }
-
-  return dest;
-}
-
-/* Compares two strings. Strings may include wildcards '*' and '?'.
-   Returns TRUE if strings match. */
-
-int silc_string_compare(char *string1, char *string2)
-{
-  int i;
-  int slen1;
-  int slen2;
-  char *tmpstr1, *tmpstr2;
-
-  if (!string1 || !string2)
-    return FALSE;
-
-  slen1 = strlen(string1);
-  slen2 = strlen(string2);
-
-  /* See if they are same already */
-  if (!strncmp(string1, string2, slen2) && slen2 == slen1)
-    return TRUE;
-
-  if (slen2 < slen1)
-    if (!strchr(string1, '*'))
-      return FALSE;
-
-  /* Take copies of the original strings as we will change them */
-  tmpstr1 = silc_calloc(slen1 + 1, sizeof(char));
-  memcpy(tmpstr1, string1, slen1);
-  tmpstr2 = silc_calloc(slen2 + 1, sizeof(char));
-  memcpy(tmpstr2, string2, slen2);
-
-  for (i = 0; i < slen1; i++) {
-
-    /* * wildcard. Only one * wildcard is possible. */
-    if (tmpstr1[i] == '*')
-      if (!strncmp(tmpstr1, tmpstr2, i)) {
-       memset(tmpstr2, 0, slen2);
-       strncpy(tmpstr2, tmpstr1, i);
-       break;
-      }
-
-    /* ? wildcard */
-    if (tmpstr1[i] == '?') {
-      if (!strncmp(tmpstr1, tmpstr2, i)) {
-       if (!(slen1 < i + 1))
-         if (tmpstr1[i + 1] != '?' &&
-             tmpstr1[i + 1] != tmpstr2[i + 1])
-           continue;
-
-       if (!(slen1 < slen2))
-         tmpstr2[i] = '?';
-      }
-    }
-  }
-
-  /* if using *, remove it */
-  if (strchr(tmpstr1, '*'))
-    *strchr(tmpstr1, '*') = 0;
-
-  if (!strcmp(tmpstr1, tmpstr2)) {
-    memset(tmpstr1, 0, slen1);
-    memset(tmpstr2, 0, slen2);
-    silc_free(tmpstr1);
-    silc_free(tmpstr2);
-    return TRUE;
-  }
-
-  memset(tmpstr1, 0, slen1);
-  memset(tmpstr2, 0, slen2);
-  silc_free(tmpstr1);
-  silc_free(tmpstr2);
-  return FALSE;
-}
-
-/* Splits a string containing separator `ch' and returns an array of the
-   splitted strings. */
-
-char **silc_string_split(const char *string, char ch, int *ret_count)
-{
-  char **splitted = NULL, sep[2], *item, *cp;
-  int i = 0, len;
-
-  if (!string || !ret_count) {
-    silc_set_errno(SILC_ERR_INVALID_ARGUMENT);
-    return NULL;
-  }
-
-  splitted = silc_calloc(1, sizeof(*splitted));
-  if (!splitted)
-    return NULL;
-
-  if (!strchr(string, ch)) {
-    splitted[0] = silc_memdup(string, strlen(string));
-    *ret_count = 1;
-    return splitted;
-  }
-
-  sep[0] = ch;
-  sep[1] = '\0';
-  cp = (char *)string;
-  while (cp) {
-    len = strcspn(cp, sep);
-    if (!len)
-      break;
-
-    item = silc_memdup(cp, len);
-    if (!item) {
-      silc_free(splitted);
-      return NULL;
-    }
-
-    cp += len;
-    if (strlen(cp) == 0)
-      cp = NULL;
-    else
-      cp++;
-
-    splitted[i++] = item;
-
-    if (cp) {
-      splitted = silc_realloc(splitted, (i + 1) * sizeof(*splitted));
-      if (!splitted)
-       return NULL;
-    }
-  }
-  *ret_count = i;
-
-  return splitted;
-}
-
-/* Inspects the `string' for wildcards and returns regex string that can
-   be used by the GNU regex library. A comma (`,') in the `string' means
-   that the string is list. */
-
-char *silc_string_regexify(const char *string)
-{
-  int i, len, count;
-  char *regex;
-
-  if (!string) {
-    silc_set_errno(SILC_ERR_INVALID_ARGUMENT);
-    return NULL;
-  }
-
-  len = strlen(string);
-  count = 4;
-  for (i = 0; i < len; i++) {
-    if (string[i] == '*' || string[i] == '?')
-      count++;                 /* Will add '.' */
-    if (string[i] == ',')
-      count += 2;              /* Will add '|' and '^' */
-  }
-
-  regex = silc_calloc(len + count + 1, sizeof(*regex));
-  if (!regex)
-    return NULL;
-
-  count = 0;
-  regex[count++] = '(';
-  regex[count++] = '^';
-
-  for (i = 0; i < len; i++) {
-    if (string[i] == '*' || string[i] == '?') {
-      regex[count] = '.';
-      count++;
-    } else if (string[i] == ',') {
-      if (i + 2 == len)
-       continue;
-      regex[count++] = '|';
-      regex[count++] = '^';
-      continue;
-    }
-
-    regex[count++] = string[i];
-  }
-
-  regex[count++] = ')';
-  regex[count] = '$';
-
-  return regex;
-}
-
-/* Combines two regex strings into one regex string so that they can be
-   used as one by the GNU regex library. The `string2' is combine into
-   the `string1'. */
-
-char *silc_string_regex_combine(const char *string1, const char *string2)
-{
-  char *tmp;
-  int len1, len2;
-
-  if (!string1 || !string2) {
-    silc_set_errno(SILC_ERR_INVALID_ARGUMENT);
-    return NULL;
-  }
-
-  len1 = strlen(string1);
-  len2 = strlen(string2);
-
-  tmp = silc_calloc(2 + len1 + len2, sizeof(*tmp));
-  strncat(tmp, string1, len1 - 2);
-  strncat(tmp, "|", 1);
-  strncat(tmp, string2 + 1, len2 - 1);
-
-  return tmp;
-}
-
-/* Do regex match to the two strings `string1' and `string2'. If the
-   `string2' matches the `string1' this returns TRUE. */
-
-int silc_string_match(const char *string1, const char *string2)
-{
-  char *s1;
-  int ret = FALSE;
-
-  if (!string1 || !string2) {
-    silc_set_errno(SILC_ERR_INVALID_ARGUMENT);
-    return ret;
-  }
-
-  s1 = silc_string_regexify(string1);
-  ret = silc_string_regex_match(s1, string2);
-  silc_free(s1);
-
-  return ret;
-}