diff options
author | Tor Lillqvist <tml@iki.fi> | 2001-01-05 19:30:13 +0000 |
---|---|---|
committer | Tor Lillqvist <tml@src.gnome.org> | 2001-01-05 19:30:13 +0000 |
commit | ebf8fe6a929775945d17d820377e5eb974f3f3d0 (patch) | |
tree | 78654704c7c0fbdabc34a481cc36879f94698bee /gutils.c | |
parent | 568691c6003a430682f1b48191b8921bb8844419 (diff) | |
download | glib-ebf8fe6a929775945d17d820377e5eb974f3f3d0.tar.gz |
Look also for (illegal) forward slashes in the template.
2001-01-05 Tor Lillqvist <tml@iki.fi>
* gfileutils.c (g_file_open_tmp): (Win32:) Look also for (illegal)
forward slashes in the template.
* gutils.c (g_path_skip_root): On Win32, skip the \\server\share
part of UNC paths. On all platforms, skip several initial
slashes. Add a few comments.
(g_get_any_init): On Win32, in case HOME is Unix-style with
(forward) slashes (some other applications apparently set it up
this way, convert to backslashed form.
* configure.in (glib_os): Remove stray 'v'. Add case for mingw,
although using configure for mingw surely doesn't work yet.
* glib.def: Update.
Diffstat (limited to 'gutils.c')
-rw-r--r-- | gutils.c | 35 |
1 files changed, 28 insertions, 7 deletions
@@ -471,10 +471,25 @@ g_path_skip_root (gchar *file_name) { g_return_val_if_fail (file_name != NULL, NULL); +#ifdef G_OS_WIN32 + /* Skip \\server\share\ */ + if (file_name[0] == G_DIR_SEPARATOR && + file_name[1] == G_DIR_SEPARATOR && + file_name[2] && + strchr (file_name + 2, G_DIR_SEPARATOR) > file_name + 2) + return strchr (file_name + 2, G_DIR_SEPARATOR) + 1; +#endif + + /* Skip initial slashes */ if (file_name[0] == G_DIR_SEPARATOR) - return file_name + 1; + { + while (file_name[0] == G_DIR_SEPARATOR) + file_name++; + return file_name; + } #ifdef G_OS_WIN32 + /* Skip X:\ */ if (isalpha (file_name[0]) && file_name[1] == ':' && file_name[2] == G_DIR_SEPARATOR) return file_name + 3; #endif @@ -687,15 +702,21 @@ g_get_any_init (void) g_home_dir = g_strdup (g_getenv ("HOME")); #ifdef G_OS_WIN32 - if (!g_home_dir) + /* In case HOME is Unix-style (it happens), convert it to + * Windows style. + */ + if (g_home_dir) + { + gchar *p; + while ((p = strchr (g_home_dir, '/')) != NULL) + *p = '\\'; + } + else { /* The official way to specify a home directory on NT is - * the HOMEDRIVE and HOMEPATH environment variables. - * - * This is inside #ifdef G_OS_WIN32 because with the cygwin dll, - * HOME should be a POSIX style pathname. + * the HOMEDRIVE and HOMEPATH environment variables. At least + * it was at some time. */ - if (getenv ("HOMEDRIVE") != NULL && getenv ("HOMEPATH") != NULL) { gchar *homedrive, *homepath; |