252 Commits

Author SHA1 Message Date
Tor Lillqvist
e087f8c43c Add definitions for more CSIDL_* constants in case missing from headers.
2007-06-06  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c: Add definitions for more CSIDL_* constants in
	case missing from headers. Use CSIDL_PERSONAL instead of
	CSIDL_MYDOCUMENTS as CSIDL_MYDOCUMENTS seems to be a new thing
	that doesn't work in XP SP2 even.


svn path=/trunk/; revision=5544
2007-06-06 19:13:45 +00:00
Matthias Clasen
f6f9877b50 Fall back to $HOME/Desktop for the DESKTOP directory, like
2007-06-06  Matthias Clasen  <mclasen@redhat.com>

        * glib/gutils.c (g_get_user_special_dir): Fall back to
        $HOME/Desktop for the DESKTOP directory, like
        xdg_user_dir_lookup() does.


svn path=/trunk/; revision=5543
2007-06-06 19:05:53 +00:00
Matthias Clasen
bcc342b81b Don't deadlock when running with threads. (#444121, Christian Persch)
2007-06-05  Matthias Clasen  <mclasen@redhat.com>

        * glib/gutils.c (g_get_user_special_dir): Don't deadlock
        when running with threads.  (#444121, Christian Persch)


svn path=/trunk/; revision=5535
2007-06-05 17:36:17 +00:00
Matthias Clasen
d154485bc7 Add support for a number of special directories, as defined by the
2007-06-04  Matthias Clasen  <mclasen@redhat.com>

        Add support for a number of special directories, as
        defined by the xdg-user-dirs specification.  (#432651,
        Bastien Nocera, Emmanuele Bassi, Michael Natterer)

        * glib/glib.symbols:
        * glib/gutils.[hc]: Add the GUserDirectory enum and
        g_get_user_special_dir(), with implementations based
        on the xdg-user-dirs spec and on native interfaces
        for Win32 and Carbon.

        * configure.in: Add Carbon checks.

        * tests/tetsglib.c: Test g_get_user_special_dir().


svn path=/trunk/; revision=5528
2007-06-04 14:54:49 +00:00
Matthias Clasen
8187230ab4 Improve docs
svn path=/trunk/; revision=5251
2007-01-12 17:54:13 +00:00
Tor Lillqvist
98d5dea18a : Use only the wide character API here, too.
2006-12-28  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (get_windows_directory_root): : Use only the wide
	character API here, too.
2006-12-28 15:47:42 +00:00
Matthias Clasen
98d552e0cd Consistently use gsize rather than size_t. (#333310, Morten Welinder)
2006-12-27  Matthias Clasen  <mclasen@redhat.com>

        * glib/gconvert.[hc]:
        * glib/gfileutils.c:
        * glib/giochannel.c:
        * glib/goption.c:
        * glib/gspawn.c:
        * glib/gunicollate.c:
        * glib/gutils.c:
        * tests/timeloop-basic.c:
        Consistently use gsize rather than size_t.  (#333310,
        Morten Welinder)
2006-12-28 04:48:06 +00:00
Tor Lillqvist
f8f4e16eb9 Correct C99ism (mixed declarations and code) in Win32 ifdef branch.
2006-09-02  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_get_any_init_do): Correct C99ism (mixed
	declarations and code) in Win32 ifdef branch. (#353903, Mike
	Edenfield)
2006-09-01 23:32:05 +00:00
Tor Lillqvist
da422c0060 Remove support for Windows 9x/ME, as will be done also in Pango and GTK+.
2006-08-29  Tor Lillqvist  <tml@novell.com>

	Remove support for Windows 9x/ME, as will be done also in Pango
	and GTK+. GTK+ hasn't worked on Win9x since 2.6 or 2.8 anyway, so
	it's pretty pointless to keep the Win9x code in here either. If
	somebody is interested, the code can always be found in older GLib
	versions, and in CVS.

	* glib/gdir.c
	* glib/gfileutils.c
	* glib/gspawn-win32-helper.c
	* glib/gspawn-win32.c
	* glib/gstdio.c
	* glib/gutils.c
	* glib/gwin32.c
	* glib/gwin32.h: Remove the G_WIN32_IS_NT_BASED() and
	G_WIN32_HAVE_WIDECHAR_API() tests and their false (Win9x)
	branches, and any variables or static functions used only by the
	Win9x branches.

	* glib/gwin32.c (g_win32_windows_version_init): Call g_error() if
	run on Win9x.
2006-08-29 22:45:00 +00:00
Behdad Esfahbod
4e866367a7 When matching debug flag keys, ignore case and accept any of comma, colon,
2006-07-06  Behdad Esfahbod  <behdad@gnome.org>

        * glib/gutils.c (g_parse_debug_string): When matching debug flag keys,
        ignore case and accept any of comma, colon, semicolon, space, and tab
        as separators.  Also, match dash with underscore.
2006-07-06 20:30:16 +00:00
Tor Lillqvist
fdc1c28a5e Add Windows notes to doc comment.
2006-06-14  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_listenv): Add Windows notes to doc comment.
2006-06-13 22:46:52 +00:00
Sebastian Wilhelmi
e4f8f3b95c Renamed to glib/gthreadprivate.h and moved system thread identifier
2006-05-09  Sebastian Wilhelmi  <wilhelmi@google.com>

	* glib/gthreadinit.h: Renamed to glib/gthreadprivate.h and moved
	system thread identifier comparision and assignment macros from
	glib/gthread.c to glib/gthreadprivate.h.

	* glib/Makefile.am, glib/gatomic.c, glib/gconvert.c, glib/gmain.c,
	glib/gmem.c, glib/gmessages.c, glib/grand.c, glib/gslice.c,
	glib/gthread.c, glib/gutils.c, gthread/gthread-impl.c: Use
	glib/gthreadprivate.h instead of glib/gthreadinit.h.

	* gthread/gthread-impl.c: Use GSystemThread instead of GThread for
	owner determination. This fixes #311043 and is mostly modeled
	after the patch from jylefort@FreeBSD.org.
2006-05-10 00:44:50 +00:00
Matthias Clasen
9e58246669 Don't read past the end of the string. (#334471, Morten Welinder)
2006-03-14  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (g_parse_debug_string): Don't read past the
	end of the string.  (#334471, Morten Welinder)
2006-03-14 17:56:27 +00:00
Tor Lillqvist
5a2950d041 Separate implementation on Win32: Use the wide character API on NT-based
2006-03-01  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_listenv): Separate implementation on Win32: Use
	the wide character API on NT-based Windows. Return UTF-8 strings.

	* glib/glib.symbols: Don't mark g_listenv as PRIVATE, as that
	meant it wasn't present in the import library. PRIVATE is used
	only for the backwards-compatibility DLL ABI stability hacks.
2006-03-01 14:18:55 +00:00
Tim Janik
35db6815fd wiped out all the wonderfull G_OS_WIN32 code i wrote ;-[) after tml told
Mon Jan 23 17:30:33 2006  Tim Janik  <timj@imendio.com>

        * glib/gutils.c (_g_getenv_nomalloc): wiped out all the wonderfull
        G_OS_WIN32 code i wrote ;-[) after tml told me windows has getenv()
        as well.
2006-01-23 16:32:22 +00:00
Tim Janik
75db578288 initialize GSlice config from G_SLICE environemtn variable. we support
Mon Jan 23 16:46:20 2006  Tim Janik  <timj@imendio.com>

        * glib/gslice.c (slice_config_init): initialize GSlice config from
        G_SLICE environemtn variable. we support G_SLICE=always-malloc
        currently, which forces all g_slice_*() allocations to use the system
        malloc instead.

        * glib/gutils.c:
        g_parse_debug_string(): added a note about not using g_malloc() here.
        _g_getenv_nomalloc(): getenv() variant that doesn't use g_malloc or
        g_slice. contains only guesswork in the WIN32 branch.
2006-01-23 15:51:06 +00:00
Matthias Clasen
fd73fead6f Fix a copy-and-paste error in the docs. (#325273, Declan Naughton)
2005-12-29  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (glib_check_version): Fix a copy-and-paste error
	in the docs.  (#325273, Declan Naughton)
2005-12-30 02:08:02 +00:00
Matthias Clasen
0b5560da8b Add versioned deprecation information 2005-12-05 15:38:54 +00:00
Matthias Clasen
8529c47126 Handle multiple user names with the same UID better. (#319535, Laszlo
2005-12-04  Matthias Clasen  <mclasen@redhat.com>

	Handle multiple user names with the same UID better.
	(#319535, Laszlo Peter)

	* glib/gutils.c (g_get_any_init_do): When determining user
	data, first look up $LOGNAME. If the UID doesn't match
	getuid(), fall back to the current behaviour of looking
	up the user data based on getuid().
2005-12-04 07:00:50 +00:00
Tor Lillqvist
130763338c Wrapping atexit() is a bad idea on Windows, where the EXE and each DLL
2005-08-31  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.h: Wrapping atexit() is a bad idea on Windows, where
	the EXE and each DLL have their own atexit function chains.

	#define g_atexit as atexit instead. This means it has a
	better chance of doing what the caller wants. For instance,
	gtkhtml calls g_atexit() registering a function in gtkhtml
	itself. This caused a crash when g_atexit() was implemented as a
	function in the GLib DLL. The gtkhtml DLL was already unloaded by
	the time the GLib DLL got unloaded.

	* glib/gutils.c: #undef the #define mentioned above, to also get a
	real g_atexit() into the DLL for backward compatibility. Document
	the Windows behaviour of g_atexit(), and document the varying ways
	atexit() can behave in the context of dynamically loaded modules
	on Unix.
2005-08-31 21:02:47 +00:00
Matthias Clasen
4adde8fdca Fix the crt_externs.h include 2005-08-24 03:11:45 +00:00
Matthias Clasen
a1ab92582c Check for crt_externs.h and _NSGetEnviron.
2005-08-17  Matthias Clasen  <mclasen@redhat.com>

	* configure.in: Check for crt_externs.h and _NSGetEnviron.

	* glib/gutils.c: On Darwin, include crt-externs.h and
	define environ using _NSGetEnviron().  (#313731)
2005-08-17 18:31:08 +00:00
Stepan Kasal
63828e25ec Move the body of the big if... (g_get_any_init_do): ... to this new
2005-08-16  Stepan Kasal  <kasal@ucw.cz>

	* glib/gutils.c (g_get_any_init): Move the body of the big if...
	(g_get_any_init_do): ... to this new function.
	(g_get_any_init): Declare as inline.
	(g_get_any_init_locked): New inline function, does the locking.
	Make use of these two throughout the code.
2005-08-17 12:00:51 +00:00
Tor Lillqvist
535939a144 Use "localhost" as fallback for g_get_host_name(), not "unknown".
2005-08-11  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_get_any_init): Use "localhost" as fallback for
	g_get_host_name(), not "unknown".
2005-08-10 21:13:29 +00:00
Matthias Clasen
f3d4fb75b8 Initialize variables to not make gcc nervous.
2005-08-08  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (_g_compute_locale_variants): Initialize
	variables to not make gcc nervous.
2005-08-09 02:45:20 +00:00
Ross Burton
fada30c956 Small doc updates 2005-08-03 20:24:18 +00:00
Matthias Clasen
35425ca9d6 Ignore anomalous environment entries which are not of the form
2005-07-10  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (g_listenv): Ignore anomalous environment
	entries which are not of the form variable=value.  (#309859,
	Morten Welinder)
2005-07-10 04:44:27 +00:00
Matthias Clasen
b78a0792a4 Apply a patch which may make GLib work on BeOS again. (#309157, Kian
2005-06-30  Matthias Clasen  <mclasen@redhat.com>

	Apply a patch which may make GLib work on BeOS again.
	(#309157, Kian Duffy)

	* glib/gmain.c: Update the BeOS includes.

	* glib/gstdio.c:
	* glib/gutils.c (g_find_program_in_path):
	* glib/gbacktrace.c (g_on_error_stack_trace): Use the UNIX
	implementation on BeOS, as well.

	* configure.in: Don't put glib 1.0 into G_MODULE_LIBS, even
	on BeOS.
2005-06-30 19:43:48 +00:00
Tor Lillqvist
adb066fa11 Add Since: 2.8 to g_get_host_name(). 2005-06-22 09:02:41 +00:00
Tor Lillqvist
477989f555 New function. Returns the machine's name, or one of its names. Document
2005-06-22  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_get_host_name): New function. Returns the
	machine's name, or one of its names. Document that it is
	best-effort only, and not guaranteed to be unique or anything.
	(g_get_any_init): Get the host name here. On Unix use
	gethostname(), on Windows use GetComputerName(). (#5200)

	* glib/gutils.h
	* glib/glib.symbols: Add here, too.

	* tests/testglib.c: Test it.
2005-06-22 08:54:28 +00:00
Tor Lillqvist
b8d34f6609 New helper function on Win32, returns the root of the drive (or possibly
2005-06-08  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (get_windows_directory_root): New helper function
	on Win32, returns the root of the drive (or possibly share) where
	the Windows directory is. (In the case of Terminal Server sessions
	the Windows directory is a per-user folder.)
	(g_get_any_init): Use get_windows_directory_root() as last resort
	for both temp directory and home directory. g_get_home_dir() now
	never returns NULL on Win32. Don't look at HOMEDRIVE and
	HOMEPATH. HOME, USERPROFILE, CSIDL_PROFILE and Windows directory
	drive root should be enough.
2005-06-08 20:03:12 +00:00
Matthias Clasen
6bdf0d9a44 Fix some typos 2005-05-01 21:40:46 +00:00
Tor Lillqvist
dc11b4370f Don't call g_set_error() unless the GError pointer is non-NULL. This
2005-04-27  Tor Lillqvist  <tml@novell.com>

	* glib/gconvert.c (open_converter, g_convert_with_iconv): Don't
	call g_set_error() unless the GError pointer is non-NULL. This
	avoids infinite recursion problems in certain rare situations on
	Windows, when g_locale_from_utf8() is called from
	_glib_get_locale_dir() after the change below. It's the
	_glib_gettext() calls to translate error messages that are
	parameters to g_set_error() that cause the recursion, not
	g_set_error() itself.

	* glib/gwin32.c (g_win32_locale_filename_from_utf8): New
	function. Converts a filename to the system codepage, and if a
	straight conversion isn't possible (because the filename contains
	characters not in the system codepage), try looking up the
	filename (which should refer to an existing file for this to
	succeed) with short (8.3) pathname components.

	* glib/gutils.c (_glib_get_locale_dir): No need to cache the
	result, this function is normally called only once. Return the
	path to the locale directory in system codepage, not UTF-8. The
	path is passed to bindtextdomain(), which doesn't use UTF-8 file
	names. Use g_win32_locale_filename_from_utf8(). (#301772)

	Don't do run-time lookup of message catalog directory on
	Cygwin. Cygwin is supposed to look and feel like Unix, and on Unix
	we use paths fixed at configure time.
2005-04-27 09:50:09 +00:00
Tor Lillqvist
853114e68b Include <process.h> on Win32 for getpid(). (#173094)
2005-04-09  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c: Include <process.h> on Win32 for getpid(). (#173094)
2005-04-09 01:21:29 +00:00
Tor Lillqvist
5a88294fc3 Improve g_get_system_data_dirs() on Windows. A library that calls
2005-04-08  Tor Lillqvist  <tml@novell.com>

	Improve g_get_system_data_dirs() on Windows. A library that calls
	g_get_system_data_dirs() might be installed in a different
	top-level prefix than GLib or the application being run.

	* glib/gutils.h (g_win32_get_system_data_dirs): New static
	function defined in this header. Calls
	g_win32_get_system_data_dirs_for_module() passing the address of
	itself as parameter. g_get_system_data_dirs() is #defined as this
	function.

	* glib/gutils.c (g_win32_get_system_data_dirs_for_module): New
	function. If the address parameter is non-NULL, the corresponding
	module's installation location is used for one of the returned
	path names, in addition to the COMMON_APPDATA, COMMON_DOCUMENTS,
	glib top-level and application top-level folders.
	(g_get_system_data_dirs): Now just for backward compatibility on
	Win32. Just call g_win32_get_system_data_dirs_for_module(NULL).

	* glib/glib.symbols: Add g_win32_get_system_data_dirs_for_module.
2005-04-08 12:03:16 +00:00
Tor Lillqvist
30942cba28 Not used on Windows. (unalias_lang): Don't do anything on Windows, there
2005-04-08  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (read_aliases): Not used on Windows.
	(unalias_lang): Don't do anything on Windows, there is no
	/usr/share/locale/locale.alias file..
2005-04-08 06:48:17 +00:00
5
224e0b76f6 Declare glib_top_share_dir and exe_top_share_dir only in G_OS_WIN32.
Thu Apr  7 22:51:15 2005  <yosh@gimp.org>

        * glib/gutils.c (g_get_system_data_dirs): Declare glib_top_share_dir
        and exe_top_share_dir only in G_OS_WIN32.
2005-04-08 05:52:20 +00:00
Tor Lillqvist
93fc6a6c1f After investigating more closely the actual use cases of this function, I
2005-04-08  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_get_system_data_dirs): After investigating more
	closely the actual use cases of this function, I understand better
	what it should do. In addition to the Windows COMMON_APPDATA and
	COMMON_DOCUMENTS folders, also return the "share" subfolders of
	GLib's installation location and the application .exe's
	installation location, hoping that either matches what the
	function's caller is looking for.
2005-04-08 00:40:02 +00:00
Tor Lillqvist
6e51f47e13 [Win32] Fix corner case bug when environment variable value is exactly one
2005-03-23  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_getenv): [Win32] Fix corner case bug when
	environment variable value is exactly one character.
2005-03-23 14:53:35 +00:00
Tor Lillqvist
398008dac5 glib/gmessages.c (g_log_default_handler) Move the Win32 code that asks the
2005-03-20  Tor Lillqvist  <tml@novell.com>

	* glib/gmessages.c (g_log_default_handler)
	* glib/gutils.c (g_get_prgname): Move the Win32 code that asks the
	program name from the system to g_get_prgname(). Do output the pid
	also on Win32 (useful in case there are several instances of the
	same program running).
2005-03-20 10:52:38 +00:00
Matthias Clasen
608a31b98e Make PLT-reduction work with gcc4, and don't include everything in
2005-03-13  Matthias Clasen  <mclasen@redhat.com>

	Make PLT-reduction work with gcc4, and don't include
	everything in galias.h:

	* glib/glib.symbols: Group symbols by header and source file.
	* glib/makegalias.pl: Protect definitions by the same
	preprocessor symbols used to guard the headers. Move
	the alias declarations to a separate file which is
	produced when calling makegalias.pl -def
	* glib/Makefile.am (galiasdef.c): Add a rule to generate this
	file.
	* glib/*.c: Include galias.h after the other GLib headers,
	include galiasdef.c at the bottom.
2005-03-14 04:26:57 +00:00
Tor Lillqvist
1607e3f1d0 [Win32] Don't leak return value from get_special_folder(). (#169348,
2005-03-09  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (g_get_user_data_dir, g_get_user_config_dir,
	g_get_user_cache_dir, g_get_system_data_dirs,
	g_get_system_config_dirs): [Win32] Don't leak return value from
	get_special_folder(). (#169348, Daniel Atallah) Guard against
	g_home_dir being NULL, use g_tmp_dir/g_user_name in that case.
2005-03-09 02:08:34 +00:00
Matthias Clasen
44c788a9d0 Mark the last paragraph of the docs as Windows-specific. (#169433)
2005-03-07  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (g_find_program_in_path): Mark the last
	paragraph of the docs as Windows-specific.  (#169433)
2005-03-07 13:49:24 +00:00
Matthias Clasen
f18cab0ce3 New function to list all environment variables. (#166327, Hans Petter
2005-02-07  Matthias Clasen  <mclasen@redhat.com>

	* glib/glib.symbols:
	* glib/gutils.h:
	* glib/gutils.c (g_listenv): New function to list all
	environment variables.  (#166327, Hans Petter Jansson)
2005-02-08 04:28:31 +00:00
Matthias Clasen
5a866843df Move doc comments inline.
2005-02-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c: Move doc comments inline.

	* glib/ghash.h: Adjust some argument names.

	* configure.in: Give meaningful names to g_memmove()
	arguments.
2005-02-02 06:07:14 +00:00
Matthias Clasen
f0630a9106 Don't return directories. (#160738, Tommi Komulainen)
2005-01-03  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (g_find_program_in_path): Don't return
	directories.  (#160738, Tommi Komulainen)
2005-01-03 19:57:20 +00:00
Matthias Clasen
59e5059f05 Clarify the docs. (#162747, Crispin Flowerday)
2005-01-02  Matthias Clasen  <mclasen@redhat.com>

	* glib/gutils.c (g_setenv, g_unsetenv): Clarify the
	docs.  (#162747, Crispin Flowerday)
2005-01-03 04:21:24 +00:00
Tor Lillqvist
66f109711a Make the g_getenv() ABI backward compatibility wrapper more robust.
2005-01-01  Tor Lillqvist  <tml@iki.fi>

	* glib/gutils.c: Make the g_getenv() ABI backward compatibility
	wrapper more robust.
2005-01-01 16:55:10 +00:00
Tor Lillqvist
714887d0fa glib/glib.symbols glib/gutils.h Make also g_getenv(), g_setenv(),
2005-01-01  Tor Lillqvist  <tml@iki.fi>

	* glib/glib.symbols
	* glib/gutils.h
	* glib/gutils.c: Make also g_getenv(), g_setenv(), g_unsetenv()
	and g_find_program_in_path() take and return UTF-8 strings on
	Win32. Implement DLL ABI backward compatility for them, too. Move
	all the DLL ABI stability wrappers to the end of the file. Use
	wide character API when available in inner_find_program_in_path().

	* glib/gfileutils.c: With the UTF-8ness of g_getenv() above, just
	use g_getenv() to get PATHEXT. (Yeah, it's probably overdoing it
	to consider somebody actually having anything else than ASCII
	in PATHEXT, but...)
2005-01-01 02:09:51 +00:00
Tor Lillqvist
ae9d96865d Use GetCurrentDirectory() directly for simpler buffer length management. I
2004-12-30  Tor Lillqvist  <tml@iki.fi>

	* glib/gutils.c (g_get_current_dir): Use GetCurrentDirectory()
	directly for simpler buffer length management. I don't trust
	getcwd() getting it right all the time.
2004-12-30 17:48:23 +00:00