5 Author: Pekka Riikonen <priikone@silcnet.org>
7 Copyright (C) 2002 Pekka Riikonen
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; version 2 of the License.
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
23 /* Inspects the `string' for wildcards and returns regex string that can
24 be used by the GNU regex library. A comma (`,') in the `string' means
25 that the string is list. */
27 char *silc_string_regexify(const char *string)
34 for (i = 0; i < len; i++)
35 if (string[i] == '*' || string[i] == '?')
38 regex = silc_calloc(len + count, sizeof(*regex));
44 for (i = 0; i < len; i++) {
45 if (string[i] == '*' || string[i] == '?') {
48 } else if (string[i] == ',') {
56 regex[count] = string[i];
66 /* Combines two regex strings into one regex string so that they can be
67 used as one by the GNU regex library. The `string2' is combine into
70 char *silc_string_regex_combine(const char *string1, const char *string2)
75 len1 = strlen(string1);
76 len2 = strlen(string2);
78 tmp = silc_calloc(2 + len1 + len2, sizeof(*tmp));
79 strncat(tmp, string1, len1 - 2);
81 strncat(tmp, string2 + 1, len2 - 1);
86 /* Matches the two strings and returns TRUE if the strings match. */
88 int silc_string_regex_match(const char *regex, const char *string)
93 if (regcomp(&preg, regex, REG_NOSUB | REG_EXTENDED) < 0)
96 if (regexec(&preg, string, 0, NULL, 0) == 0)
104 /* Do regex match to the two strings `string1' and `string2'. If the
105 `string2' matches the `string1' this returns TRUE. */
107 int silc_string_match(const char *string1, const char *string2)
112 if (!string1 || !string2)
115 s1 = silc_string_regexify(string1);
116 ret = silc_string_regex_match(s1, string2);
122 /* Return current time to struct timeval. */
124 int silc_gettimeofday(struct timeval *p)
126 return gettimeofday(p, NULL);