mirror of
https://gitlab.gnome.org/GNOME/glib.git
synced 2024-12-24 14:36:13 +01:00
Remove test for initial double backslash (UNC path), this will of course
2001-03-01 Tor Lillqvist <tml@iki.fi> * gutils.c (g_path_is_absolute): (Win32) Remove test for initial double backslash (UNC path), this will of course be matched by the test for an initial G_DIR_SEPARATOR right up front. Silly me. (g_find_program_in_path): Implement on Win32. (g_get_any_init): (Win32) Also look for the USERPROFILE env var indicating the home directory equivalent. * testglib.c (main): Test g_find_program_in_path() on Win32 by looking for more.com and regedit.exe. * glib.def: Add g_find_program_in_path.
This commit is contained in:
parent
5215807c6c
commit
b6ba941b50
14
ChangeLog
14
ChangeLog
@ -1,3 +1,17 @@
|
||||
2001-03-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gutils.c (g_path_is_absolute): (Win32) Remove test for initial
|
||||
double backslash (UNC path), this will of course be matched by the
|
||||
test for an initial G_DIR_SEPARATOR right up front. Silly me.
|
||||
(g_find_program_in_path): Implement on Win32.
|
||||
(g_get_any_init): (Win32) Also look for the USERPROFILE env var
|
||||
indicating the home directory equivalent.
|
||||
|
||||
* testglib.c (main): Test g_find_program_in_path() on Win32 by
|
||||
looking for more.com and regedit.exe.
|
||||
|
||||
* glib.def: Add g_find_program_in_path.
|
||||
|
||||
2001-02-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* gthreadpool.c (g_thread_pool_thread_proxy): Make
|
||||
|
@ -1,3 +1,17 @@
|
||||
2001-03-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gutils.c (g_path_is_absolute): (Win32) Remove test for initial
|
||||
double backslash (UNC path), this will of course be matched by the
|
||||
test for an initial G_DIR_SEPARATOR right up front. Silly me.
|
||||
(g_find_program_in_path): Implement on Win32.
|
||||
(g_get_any_init): (Win32) Also look for the USERPROFILE env var
|
||||
indicating the home directory equivalent.
|
||||
|
||||
* testglib.c (main): Test g_find_program_in_path() on Win32 by
|
||||
looking for more.com and regedit.exe.
|
||||
|
||||
* glib.def: Add g_find_program_in_path.
|
||||
|
||||
2001-02-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* gthreadpool.c (g_thread_pool_thread_proxy): Make
|
||||
|
@ -1,3 +1,17 @@
|
||||
2001-03-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gutils.c (g_path_is_absolute): (Win32) Remove test for initial
|
||||
double backslash (UNC path), this will of course be matched by the
|
||||
test for an initial G_DIR_SEPARATOR right up front. Silly me.
|
||||
(g_find_program_in_path): Implement on Win32.
|
||||
(g_get_any_init): (Win32) Also look for the USERPROFILE env var
|
||||
indicating the home directory equivalent.
|
||||
|
||||
* testglib.c (main): Test g_find_program_in_path() on Win32 by
|
||||
looking for more.com and regedit.exe.
|
||||
|
||||
* glib.def: Add g_find_program_in_path.
|
||||
|
||||
2001-02-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* gthreadpool.c (g_thread_pool_thread_proxy): Make
|
||||
|
@ -1,3 +1,17 @@
|
||||
2001-03-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gutils.c (g_path_is_absolute): (Win32) Remove test for initial
|
||||
double backslash (UNC path), this will of course be matched by the
|
||||
test for an initial G_DIR_SEPARATOR right up front. Silly me.
|
||||
(g_find_program_in_path): Implement on Win32.
|
||||
(g_get_any_init): (Win32) Also look for the USERPROFILE env var
|
||||
indicating the home directory equivalent.
|
||||
|
||||
* testglib.c (main): Test g_find_program_in_path() on Win32 by
|
||||
looking for more.com and regedit.exe.
|
||||
|
||||
* glib.def: Add g_find_program_in_path.
|
||||
|
||||
2001-02-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* gthreadpool.c (g_thread_pool_thread_proxy): Make
|
||||
|
@ -1,3 +1,17 @@
|
||||
2001-03-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gutils.c (g_path_is_absolute): (Win32) Remove test for initial
|
||||
double backslash (UNC path), this will of course be matched by the
|
||||
test for an initial G_DIR_SEPARATOR right up front. Silly me.
|
||||
(g_find_program_in_path): Implement on Win32.
|
||||
(g_get_any_init): (Win32) Also look for the USERPROFILE env var
|
||||
indicating the home directory equivalent.
|
||||
|
||||
* testglib.c (main): Test g_find_program_in_path() on Win32 by
|
||||
looking for more.com and regedit.exe.
|
||||
|
||||
* glib.def: Add g_find_program_in_path.
|
||||
|
||||
2001-02-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* gthreadpool.c (g_thread_pool_thread_proxy): Make
|
||||
|
@ -1,3 +1,17 @@
|
||||
2001-03-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gutils.c (g_path_is_absolute): (Win32) Remove test for initial
|
||||
double backslash (UNC path), this will of course be matched by the
|
||||
test for an initial G_DIR_SEPARATOR right up front. Silly me.
|
||||
(g_find_program_in_path): Implement on Win32.
|
||||
(g_get_any_init): (Win32) Also look for the USERPROFILE env var
|
||||
indicating the home directory equivalent.
|
||||
|
||||
* testglib.c (main): Test g_find_program_in_path() on Win32 by
|
||||
looking for more.com and regedit.exe.
|
||||
|
||||
* glib.def: Add g_find_program_in_path.
|
||||
|
||||
2001-02-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* gthreadpool.c (g_thread_pool_thread_proxy): Make
|
||||
|
@ -1,3 +1,17 @@
|
||||
2001-03-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gutils.c (g_path_is_absolute): (Win32) Remove test for initial
|
||||
double backslash (UNC path), this will of course be matched by the
|
||||
test for an initial G_DIR_SEPARATOR right up front. Silly me.
|
||||
(g_find_program_in_path): Implement on Win32.
|
||||
(g_get_any_init): (Win32) Also look for the USERPROFILE env var
|
||||
indicating the home directory equivalent.
|
||||
|
||||
* testglib.c (main): Test g_find_program_in_path() on Win32 by
|
||||
looking for more.com and regedit.exe.
|
||||
|
||||
* glib.def: Add g_find_program_in_path.
|
||||
|
||||
2001-02-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* gthreadpool.c (g_thread_pool_thread_proxy): Make
|
||||
|
@ -1,3 +1,17 @@
|
||||
2001-03-01 Tor Lillqvist <tml@iki.fi>
|
||||
|
||||
* gutils.c (g_path_is_absolute): (Win32) Remove test for initial
|
||||
double backslash (UNC path), this will of course be matched by the
|
||||
test for an initial G_DIR_SEPARATOR right up front. Silly me.
|
||||
(g_find_program_in_path): Implement on Win32.
|
||||
(g_get_any_init): (Win32) Also look for the USERPROFILE env var
|
||||
indicating the home directory equivalent.
|
||||
|
||||
* testglib.c (main): Test g_find_program_in_path() on Win32 by
|
||||
looking for more.com and regedit.exe.
|
||||
|
||||
* glib.def: Add g_find_program_in_path.
|
||||
|
||||
2001-02-26 Sebastian Wilhelmi <wilhelmi@ira.uka.de>
|
||||
|
||||
* gthreadpool.c (g_thread_pool_thread_proxy): Make
|
||||
|
@ -24,9 +24,6 @@ the prebuilt DLLs (especially of GTK+), you *must* also use that flag.
|
||||
(This flag means that the struct layout is identical to that used by
|
||||
MSVC.)
|
||||
|
||||
To test the GLib functions, go to the tests subdirectory and enter
|
||||
`nmake -f makefile.msc check` or `make -f makefile.mingw check`.
|
||||
|
||||
If you would want to use the cygwin tools to generate executables that
|
||||
*do* use the cygwin runtime, the normal Unix configuration method
|
||||
should work as if on Unix. But it won't produce DLLs. At least I
|
||||
|
1
glib.def
1
glib.def
@ -129,6 +129,7 @@ EXPORTS
|
||||
g_file_test
|
||||
g_filename_from_utf8
|
||||
g_filename_to_utf8
|
||||
g_find_program_in_path
|
||||
g_free
|
||||
g_get_charset
|
||||
g_get_codeset
|
||||
|
@ -129,6 +129,7 @@ EXPORTS
|
||||
g_file_test
|
||||
g_filename_from_utf8
|
||||
g_filename_to_utf8
|
||||
g_find_program_in_path
|
||||
g_free
|
||||
g_get_charset
|
||||
g_get_codeset
|
||||
|
@ -67,6 +67,7 @@
|
||||
#ifdef G_OS_WIN32
|
||||
# define STRICT /* Strict typing, please */
|
||||
# include <windows.h>
|
||||
# undef STRICT
|
||||
# include <ctype.h>
|
||||
# include <direct.h>
|
||||
#endif /* G_OS_WIN32 */
|
||||
@ -173,12 +174,19 @@ g_find_program_in_path (const gchar *program)
|
||||
{
|
||||
const gchar *path, *p;
|
||||
gchar *name, *freeme;
|
||||
#ifdef G_OS_WIN32
|
||||
gchar *path_tmp;
|
||||
#endif
|
||||
size_t len;
|
||||
size_t pathlen;
|
||||
|
||||
/* On Win32, should we try appending .exe, .com, and the other
|
||||
* components of %PATHEXT% ?
|
||||
*/
|
||||
|
||||
g_return_val_if_fail (program != NULL, NULL);
|
||||
|
||||
if (*program == '/')
|
||||
if (g_path_is_absolute (program))
|
||||
{
|
||||
if (g_file_test (program, G_FILE_TEST_IS_EXECUTABLE))
|
||||
return g_strdup (program);
|
||||
@ -187,6 +195,7 @@ g_find_program_in_path (const gchar *program)
|
||||
}
|
||||
|
||||
path = g_getenv ("PATH");
|
||||
#ifdef G_OS_UNIX
|
||||
if (path == NULL)
|
||||
{
|
||||
/* There is no `PATH' in the environment. The default
|
||||
@ -201,6 +210,23 @@ g_find_program_in_path (const gchar *program)
|
||||
|
||||
path = "/bin:/usr/bin:.";
|
||||
}
|
||||
#else
|
||||
{
|
||||
gchar *tmp;
|
||||
gchar moddir[PATH_MAX], sysdir[PATH_MAX], windir[PATH_MAX];
|
||||
|
||||
GetModuleFileName (NULL, moddir, sizeof (moddir));
|
||||
tmp = g_path_get_dirname (moddir);
|
||||
GetSystemDirectory (sysdir, sizeof (sysdir));
|
||||
GetWindowsDirectory (windir, sizeof (windir));
|
||||
path_tmp = g_strconcat (tmp, ";.;", sysdir, ";", windir,
|
||||
(path != NULL ? ";" : NULL),
|
||||
(path != NULL ? path : NULL),
|
||||
NULL);
|
||||
g_free (tmp);
|
||||
path = path_tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
len = strlen (program) + 1;
|
||||
pathlen = strlen (path);
|
||||
@ -210,7 +236,7 @@ g_find_program_in_path (const gchar *program)
|
||||
memcpy (name + pathlen + 1, program, len);
|
||||
name = name + pathlen;
|
||||
/* And add the slash before the filename */
|
||||
*name = '/';
|
||||
*name = G_DIR_SEPARATOR;
|
||||
|
||||
p = path;
|
||||
do
|
||||
@ -218,7 +244,7 @@ g_find_program_in_path (const gchar *program)
|
||||
char *startp;
|
||||
|
||||
path = p;
|
||||
p = my_strchrnul (path, ':');
|
||||
p = my_strchrnul (path, G_SEARCHPATH_SEPARATOR);
|
||||
|
||||
if (p == path)
|
||||
/* Two adjacent colons, or a colon at the beginning or the end
|
||||
@ -233,12 +259,18 @@ g_find_program_in_path (const gchar *program)
|
||||
gchar *ret;
|
||||
ret = g_strdup (startp);
|
||||
g_free (freeme);
|
||||
#ifdef G_OS_WIN32
|
||||
g_free (path_tmp);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
while (*p++ != '\0');
|
||||
|
||||
g_free (freeme);
|
||||
#ifdef G_OS_WIN32
|
||||
g_free (path_tmp);
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@ -461,9 +493,6 @@ g_path_is_absolute (const gchar *file_name)
|
||||
#ifdef G_OS_WIN32
|
||||
if (isalpha (file_name[0]) && file_name[1] == ':' && file_name[2] == G_DIR_SEPARATOR)
|
||||
return TRUE;
|
||||
|
||||
if (file_name[0] == G_DIR_SEPARATOR && file_name[1] == G_DIR_SEPARATOR)
|
||||
return TRUE;
|
||||
#endif
|
||||
|
||||
return FALSE;
|
||||
@ -735,7 +764,7 @@ g_get_any_init (void)
|
||||
{
|
||||
/* USERPROFILE is probably the closest equivalent to $HOME? */
|
||||
if (getenv ("USERPROFILE") != NULL)
|
||||
g_home_dir = g_getenv ("USERPROFILE");
|
||||
g_home_dir = g_strdup (g_getenv ("USERPROFILE"));
|
||||
}
|
||||
|
||||
if (!g_home_dir)
|
||||
|
@ -1,10 +1,6 @@
|
||||
## Makefile for building the GLib dlls with Microsoft C
|
||||
## Use: nmake -f makefile.msc
|
||||
|
||||
# Change this to wherever you want to install the DLLs. This directory
|
||||
# should be in your PATH.
|
||||
BIN = C:\bin
|
||||
|
||||
TOP = ..
|
||||
|
||||
!INCLUDE build\win32\make.msc
|
||||
@ -21,7 +17,7 @@ DEFINES = -DHAVE_CONFIG_H -DGLIB_COMPILATION -DG_LOG_DOMAIN=g_log_domain_glib -D
|
||||
DEPCFLAGS = $(INTL_CFLAGS) $(LIBICONV_CFLAGS)
|
||||
|
||||
DLLS_TO_BUILD = \
|
||||
glib-$(GLIB_VER).dll \
|
||||
glib-$(GLIB_VER).dll \
|
||||
sub-gmodule \
|
||||
sub-gthread \
|
||||
sub-gobject
|
||||
@ -35,9 +31,6 @@ all : \
|
||||
testgdate.exe \
|
||||
testgdateparser.exe
|
||||
|
||||
install : all
|
||||
copy glib-$(GLIB_VER).dll $(BIN)
|
||||
|
||||
glib_OBJECTS = \
|
||||
garray.obj \
|
||||
gasyncqueue.obj \
|
||||
|
43
gutils.c
43
gutils.c
@ -67,6 +67,7 @@
|
||||
#ifdef G_OS_WIN32
|
||||
# define STRICT /* Strict typing, please */
|
||||
# include <windows.h>
|
||||
# undef STRICT
|
||||
# include <ctype.h>
|
||||
# include <direct.h>
|
||||
#endif /* G_OS_WIN32 */
|
||||
@ -173,12 +174,19 @@ g_find_program_in_path (const gchar *program)
|
||||
{
|
||||
const gchar *path, *p;
|
||||
gchar *name, *freeme;
|
||||
#ifdef G_OS_WIN32
|
||||
gchar *path_tmp;
|
||||
#endif
|
||||
size_t len;
|
||||
size_t pathlen;
|
||||
|
||||
/* On Win32, should we try appending .exe, .com, and the other
|
||||
* components of %PATHEXT% ?
|
||||
*/
|
||||
|
||||
g_return_val_if_fail (program != NULL, NULL);
|
||||
|
||||
if (*program == '/')
|
||||
if (g_path_is_absolute (program))
|
||||
{
|
||||
if (g_file_test (program, G_FILE_TEST_IS_EXECUTABLE))
|
||||
return g_strdup (program);
|
||||
@ -187,6 +195,7 @@ g_find_program_in_path (const gchar *program)
|
||||
}
|
||||
|
||||
path = g_getenv ("PATH");
|
||||
#ifdef G_OS_UNIX
|
||||
if (path == NULL)
|
||||
{
|
||||
/* There is no `PATH' in the environment. The default
|
||||
@ -201,6 +210,23 @@ g_find_program_in_path (const gchar *program)
|
||||
|
||||
path = "/bin:/usr/bin:.";
|
||||
}
|
||||
#else
|
||||
{
|
||||
gchar *tmp;
|
||||
gchar moddir[PATH_MAX], sysdir[PATH_MAX], windir[PATH_MAX];
|
||||
|
||||
GetModuleFileName (NULL, moddir, sizeof (moddir));
|
||||
tmp = g_path_get_dirname (moddir);
|
||||
GetSystemDirectory (sysdir, sizeof (sysdir));
|
||||
GetWindowsDirectory (windir, sizeof (windir));
|
||||
path_tmp = g_strconcat (tmp, ";.;", sysdir, ";", windir,
|
||||
(path != NULL ? ";" : NULL),
|
||||
(path != NULL ? path : NULL),
|
||||
NULL);
|
||||
g_free (tmp);
|
||||
path = path_tmp;
|
||||
}
|
||||
#endif
|
||||
|
||||
len = strlen (program) + 1;
|
||||
pathlen = strlen (path);
|
||||
@ -210,7 +236,7 @@ g_find_program_in_path (const gchar *program)
|
||||
memcpy (name + pathlen + 1, program, len);
|
||||
name = name + pathlen;
|
||||
/* And add the slash before the filename */
|
||||
*name = '/';
|
||||
*name = G_DIR_SEPARATOR;
|
||||
|
||||
p = path;
|
||||
do
|
||||
@ -218,7 +244,7 @@ g_find_program_in_path (const gchar *program)
|
||||
char *startp;
|
||||
|
||||
path = p;
|
||||
p = my_strchrnul (path, ':');
|
||||
p = my_strchrnul (path, G_SEARCHPATH_SEPARATOR);
|
||||
|
||||
if (p == path)
|
||||
/* Two adjacent colons, or a colon at the beginning or the end
|
||||
@ -233,12 +259,18 @@ g_find_program_in_path (const gchar *program)
|
||||
gchar *ret;
|
||||
ret = g_strdup (startp);
|
||||
g_free (freeme);
|
||||
#ifdef G_OS_WIN32
|
||||
g_free (path_tmp);
|
||||
#endif
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
while (*p++ != '\0');
|
||||
|
||||
g_free (freeme);
|
||||
#ifdef G_OS_WIN32
|
||||
g_free (path_tmp);
|
||||
#endif
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@ -461,9 +493,6 @@ g_path_is_absolute (const gchar *file_name)
|
||||
#ifdef G_OS_WIN32
|
||||
if (isalpha (file_name[0]) && file_name[1] == ':' && file_name[2] == G_DIR_SEPARATOR)
|
||||
return TRUE;
|
||||
|
||||
if (file_name[0] == G_DIR_SEPARATOR && file_name[1] == G_DIR_SEPARATOR)
|
||||
return TRUE;
|
||||
#endif
|
||||
|
||||
return FALSE;
|
||||
@ -735,7 +764,7 @@ g_get_any_init (void)
|
||||
{
|
||||
/* USERPROFILE is probably the closest equivalent to $HOME? */
|
||||
if (getenv ("USERPROFILE") != NULL)
|
||||
g_home_dir = g_getenv ("USERPROFILE");
|
||||
g_home_dir = g_strdup (g_getenv ("USERPROFILE"));
|
||||
}
|
||||
|
||||
if (!g_home_dir)
|
||||
|
@ -1,10 +1,6 @@
|
||||
## Makefile for building the GLib dlls with Microsoft C
|
||||
## Use: nmake -f makefile.msc
|
||||
|
||||
# Change this to wherever you want to install the DLLs. This directory
|
||||
# should be in your PATH.
|
||||
BIN = C:\bin
|
||||
|
||||
TOP = ..
|
||||
|
||||
!INCLUDE build\win32\make.msc
|
||||
@ -21,7 +17,7 @@ DEFINES = -DHAVE_CONFIG_H -DGLIB_COMPILATION -DG_LOG_DOMAIN=g_log_domain_glib -D
|
||||
DEPCFLAGS = $(INTL_CFLAGS) $(LIBICONV_CFLAGS)
|
||||
|
||||
DLLS_TO_BUILD = \
|
||||
glib-$(GLIB_VER).dll \
|
||||
glib-$(GLIB_VER).dll \
|
||||
sub-gmodule \
|
||||
sub-gthread \
|
||||
sub-gobject
|
||||
@ -35,9 +31,6 @@ all : \
|
||||
testgdate.exe \
|
||||
testgdateparser.exe
|
||||
|
||||
install : all
|
||||
copy glib-$(GLIB_VER).dll $(BIN)
|
||||
|
||||
glib_OBJECTS = \
|
||||
garray.obj \
|
||||
gasyncqueue.obj \
|
||||
|
@ -1165,6 +1165,10 @@ main (int argc,
|
||||
g_win32_get_package_installation_subdirectory (NULL, glib_dll, "locale"));
|
||||
g_print ("GTK+ 2.0 installation directory, if available: %s\n",
|
||||
g_win32_get_package_installation_directory ("gtk20", NULL));
|
||||
|
||||
g_print ("found more.com as %s\n", g_find_program_in_path ("more.com"));
|
||||
g_print ("found regedit.exe as %s\n", g_find_program_in_path ("regedit.exe"));
|
||||
|
||||
#endif
|
||||
|
||||
g_print ("checking file functions...\n");
|
||||
|
@ -1165,6 +1165,10 @@ main (int argc,
|
||||
g_win32_get_package_installation_subdirectory (NULL, glib_dll, "locale"));
|
||||
g_print ("GTK+ 2.0 installation directory, if available: %s\n",
|
||||
g_win32_get_package_installation_directory ("gtk20", NULL));
|
||||
|
||||
g_print ("found more.com as %s\n", g_find_program_in_path ("more.com"));
|
||||
g_print ("found regedit.exe as %s\n", g_find_program_in_path ("regedit.exe"));
|
||||
|
||||
#endif
|
||||
|
||||
g_print ("checking file functions...\n");
|
||||
|
Loading…
Reference in New Issue
Block a user