Author: mhabersack
Date: 2007-09-12 08:28:38 -0400 (Wed, 12 Sep 2007)
New Revision: 85681

Added:
   trunk/mono/mono/utils/mono-io-portability.c
   trunk/mono/mono/utils/mono-io-portability.h
Modified:
   trunk/mono/mono/io-layer/ChangeLog
   trunk/mono/mono/io-layer/io-portability.c
   trunk/mono/mono/utils/ChangeLog
   trunk/mono/mono/utils/Makefile.am
Log:
2007-09-12  Marek Habersack  <[EMAIL PROTECTED]>

            * io-portability.c: options_init moved to
            utils/mono-io-portability.c

2007-09-12  Marek Habersack  <[EMAIL PROTECTED]>

            * mono-io-portability.c: added. Moved options_init from io-layer.

            * mono-io-portability.h: added. Contains declarations utility
            functions and acros for checking whether MONO_IOMAP is in effect.



Modified: trunk/mono/mono/io-layer/ChangeLog
===================================================================
--- trunk/mono/mono/io-layer/ChangeLog  2007-09-12 12:28:16 UTC (rev 85680)
+++ trunk/mono/mono/io-layer/ChangeLog  2007-09-12 12:28:38 UTC (rev 85681)
@@ -1,3 +1,8 @@
+2007-09-12  Marek Habersack  <[EMAIL PROTECTED]>
+
+       * io-portability.c: options_init moved to
+       utils/mono-io-portability.c
+
 2007-09-09  Robert Jordan  <[EMAIL PROTECTED]>
 
        * sockets.c (_wapi_setsockopt): Add support for FreeBSD multicast

Modified: trunk/mono/mono/io-layer/io-portability.c
===================================================================
--- trunk/mono/mono/io-layer/io-portability.c   2007-09-12 12:28:16 UTC (rev 
85680)
+++ trunk/mono/mono/io-layer/io-portability.c   2007-09-12 12:28:38 UTC (rev 
85681)
@@ -26,55 +26,10 @@
 #include <mono/io-layer/error.h>
 #include <mono/io-layer/wapi_glob.h>
 #include <mono/io-layer/io-portability.h>
+#include <mono/utils/mono-io-portability.h>
 
 #undef DEBUG
 
-enum {
-       PORTABILITY_NONE        = 0x00,
-       PORTABILITY_UNKNOWN     = 0x01,
-       PORTABILITY_DRIVE       = 0x02,
-       PORTABILITY_CASE        = 0x04,
-};
-
-static mono_once_t options_once = MONO_ONCE_INIT;
-static int portability_helpers = PORTABILITY_UNKNOWN;
-
-static void options_init (void)
-{
-       const gchar *env;
-       
-       portability_helpers = PORTABILITY_NONE;
-       
-       env = g_getenv ("MONO_IOMAP");
-       if (env != NULL) {
-               /* parse the environment setting and set up some vars
-                * here
-                */
-               gchar **options = g_strsplit (env, ":", 0);
-               int i;
-               
-               if (options == NULL) {
-                       /* This shouldn't happen */
-                       return;
-               }
-               
-               for (i = 0; options[i] != NULL; i++) {
-#ifdef DEBUG
-                       g_message ("%s: Setting option [%s]", __func__,
-                                  options[i]);
-#endif
-                       if (!strncasecmp (options[i], "drive", 5)) {
-                               portability_helpers |= PORTABILITY_DRIVE;
-                       } else if (!strncasecmp (options[i], "case", 4)) {
-                               portability_helpers |= PORTABILITY_CASE;
-                       } else if (!strncasecmp (options[i], "all", 3)) {
-                               portability_helpers |= (PORTABILITY_DRIVE |
-                                                       PORTABILITY_CASE);
-                       }
-               }
-       }
-}
-
 /* Returns newly allocated string, or NULL on failure */
 static gchar *find_in_dir (DIR *current, const gchar *name)
 {
@@ -118,10 +73,10 @@
        gchar *new_pathname, **components, **new_components;
        int num_components = 0, component = 0;
        DIR *scanning = NULL;
-       
-       mono_once (&options_once, options_init);
 
-       if (portability_helpers == PORTABILITY_NONE) {
+       mono_portability_helpers_init ();
+
+       if (IS_PORTABILITY_NONE) {
                return(NULL);
        }
 
@@ -148,7 +103,7 @@
                   new_pathname);
 #endif
        
-       if (portability_helpers & PORTABILITY_DRIVE &&
+       if (IS_PORTABILITY_DRIVE &&
            g_ascii_isalpha (new_pathname[0]) &&
            (new_pathname[1] == ':')) {
                int len = strlen (new_pathname);
@@ -175,7 +130,7 @@
         * and do a case-insensitive directory scan for it
         */
 
-       if (!(portability_helpers & PORTABILITY_CASE)) {
+       if (!(IS_PORTABILITY_CASE)) {
                g_free (new_pathname);
                return(NULL);
        }
@@ -361,7 +316,7 @@
                fd = open (pathname, flags, mode);
                if (fd == -1 &&
                    (errno == ENOENT || errno == ENOTDIR) &&
-                   portability_helpers > 0) {
+                   IS_PORTABILITY_SET) {
                        int saved_errno = errno;
                        located_filename = find_file (pathname, TRUE);
                        
@@ -386,7 +341,7 @@
        ret = access (pathname, mode);
        if (ret == -1 &&
            (errno == ENOENT || errno == ENOTDIR) &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                int saved_errno = errno;
                gchar *located_filename = find_file (pathname, TRUE);
                
@@ -409,7 +364,7 @@
        ret = chmod (pathname, mode);
        if (ret == -1 &&
            (errno == ENOENT || errno == ENOTDIR) &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                int saved_errno = errno;
                gchar *located_filename = find_file (pathname, TRUE);
                
@@ -432,7 +387,7 @@
        ret = utime (filename, buf);
        if (ret == -1 &&
            errno == ENOENT &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                int saved_errno = errno;
                gchar *located_filename = find_file (filename, TRUE);
                
@@ -455,7 +410,7 @@
        ret = unlink (pathname);
        if (ret == -1 &&
            (errno == ENOENT || errno == ENOTDIR || errno == EISDIR) &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                int saved_errno = errno;
                gchar *located_filename = find_file (pathname, TRUE);
                
@@ -484,7 +439,7 @@
                if (ret == -1 &&
                    (errno == EISDIR || errno == ENAMETOOLONG ||
                     errno == ENOENT || errno == ENOTDIR || errno == EXDEV) &&
-                   portability_helpers > 0) {
+                   IS_PORTABILITY_SET) {
                        int saved_errno = errno;
                        gchar *located_oldpath = find_file (oldpath, TRUE);
                        
@@ -512,7 +467,7 @@
        ret = stat (path, buf);
        if (ret == -1 &&
            (errno == ENOENT || errno == ENOTDIR) &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                int saved_errno = errno;
                gchar *located_filename = find_file (path, TRUE);
                
@@ -535,7 +490,7 @@
        ret = lstat (path, buf);
        if (ret == -1 &&
            (errno == ENOENT || errno == ENOTDIR) &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                int saved_errno = errno;
                gchar *located_filename = find_file (path, TRUE);
                
@@ -573,7 +528,7 @@
        ret = rmdir (pathname);
        if (ret == -1 &&
            (errno == ENOENT || errno == ENOTDIR || errno == ENAMETOOLONG) &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                int saved_errno = errno;
                gchar *located_filename = find_file (pathname, TRUE);
                
@@ -596,7 +551,7 @@
        ret = chdir (path);
        if (ret == -1 &&
            (errno == ENOENT || errno == ENOTDIR || errno == ENAMETOOLONG) &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                int saved_errno = errno;
                gchar *located_filename = find_file (path, TRUE);
                
@@ -616,11 +571,11 @@
 {
        gchar *new_filename = g_strdup (filename), *ret;
 
-       mono_once (&options_once, options_init);
+       mono_portability_helpers_init ();
        
        g_strdelimit (new_filename, "\\", '/');
 
-       if (portability_helpers & PORTABILITY_DRIVE &&
+       if (IS_PORTABILITY_DRIVE &&
            g_ascii_isalpha (new_filename[0]) &&
            (new_filename[1] == ':')) {
                int len = strlen (new_filename);
@@ -639,11 +594,11 @@
 {
        gchar *new_filename = g_strdup (filename), *ret;
 
-       mono_once (&options_once, options_init);
+       mono_portability_helpers_init ();
        
        g_strdelimit (new_filename, "\\", '/');
 
-       if (portability_helpers & PORTABILITY_DRIVE &&
+       if (IS_PORTABILITY_DRIVE &&
            g_ascii_isalpha (new_filename[0]) &&
            (new_filename[1] == ':')) {
                int len = strlen (new_filename);
@@ -667,7 +622,7 @@
            ((*error)->code == G_FILE_ERROR_NOENT ||
             (*error)->code == G_FILE_ERROR_NOTDIR ||
             (*error)->code == G_FILE_ERROR_NAMETOOLONG) &&
-           portability_helpers > 0) {
+           IS_PORTABILITY_SET) {
                gchar *located_filename = find_file (path, TRUE);
                GError *tmp_error = NULL;
                
@@ -839,7 +794,7 @@
                return -1;
        }
 
-       if (portability_helpers & PORTABILITY_CASE) {
+       if (IS_PORTABILITY_CASE) {
                flags = WAPI_GLOB_IGNORECASE;
        }
        

Modified: trunk/mono/mono/utils/ChangeLog
===================================================================
--- trunk/mono/mono/utils/ChangeLog     2007-09-12 12:28:16 UTC (rev 85680)
+++ trunk/mono/mono/utils/ChangeLog     2007-09-12 12:28:38 UTC (rev 85681)
@@ -1,3 +1,10 @@
+2007-09-12  Marek Habersack  <[EMAIL PROTECTED]>
+
+       * mono-io-portability.c: added. Moved options_init from io-layer.
+
+       * mono-io-portability.h: added. Contains declarations utility
+       functions and acros for checking whether MONO_IOMAP is in effect.
+
 2007-09-09  Zoltan Varga  <[EMAIL PROTECTED]>
 
        * mono-compiler.h: Applied patch from Jurek Bartuszek ([EMAIL 
PROTECTED]).

Modified: trunk/mono/mono/utils/Makefile.am
===================================================================
--- trunk/mono/mono/utils/Makefile.am   2007-09-12 12:28:16 UTC (rev 85680)
+++ trunk/mono/mono/utils/Makefile.am   2007-09-12 12:28:38 UTC (rev 85681)
@@ -19,6 +19,7 @@
        mono-dl.c       \
        mono-dl.h       \
        mono-internal-hash.c    \
+       mono-io-portability.c   \
        monobitset.c    \
        mono-math.c  \
        mono-mmap.c  \
@@ -40,6 +41,7 @@
        mono-counters.h \
        mono-digest.h   \
        mono-internal-hash.h    \
+       mono-io-portability.h   \
        mono-logger.h   \
        mono-hash.h     \
        mono-math.h     \

Added: trunk/mono/mono/utils/mono-io-portability.c
===================================================================
--- trunk/mono/mono/utils/mono-io-portability.c 2007-09-12 12:28:16 UTC (rev 
85680)
+++ trunk/mono/mono/utils/mono-io-portability.c 2007-09-12 12:28:38 UTC (rev 
85681)
@@ -0,0 +1,50 @@
+#include "config.h"
+
+#include <glib.h>
+#include <mono/io-layer/mono-mutex.h>
+#include <mono/utils/mono-io-portability.h>
+
+static mono_once_t options_once = MONO_ONCE_INIT;
+int __mono_io_portability_helpers = PORTABILITY_UNKNOWN;
+
+static void options_init (void)
+{
+        const gchar *env;
+        
+        __mono_io_portability_helpers = PORTABILITY_NONE;
+        
+        env = g_getenv ("MONO_IOMAP");
+        if (env != NULL) {
+                /* parse the environment setting and set up some vars
+                 * here
+                 */
+                gchar **options = g_strsplit (env, ":", 0);
+                int i;
+                
+                if (options == NULL) {
+                        /* This shouldn't happen */
+                        return;
+                }
+                
+                for (i = 0; options[i] != NULL; i++) {
+#ifdef DEBUG
+                        g_message ("%s: Setting option [%s]", __func__,
+                                   options[i]);
+#endif
+                        if (!strncasecmp (options[i], "drive", 5)) {
+                                __mono_io_portability_helpers |= 
PORTABILITY_DRIVE;
+                        } else if (!strncasecmp (options[i], "case", 4)) {
+                                __mono_io_portability_helpers |= 
PORTABILITY_CASE;
+                        } else if (!strncasecmp (options[i], "all", 3)) {
+                                __mono_io_portability_helpers |= 
(PORTABILITY_DRIVE |
+                                                                 
PORTABILITY_CASE);
+                        }
+                }
+        }
+}
+
+void mono_portability_helpers_init ()
+{
+       mono_once (&options_once, options_init);
+}
+


Property changes on: trunk/mono/mono/utils/mono-io-portability.c
___________________________________________________________________
Name: svn:eol-style
   + native

Added: trunk/mono/mono/utils/mono-io-portability.h
===================================================================
--- trunk/mono/mono/utils/mono-io-portability.h 2007-09-12 12:28:16 UTC (rev 
85680)
+++ trunk/mono/mono/utils/mono-io-portability.h 2007-09-12 12:28:38 UTC (rev 
85681)
@@ -0,0 +1,23 @@
+#ifndef __MONO_URI_H
+#define __MONO_URI_H
+
+#include <mono/utils/mono-compiler.h>
+
+enum {
+        PORTABILITY_NONE        = 0x00,
+        PORTABILITY_UNKNOWN     = 0x01,
+        PORTABILITY_DRIVE       = 0x02,
+        PORTABILITY_CASE        = 0x04,
+};
+
+void mono_portability_helpers_init () MONO_INTERNAL;
+
+extern int __mono_io_portability_helpers MONO_INTERNAL;
+
+#define IS_PORTABILITY_NONE (__mono_io_portability_helpers & PORTABILITY_NONE)
+#define IS_PORTABILITY_UNKNOWN (__mono_io_portability_helpers & 
PORTABILITY_UNKNOWN)
+#define IS_PORTABILITY_DRIVE (__mono_io_portability_helpers & 
PORTABILITY_DRIVE)
+#define IS_PORTABILITY_CASE (__mono_io_portability_helpers & PORTABILITY_CASE)
+#define IS_PORTABILITY_SET (__mono_io_portability_helpers > 0)
+
+#endif


Property changes on: trunk/mono/mono/utils/mono-io-portability.h
___________________________________________________________________
Name: svn:eol-style
   + native

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to