368 Commits

Author SHA1 Message Date
Ryan Lortie
80730bc75c Rework GMutex and GCond APIs
Do a substantial rework of the GMutex and GCond APIs.

 - remove all of the macro indirection hackery which is no longer needed
   since we dropped support for switchable thread implementations

 - expose the structure types and add G_MUTEX_INIT and G_COND_INIT
   static initialiser macros

 - add g_mutex_init() and g_mutex_clear() for use when embedding GMutex
   into another structure type and do the same for GCond as well

 - avoid infinite recursion hazards by ensuring that neither GCond or
   GMutex ever calls back into any other part of GLib

 - substantially rework the Windows implementation of GCond and GMutex
   to use the SRWLock and CONDITION_VARIABLE APIs present on Windows
   2008/Vista and later, emulating these APIs on XP
2011-09-21 15:55:36 -04:00
Ryan Lortie
f1494c156d Clean up l10n threading stuff
Remove the explicit thread initialisation functions for g_get_charset(),
g_get_filename_charsets() and g_get_language_names().

Add a lock around one remaining case of access to libcharset (the other
2 cases already have the lock).

Do a proper g_once_init_enter() style initialisation for the GLib
gettext functions.

https://bugzilla.gnome.org/show_bug.cgi?id=658683
2011-09-09 19:50:55 -04:00
Matthias Clasen
1b28408b8b Spelling fixes
Spelling fixes in comments and docs, provided by
Kjartan Maraas in bug 657336.
2011-08-29 14:49:32 -04:00
Matthias Clasen
adc325fac0 Move version docs inline 2011-07-17 23:50:31 -04:00
Ryan Lortie
8073759f8c Remove all uses of G_CONST_RETURN
Just use 'const'.

https://bugzilla.gnome.org/show_bug.cgi?id=644611
2011-06-09 11:15:40 -04:00
Matthias Clasen
7648415a50 Move gutils docs inline 2011-06-08 23:44:39 -04:00
Giovanni Campagna
37c9775b82 gutils, gspawn: fix introspection annotations
Fix various (out) arguments, (allow-none) and (array zero-terminated=1)
for g_spawn_*() and some others.

Some additional fixes by Colin Walters <walters@verbum.org>

https://bugzilla.gnome.org/show_bug.cgi?id=646635
2011-06-07 17:13:15 -04:00
Colin Walters
de57755dbc g_get_user_data_dir(): Don't warn if XDG_RUNTIME_DIR isn't set
We have a meaningful fallback, and warning causes the tests to break.
2011-06-07 13:02:41 -04:00
Colin Walters
6af9dd5135 gutils.c: Annotation fixes 2011-05-31 13:25:09 -04:00
Emmanuele Bassi
08f0a31289 Revert "Remove all uses of G_CONST_RETURN"
This reverts commit 36741245cca56e979fe85e3de676fb3912058f2c.

The removal has not been discussed, except on Bugzilla:

https://bugzilla.gnome.org/show_bug.cgi?id=644611
2011-03-15 09:03:28 +00:00
Ryan Lortie
36741245cc Remove all uses of G_CONST_RETURN
Just use 'const'.
2011-03-15 01:32:22 -04:00
Owen W. Taylor
789b341eff Correct internal definition of C_()
* Since the GLib translations are lazily initialized, we need an
  internal wrapper for g_dpgettext() that does the initialization
  in the same way as glib_gettext()
* We need to use the glib domain defined by GETTEXT_PACKAGE
  rather than than the application's domain.

https://bugzilla.gnome.org/show_bug.cgi?id=644607
2011-03-12 21:10:06 -05:00
Tor Lillqvist
1158f9c171 Export _glib_get_locale_dir() as it is now used in gio, too 2011-02-20 01:30:51 +02:00
Matthias Clasen
cc5578fbd7 Make load_user_special_dirs() resistant to nonexistent dirs 2011-01-27 21:57:57 -05:00
Christian Persch
3d824065b8 Add g_get_locale_variants()
Make _g_compute_locale_variants() public as g_get_locale_variants().

Bug #635998.
2011-01-05 22:57:20 +01:00
Christian Persch
be8899bfe6 Make _g_compute_locale_variants return a char** directly
Bug #635998.
2011-01-05 22:49:21 +01:00
Matthias Clasen
02978fff17 Update NEWS 2010-11-29 01:16:02 -05:00
Ryan Lortie
ba9fccf71e g_get_user_runtime_dir(): New function
Get the value of the XDG_RUNTIME_DIR environment variable.
2010-11-06 17:35:10 -04:00
Tor Lillqvist
0940828418 Clarify docs for g_path_is_absolute() semantics on Windows 2010-11-04 22:18:42 +02:00
Ryan Lortie
29ce7385bb Add g_get_environ(): portable access to 'environ'
Return a copy of 'environ' on platforms where that is possible, or do
something else on other platforms.
2010-10-28 22:20:56 -04:00
Tor Lillqvist
9d80c36141 Use CSIDL_LOCAL_APPDATA on Windows
Make g_get_user_data_dir() return the CSIDL_LOCAL_APPDATA folder on
Windows, and not CSIDL_PERSONAL. On Windows 7, that corresponds to the
subfolders AppData\Local vs. Documents under the profile ("home")
folder. This matches what Qt does, for instance, and has been widely
requested.

Also make g_get_user_config_dir() return this and not the (roaming)
CSIDL_APPDATA folder. The reason for this change is that it would be
surprising and hard to justify if g_get_user_data_dir() returned the
local application data folder while g_get_user_config_dir() would
return the roaming one. Nothing in the function names or the XDG specs
suggests that any roaming vs. local dichotomy would be involved.

Document the new semantics and the fact that these two functions now
return the same directory on Windows.

Note that in reality, code that really truly wants to support Windows
as well as possible probably will not use these GLib functions anyway,
but Win32 APIs directly to be sure what it is doing...

Should hopefully satisfy complaints in bug #620710 and related bugs.
2010-10-18 14:43:21 +03:00
Tor Lillqvist
548ddd5fe9 Fix build on Windows and possibly other non-Linux platforms
Include glibconfig.h in files that test G_OS_WIN32. Include headers
for GLib APIs used conditionally where needed.
2010-09-06 15:57:32 +03:00
Matthias Clasen
f13d561211 More header inclusion cleanup 2010-09-05 00:23:03 -04:00
Tor Lillqvist
6ddef375c8 Recuce DLL hijack risk on Windows
Don't call LoadLibrary() on shell32.dll or kernel32.dll. kernel32.dll
is always loaded. Shell32.dll is also already loaded as glib links to
functions in it. So just call GetModuleHandle() on them.

For mlang.dll in win_iconv.c and winhttp.dll in gwinhttpvfs.c, always
try loading them from a complete path, from the Windows system
directory.

Use the "tool help" API to enumerate modules in gmodule-win32.c. It is
present in all Windows versions since Windows 2000, which is all we
support anyway. Thus no need to look that API up dynamically. Just
link to it normally. We can bin the fallback code that attempts to use
the psapi API.
2010-09-02 22:36:47 +03:00
Matthias Clasen
8803182f4a Guarantee that g_get_tmp_dir () doesn't return an empty string
If it does, g_file_open_tmp() would be in trouble. Pointed
out by Morten Welinder in bug 627969.
2010-08-25 20:04:45 -04:00
Ryan Lortie
2e53e50244 glib/: fully remove galias hacks 2010-07-07 19:34:35 -04:00
Tor Lillqvist
507c266c3b Plug memory leak on Windows
Intern the string returned from g_win32_getlocale() and then free it.
Fixes bug #621168.
2010-06-10 11:54:35 +03:00
Javier Jardón
a131beda54 [docs] Improve the g_get_system_config_dirs() docs.
The retrieved list of directories is XDG_CONFIG_DIRS,
Also mention the retrieved directory on Windows: CSIDL_COMMON_APPDATA
2010-06-06 05:26:38 +02:00
Javier Jardón
e08c7b86c4 [docs] Improve the g_get_system_data_dirs() docs.
The retrieved list of directories is XDG_DATA_DIRS
2010-06-06 05:15:22 +02:00
Javier Jardón
07777db60d [docs] Improve the g_get_user_cache_dir() docs
The retrieved directory is XDG_CACHE_HOME on UNIX platforms.
Also mention the retrieved directory on Windows: CSIDL_INTERNET_CACHE.
2010-06-06 05:05:15 +02:00
Javier Jardón
e40b5ae3ef [docs] Improve the g_get_user_data_dir() docs
The retrieved directory is XDG_DATA_HOME on UNIX platforms.
Also mention the retrieved directory on Windows: CSIDL_PERSONAL.
2010-06-06 04:57:46 +02:00
Javier Jardón
b2718ee71a [docs] Improve the g_get_user_config_dir() docs a bit
The retrieved directory is XDG_CONFIG_HOME on UNIX platforms.
Also mention the retrieved directory on Windows: CSIDL_APPDATA.
2010-06-05 18:40:07 +02:00
Matthias Clasen
7db8b92b97 Revert the g_set_prgname change
This change breaks our API and causes warnings from essentially all applications.
See bug 563627.
2009-12-21 09:16:32 -05:00
Sven Herzberg
3dab24828e make sure g_set_prgname() gets called only once
* glib/gutils.c: copy the call-once statement from g_set_application_name();
  Fixes Bug #563627: g_get_prgname() threadsafety
2009-10-23 16:23:46 +02:00
Alexander Larsson
91bdccff75 Add g_reload_user_special_dirs_cache (#541276)
This is useful for nautilus that changes the xdg-user-dirs files.
2009-06-15 13:18:22 +02:00
David Zeuthen
49dfb50afc Bug 580453 – Hash and equal functions for gint64 and gdouble 2009-04-27 13:27:44 -04:00
Tor Lillqvist
739a81e08a Bug 570501 - g_win32_get_system_data_dirs uses invalid conversion of
2009-02-23  Tor Lillqvist  <tml@novell.com>

	Bug 570501 - g_win32_get_system_data_dirs uses invalid conversion
	of function pointer to object pointer

	* glib/gutils.c (g_win32_get_system_data_dirs_for_module): Change
	the type of the function's parameter to be explicitly a function
	pointer.

	* glib/gutils.h (_g_win32_get_system_data_dirs): Modify
	declaration and the only caller, the inline
	_g_win32_get_system_data_dirs(), accordingly. Add comments
	pointing out these are internal GLib functions.


svn path=/trunk/; revision=7899
2009-02-23 09:52:48 +00:00
Behdad Esfahbod
5d5526c1a3 Bug 562639 – g_parse_debug_flags() parsing "help"
2008-11-28  Behdad Esfahbod  <behdad@gnome.org>

        Bug 562639 – g_parse_debug_flags() parsing "help"

        * glib/gutils.c (g_parse_debug_string): Print available keys if
        string is "help".


svn path=/trunk/; revision=7710
2008-11-29 01:40:38 +00:00
Matthias Clasen
6417df2a91 Bug 559110 – Do not include libintl.h after glibintl.h
2008-11-28  Matthias Clasen  <mclasen@redhat.com>

        Bug 559110 – Do not include libintl.h after glibintl.h

        * glib/glibintl.h: Define bind_textdomain_codeset in the DISABLE_NLS
        branch. Patch by Peter Kjellerstedt.

        * glib/gutil.c: Don't include libintl.h directly.


svn path=/trunk/; revision=7688
2008-11-28 06:24:51 +00:00
Tor Lillqvist
bc8e1dd8c1 glib/gutils.c (_glib_get_dll_directory) Be a bit less restrictive, look
2008-09-19  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (_glib_get_dll_directory)
	* glib/gspawn-win32.c (do_spawn_with_pipes): Be a bit less
	restrictive, look for the helper programs in the same folder where
	the GLib DLL is, not necessarily in a "bin" subfolder of the top
	GLib installation folder.


svn path=/trunk/; revision=7511
2008-09-19 10:20:41 +00:00
Matthias Clasen
11cc2e2aeb Fix up docs
svn path=/trunk/; revision=7424
2008-09-02 16:48:40 +00:00
Tor Lillqvist
80ecc30841 glib/glib.symbols glib/gconvert.c glib/gdir.c glib/gfileutils.c
2008-07-27  Tor Lillqvist  <tml@novell.com>

	* glib/glib.symbols
	* glib/gconvert.c
	* glib/gdir.c
	* glib/gfileutils.c
	* glib/giowin32.c
	* glib/gspawn-win32.c
	* glib/gutils.c
	* glib/gwin32.c: Bypass the Windows "ABI compatibility" symbols on
	_WIN64. As there hasn't been any widely deployed 64-bit Windows
	builds of the really old GLib (pre-2.8.1) versions those refer to,
	there is no need to have the "ABI compatibility" versions in the
	DLL.

	* glib/makegalias.pl: Handle #ifndef _WIN64: Just output it, too.


svn path=/trunk/; revision=7257
2008-07-27 17:15:16 +00:00
Behdad Esfahbod
e0916c3f54 Bug 503071 – Application direction changes to right to left even if
2008-06-11  Behdad Esfahbod  <behdad@gnome.org>

        Bug 503071 – Application direction changes to right to left even if
        theres no translation

        * glib/gi18n-lib.h:
        * glib/glib.symbols:
        * glib/gstrfuncs.h:
        * glib/gstrfuncs.c:
        Add new functions g_dgettext() and g_dngettext().

        * glib/gutils.c (glib_gettext):
        * glib/gfileutils.c (g_format_size_for_display):
        * glib/goption.c (dgettext_swapped):
        Use the new functions.


svn path=/trunk/; revision=7020
2008-06-11 23:37:49 +00:00
Matthias Clasen
12fe21210e Improve the docs
svn path=/trunk/; revision=7003
2008-06-11 16:17:56 +00:00
14:31:18 Tim Janik
8fb03be5a9 Bug 503071 - Application direction changes to right to left even if theres
2008-05-20 14:31:18  Tim Janik  <timj@imendio.com>

        * reverted recent unapproved changes by Yair Hershkovitz, regarding:
        Bug 503071 - Application direction changes to right to left even if theres no translation.



svn path=/trunk/; revision=6919
2008-05-20 13:03:15 +00:00
Tor Lillqvist
e9f4abe46c Bug 530457 - G_USER_DIRECTORY_DOWNLOAD folder improperly mapped
2008-05-12  Tor Lillqvist  <tml@novell.com>

	Bug 530457 - G_USER_DIRECTORY_DOWNLOAD folder improperly mapped

	* glib/gutils.c (load_user_special_dirs): When running on Vista or
	later, use SHGetKnownFolderPath() to get the FOLDERID_Downloads
	folder for G_USER_DIRECTORY_DOWNLOAD, and FOLDERID_Public for
	G_USER_DIRECTORY_PUBLIC_SHARE.


svn path=/trunk/; revision=6883
2008-05-12 06:58:50 +00:00
Yair Hershkovitz
7ab77ec9cd Bug 503071 - Application direction changes to right to left even if theres
2008-05-11  Yair Hershkovitz  <yairhr@gmail.com>

        Bug 503071 - Application direction changes to right to left even if
        theres no translation. 

        * glib/gi18n.c: g_i18n_init() for initializing the glib i18n,
        checking if a translation is available for the calling app. wrappers for
        gettext, dgettext and dpgettext to check first if the application
        should be translated.

        * glib/gi18n.h: symbol declaration for gettext wrappers.

        * glib/gi18n-lib.h: include gi18n.h instead of libintl.h.

        * glib/gstrfuncs.c: moved g_dpgettext() to glib/gi18n.c.

        * glib/gutils.c: use g_dgettext() instead of dgettext().

        * glib/glibintl.h: include gi18n.h.

        * glib.symbols: added gettext wrappers.

        * glib/Makefile.am: added gi18n.c.


svn path=/trunk/; revision=6882
2008-05-11 09:34:29 +00:00
Tor Lillqvist
285b31e7a5 Don't enforce shared library build only on Windows. It might well make
2008-04-03  Tor Lillqvist  <tml@novell.com>

	* configure.in: Don't enforce shared library build only on
	Windows. It might well make sense to build static libraries in
	some use cases.

	* glib/gutils.c: Don't compile the DllMain if building libglib
	statically. Also in that case don't return NULL from
	_glib_get_installation_directory(), but return the installation
	directory of the program's .exe file.


svn path=/trunk/; revision=6818
2008-04-03 20:17:15 +00:00
Matthias Clasen
f0c679e3bf Simple fixes to help building GLib on embedded systems without NLS.
2008-03-30  Matthias Clasen  <mclasen@redhat.com>

        * glib/glibintl.h:
        * glib/gstrfuncs.c:
        * glib/gutils.c: Simple fixes to help building GLib on
        embedded systems without NLS.  (#524350, Peter Kjellerstedt)

svn path=/trunk/; revision=6779
2008-03-31 03:52:57 +00:00
Tor Lillqvist
17640e78d3 New internal function.
2008-02-24  Tor Lillqvist  <tml@novell.com>

	* glib/gutils.c (_glib_get_installation_directory): New internal function.

	* glib/gspawn-win32.c: When spawning the helper process, use an
	explicit full path. (#518292)

	* glib/gspawn-win32.c
	* glib/gspawn-win32-helper.c: Fix race condition when using the
	helper process: When the helper process writes the handle of the
	actual started user process to the parent process, it must be
	duplicated in the parent process with DuplicateHandle() so that it
	is a valid handle in that process. However, if the helper process
	has happened to exit before the DuplicateHandle() call, the
	duplication will fail. Thus we must synchronise the helper
	process's exit. Use another pipe for this.

	Take care not to inherit the writing end of this pipe to the
	helper process. Also, in the helper process, take care not to
	inherit either of the pipes used for communication with the parent
	process to the started user process.


svn path=/trunk/; revision=6575
2008-02-24 21:15:47 +00:00