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