X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilcutil%2Funix%2Fsilcunixutil.c;h=15356c52b92b474f40b0f5e01c27a709920ad948;hb=40f8443d8d3a6577336ee66d18e04d9ac4d956bb;hp=cab2086ad838fa197b81a71bd86275c966c8171b;hpb=e3654ab77286898065796f3aba10ab9d22446190;p=silc.git diff --git a/lib/silcutil/unix/silcunixutil.c b/lib/silcutil/unix/silcunixutil.c index cab2086a..15356c52 100644 --- a/lib/silcutil/unix/silcunixutil.c +++ b/lib/silcutil/unix/silcunixutil.c @@ -4,12 +4,11 @@ Author: Pekka Riikonen - Copyright (C) 1997 - 2001 Pekka Riikonen + Copyright (C) 1997 - 2005 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; either version 2 of the License, or - (at your option) any later version. + 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 @@ -23,7 +22,7 @@ */ /* $Id$ */ -#include "silcincludes.h" +#include "silc.h" /* XXX lib/contrib/regex.c might cmopile on WIN32 as well */ @@ -38,30 +37,32 @@ char *silc_string_regexify(const char *string) len = strlen(string); count = 4; - for (i = 0; i < len; i++) + for (i = 0; i < len; i++) { if (string[i] == '*' || string[i] == '?') - count++; + count++; /* Will add '.' */ + if (string[i] == ',') + count += 2; /* Will add '|' and '^' */ + } - regex = silc_calloc(len + count, sizeof(*regex)); + regex = silc_calloc(len + count + 1, sizeof(*regex)); count = 0; - regex[count] = '('; - count++; + regex[count++] = '('; + regex[count++] = '^'; for (i = 0; i < len; i++) { if (string[i] == '*' || string[i] == '?') { regex[count] = '.'; count++; } else if (string[i] == ',') { - if (i + 1 == len) + if (i + 2 == len) continue; - regex[count] = '|'; - count++; + regex[count++] = '|'; + regex[count++] = '^'; continue; } - regex[count] = string[i]; - count++; + regex[count++] = string[i]; } regex[count++] = ')'; @@ -97,7 +98,7 @@ int silc_string_regex_match(const char *regex, const char *string) regex_t preg; int ret = FALSE; - if (regcomp(&preg, regex, REG_NOSUB | REG_EXTENDED) < 0) + if (regcomp(&preg, regex, REG_NOSUB | REG_EXTENDED) != 0) return FALSE; if (regexec(&preg, string, 0, NULL, 0) == 0) @@ -140,17 +141,15 @@ char *silc_get_username() struct passwd *pw; pw = getpwuid(getuid()); - if (!pw) { - fprintf(stderr, "silc_get_username: %s\n", strerror(errno)); - return NULL; - } - + if (!pw) + return strdup("foo"); + logname = pw->pw_name; } } return strdup(logname); -} +} /* Returns the real name of ther user. */ @@ -160,10 +159,8 @@ char *silc_get_real_name() struct passwd *pw; pw = getpwuid(getuid()); - if (!pw) { - fprintf(stderr, "silc_get_username: %s\n", strerror(errno)); - return NULL; - } + if (!pw) + return strdup("Foo T. Bar"); if (strchr(pw->pw_gecos, ',')) *strchr(pw->pw_gecos, ',') = 0; @@ -179,3 +176,9 @@ int silc_gettimeofday(struct timeval *p) { return gettimeofday(p, NULL); } + +int silc_file_set_nonblock(int fd) +{ + return fcntl(fd, F_SETFL, fcntl(fd, F_GETFL, 0) | O_NONBLOCK); +} +