updates.
authorPekka Riikonen <priikone@silcnet.org>
Sat, 23 Jun 2001 16:11:15 +0000 (16:11 +0000)
committerPekka Riikonen <priikone@silcnet.org>
Sat, 23 Jun 2001 16:11:15 +0000 (16:11 +0000)
CHANGES
includes/silcincludes.h
lib/contrib/regex.c
lib/silcutil/silcnet.h
lib/silcutil/silcutil.c
lib/silcutil/unix/Makefile.am
lib/silcutil/unix/silcunixnet.c
lib/silcutil/unix/silcunixutil.c [new file with mode: 0644]

diff --git a/CHANGES b/CHANGES
index d180707348e8d8e4e5690d0137dedca8bf362a05..eb6efa1bac6cadd1b96af2ffc28183ea87ea09c1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -19,6 +19,9 @@ Sat Jun 23 16:01:00 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
          Added WIN32 specific network routines to the
          lib/silcutil/win32/silcwin32net.c.
 
+       * Added Unix specific utility functions from the
+         lib/silcutil/silcutil.c to lib/silcutil/unix/silcunixutil.c.
+
 Fri Jun 22 10:44:14 EEST 2001  Pekka Riikonen <priikone@silcnet.org>
 
        * Do not handle JOIN notify in the server if the target client
index f99e5e0976c25eeed17be8fc86f59d4cecb9daf1..63f9e6753efd2b9f5a5243f9171c9682f6e8af9f 100644 (file)
@@ -31,6 +31,8 @@
 
 #ifdef SILC_WIN32
 #include <windows.h>
+#include <dir.h>
+#include <io.h>
 #endif
 
 #include <stdio.h>
@@ -56,7 +58,7 @@
 #error fcntl.h not found in the system
 #endif
 
-#ifdef HAVE_ASSERT_H
+#ifdef HAVE_ERRNO_H
 #include <errno.h>
 #else
 #error errno.h not found in the system
index e0d95f72abd61b2e85a53f5c6e006bd8632aadcb..5845a4169e7ef54e3630daa6c25923d04e1b3f76 100644 (file)
   #pragma alloca
 #endif
 
+/*
 #ifndef _GNU_SOURCE
 #define _GNU_SOURCE
 #endif
+*/
 
 /* We need this for `regex.h', and perhaps for the Emacs include files.  */
 #include <sys/types.h>
index 5b35a0668e67fd9add97cac18faa8818d0033e79..2bb23e75767103265cc3fc0e5b2d45fc572195a9 100644 (file)
@@ -114,6 +114,19 @@ void silc_net_close_connection(int sock);
  ***/
 int silc_net_accept_connection(int sock);
 
+/****f* silcutil/SilcNetAPI/silc_net_set_socket_nonblock
+ *
+ * SYNOPSIS
+ *
+ *    int silc_net_set_socket_nonblock(int sock);
+ *
+ * DESCRIPTION
+ *
+ *    Sets the socket to non-blocking mode.
+ *
+ ***/
+int silc_net_set_socket_nonblock(int sock);
+
 /****f* silcutil/SilcNetAPI/silc_net_set_socket_opt
  *
  * SYNOPSIS
index 56ff3090be7d3a0bd8cb150f84f36c1a291017d5..fa482dcce9c89a4f422762b35ca4a9bb112cd68b 100644 (file)
@@ -643,147 +643,6 @@ int silc_string_compare(char *string1, char *string2)
   return FALSE;
 }
 
-/* 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;
-
-  len = strlen(string);
-  count = 4;
-  for (i = 0; i < len; i++)
-    if (string[i] == '*' || string[i] == '?')
-      count++;
-
-  regex = silc_calloc(len + count, sizeof(*regex));
-
-  count = 0;
-  regex[count] = '(';
-  count++;
-
-  for (i = 0; i < len; i++) {
-    if (string[i] == '*' || string[i] == '?') {
-      regex[count] = '.';
-      count++;
-    } else if (string[i] == ',') {
-      regex[count] = '|';
-      count++;
-      continue;
-    }
-
-    regex[count] = string[i];
-    count++;
-  }
-
-  regex[count - 1] = ')';
-  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;
-
-  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;
-}
-
-/* Matches the two strings and returns TRUE if the strings match. */
-
-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)
-    return FALSE;
-
-  if (regexec(&preg, string, 0, NULL, 0) == 0)
-    ret = TRUE;
-
-  regfree(&preg);
-
-  return ret;
-}
-
-/* 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;
-
-  s1 = silc_string_regexify(string1);
-  ret = silc_string_regex_match(s1, string2);
-  silc_free(s1);
-
-  return ret;
-}
-
-/* Returns the username of the user. If the global variable LOGNAME
-   does not exists we will get the name from the password file. */
-
-char *silc_get_username()
-{
-  char *logname = NULL;
-  
-  logname = getenv("LOGNAME");
-  if (!logname) {
-    logname = getlogin();
-    if (!logname) {
-      struct passwd *pw;
-
-      pw = getpwuid(getuid());
-      if (!pw) {
-       fprintf(stderr, "silc_get_username: %s\n", strerror(errno));
-       return NULL;
-      }
-      
-      logname = pw->pw_name;
-    }
-  }
-  
-  return strdup(logname);
-}                          
-
-/* Returns the real name of ther user. */
-
-char *silc_get_real_name()
-{
-  char *realname = NULL;
-  struct passwd *pw;
-    
-  pw = getpwuid(getuid());
-  if (!pw) {
-    fprintf(stderr, "silc_get_username: %s\n", strerror(errno));
-    return NULL;
-  }
-
-  if (strchr(pw->pw_gecos, ','))
-    *strchr(pw->pw_gecos, ',') = 0;
-
-  realname = strdup(pw->pw_gecos);
-
-  return realname;
-}
-
 /* Basic has function to hash strings. May be used with the SilcHashTable. 
    Note that this lowers the characters of the string (with tolower()) so
    this is used usually with nicknames, channel and server names to provide
index c0ab848008447e87aa7db23778f2b97f5d81aefc..033cb9bbf86423eb43505da273c348cb613563d6 100644 (file)
@@ -22,7 +22,8 @@ noinst_LIBRARIES = libsilcunixutil.a
 
 libsilcunixutil_a_SOURCES =    \
        silcunixschedule.c      \
-       silcunixnet.c
+       silcunixnet.c           \
+       silcunixutil.c
 
 EXTRA_DIST = *.h
 
index 1abb7a0c1bb0c1f77dcfc5db9f2866fc518326ab..de1b1e339f9e5db90238f24ca8462797fa194322 100644 (file)
@@ -22,8 +22,6 @@
 #include "silcincludes.h"
 #include "silcnet.h"
 
-int silc_net_set_socket_nonblock(int sock);
-
 /* This function creates server or daemon or listener or what ever. This
    does not fork a new process, it must be done by the caller if caller
    wants to create a child process. This is used by the SILC server. 
diff --git a/lib/silcutil/unix/silcunixutil.c b/lib/silcutil/unix/silcunixutil.c
new file mode 100644 (file)
index 0000000..1e1c440
--- /dev/null
@@ -0,0 +1,169 @@
+/*
+
+  silcunixutil.c
+
+  Author: Pekka Riikonen <priikone@poseidon.pspt.fi>
+
+  Copyright (C) 1997 - 2000 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.
+  
+  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.
+
+*/
+/*
+ * These are general utility functions that doesn't belong to any specific
+ * group of routines.
+ */
+/* $Id$ */
+
+#include "silcincludes.h"
+
+/* XXX lib/contrib/regex.c might cmopile on WIN32 as well */
+
+/* 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;
+
+  len = strlen(string);
+  count = 4;
+  for (i = 0; i < len; i++)
+    if (string[i] == '*' || string[i] == '?')
+      count++;
+
+  regex = silc_calloc(len + count, sizeof(*regex));
+
+  count = 0;
+  regex[count] = '(';
+  count++;
+
+  for (i = 0; i < len; i++) {
+    if (string[i] == '*' || string[i] == '?') {
+      regex[count] = '.';
+      count++;
+    } else if (string[i] == ',') {
+      regex[count] = '|';
+      count++;
+      continue;
+    }
+
+    regex[count] = string[i];
+    count++;
+  }
+
+  regex[count - 1] = ')';
+  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;
+
+  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;
+}
+
+/* Matches the two strings and returns TRUE if the strings match. */
+
+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)
+    return FALSE;
+
+  if (regexec(&preg, string, 0, NULL, 0) == 0)
+    ret = TRUE;
+
+  regfree(&preg);
+
+  return ret;
+}
+
+/* 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;
+
+  s1 = silc_string_regexify(string1);
+  ret = silc_string_regex_match(s1, string2);
+  silc_free(s1);
+
+  return ret;
+}
+
+/* Returns the username of the user. If the global variable LOGNAME
+   does not exists we will get the name from the password file. */
+
+char *silc_get_username()
+{
+  char *logname = NULL;
+  
+  logname = getenv("LOGNAME");
+  if (!logname) {
+    logname = getlogin();
+    if (!logname) {
+      struct passwd *pw;
+
+      pw = getpwuid(getuid());
+      if (!pw) {
+       fprintf(stderr, "silc_get_username: %s\n", strerror(errno));
+       return NULL;
+      }
+      
+      logname = pw->pw_name;
+    }
+  }
+  
+  return strdup(logname);
+}                          
+
+/* Returns the real name of ther user. */
+
+char *silc_get_real_name()
+{
+  char *realname = NULL;
+  struct passwd *pw;
+    
+  pw = getpwuid(getuid());
+  if (!pw) {
+    fprintf(stderr, "silc_get_username: %s\n", strerror(errno));
+    return NULL;
+  }
+
+  if (strchr(pw->pw_gecos, ','))
+    *strchr(pw->pw_gecos, ',') = 0;
+
+  realname = strdup(pw->pw_gecos);
+
+  return realname;
+}