2008-09-25 Tor Lillqvist <tml@novell.com>
Bug 553820 - gpoll.c: undeclared identifier
* glib/gmain.c
* glib/gpoll.c: Make the g_poll() function non-static also on
Windows. Prefix an underscore to the g_main_poll_debug variable
and make it non-static in gmain.c so that it can be used in
gpoll.c. Add back missing variable declaration.
svn path=/trunk/; revision=7542
2008-09-25 Tor Lillqvist <tml@novell.com>
* glib/gspawn-win32.c (do_spawn_with_pipes) (do_spawn_directly):
Just ignore the child_setup function, never call it. The is no
situation in which it could be useful on Windows. Do print a
warning, like before.
* glib/gspawn.c (g_spawn_async_with_pipes): Corresponding change
in documentation.
svn path=/trunk/; revision=7540
2008-09-24 Sven Herzberg <sven@imendio.com>
Be a little more explcit in the docs. Includes Owen's requested
changes.
* glib/gmain.c: improved documentation for g_source_attach() and
g_source_destroy()
svn path=/trunk/; revision=7539
2008-09-23 Michael Natterer <mitch@imendio.com>
* glib/glib.h: #include <glib/gpoll.h>
* glib/gpoll.h: #error out if gpoll.h is included directly.
* glib/gpoll.c: remove trailing whitespace.
svn path=/trunk/; revision=7537
* glib/gpoll.c (g_poll): Move this out of gmain.c and make it part
of the public API. (Part of Bug 505361 - gunixinputstream.c
assumes poll() available.)
svn path=/trunk/; revision=7535
2008-09-23 Tor Lillqvist <tml@novell.com>
* glib/gmain.c (poll_rest) [Win32]: Fix embarrassing bug: I was
passing an incorrect third parameter to memmove(), had forgotten
to multiply by the size of the table entry. Just use a for loop
instead, clearer. Odd I didn't notice when testing this code.
svn path=/trunk/; revision=7533
2008-09-19 Hans Petter Jansson <hpj@novell.com>
Rewrite most of GHashTable to use open addressing with quadratic
probing instead of chaining. This has the potential to reduce memory
fragmentation significantly, while being slightly faster due to
better locality and no need to call alloc/free functions for nodes.
Benchmarks suggest it also uses less memory overall.
* glib/ghash.c (prime_mod): Table of suitable primes for
initial-probe distribution.
(g_hash_table_set_shift): New function.
(g_hash_table_find_closest_shift): New function.
(g_hash_table_set_shift_from_size): New function.
(g_hash_table_lookup_node_for_insertion): New function.
(g_hash_table_lookup_node): Rewritten to return node index instead of
pointer, use quadratic probe on flat table, and not return insertion
data. The latter saves some computation for read-only lookups.
(g_hash_table_remove_node): Rewrite to take a pointer directly to the
node structure to remove, and clear that. Remove unlinking code.
(g_hash_table_remove_all_nodes): Rewrite to not clear nodes
individually, but en masse using memset () after potentially calling
notify functions.
(iter_remove_or_steal): Use new data structure and algorithm. Vastly
simplified - now just a call to g_hash_table_remove_node ().
(g_hash_table_resize): New resize code, re-indexing with new prime
and cleaning up tombstones.
(g_hash_table_maybe_resize): Table may hold 8 buckets minimum, no less
than 1/4 load excluding tombstones, and no more than 15/16 load
including tombstones. These numbers are the results of a lot of
benchmarking with multiple complex applications, and should not be
changed lightly.
(g_hash_table_iter_next)
(g_hash_table_lookup)
(g_hash_table_lookup_extended)
(g_hash_table_insert_internal)
(g_hash_table_remove_internal)
(g_hash_table_foreach_remove_or_steal)
(g_hash_table_foreach)
(g_hash_table_find)
(g_hash_table_get_keys)
(g_hash_table_get_values): Use new data structure and algorithm,
fairly trivial changes.
svn path=/trunk/; revision=7518
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-16 Tor Lillqvist <tml@novell.com>
* glib/gtimer.c (g_time_val_to_iso8601): time_t is 64 bits in all
the newer Microsoft C libraries, not just 64-bit ones. So to avoid
crash if compiled with newer MSVSes, use a separate time_t
variable in all cases on Windows.
svn path=/trunk/; revision=7496
2008-09-16 Tor Lillqvist <tml@novell.com>
* glib/gbacktrace.h: Define G_BREAKPOINT() also for 64-bit MSVC,
using the __debugbreak() intrinsic.
svn path=/trunk/; revision=7495
2008-09-13 Tor Lillqvist <tml@novell.com>
* glib/gutils.h
* glib/gwin32.h: Deprecate G_WIN32_DLLMAIN_FOR_DLL_NAME(),
g_win32_get_package_installation_directory() and
g_win32_get_package_installation_subdirectory() as their
documentation has warned for a while. Sorry that I forgot to do
this before 2.18.0.
* glib/gwin32.c (g_win32_get_package_installation_directory):
Print a warning if a non-NULL package parameter is passed to this
function, as that is deprecated usage, as the documentation says.
svn path=/trunk/; revision=7480
2008-09-11 Matthias Clasen <mclasen@redhat.com>
Bug 548321 – <string.h> is not included in gi18n-lib.h
* glib/gi18n.h:
* glib/gi18n-lib.h: Include string.h, since strlen is used in
the macros. Pointed out by Ignacio Casal Quinteiro
svn path=/trunk/; revision=7455
2008-09-09 Matthias Clasen <mclasen@redhat.com>
Bug 551228 – G_STRFUNC on recent Sun compiler should be expanded to
__func__ rather than '???'
* glib/gmacros.h: Don't use glibconfig.h defines in gmacros.h,
as the comment up top says. Instead look at __STDC_VERSION__.
Problem reported by Lin Ma.
svn path=/trunk/; revision=7451
2008-09-09 Matthias Clasen <mclasen@redhat.com>
Bug 523463 – Core dump in gmain.c:2482:IA__g_main_context_check()
* glib/gmain.c (g_main_context_check): Be robust against setting
event fields on the fly, as e.g. happens in linc. Tracked down
by Paul Smith, fix proposed by Owen Taylor.
svn path=/trunk/; revision=7447
2008-08-31 Emmanuele Bassi <ebassi@gnome.org>
Bug 550096 – GBookmarkFile parser is not forward compatible
* glib/gbookmarkfile.c:
(parse_bookmark_element), (parse_application_element),
(parse_mime_type_element), (parse_icon_element): Relax the
attributes checking of the GBookmarkFile parser for the
attributes that the desktop bookmark file specification
defines and controls. This allows adding new attributes to
the existing elements in newer versions without breaking the
parser in older ones.
svn path=/trunk/; revision=7418
2008-08-28 Ryan Lortie <desrt@desrt.ca>
Fixup for test case in previous commit.
* glib/tests/strfuncs.c: don't fail if we can't open the test data.
This happens if $(builddir) != $(srcdir) (like when doing 'make
distcheck'). Quick workaround for now until #549783 can be fixed.
svn path=/trunk/; revision=7415
2008-08-28 Ryan Lortie <desrt@desrt.ca>
[REVERT] Bug 548612 – g_strstr_len() should use memmem when available
* glib/gstrfuncs.c (g_strstr_len): fix off-by-one memory access error
* glib/tests/strfuncs.c (test_bounds): add some new test cases that
would catch problems like this
* glib/tests/4096-random-bytes: test data for the previous
* glib/tests/Makefile.am: add previous to EXTRA_DIST
svn path=/trunk/; revision=7414
2008-08-28 Ryan Lortie <desrt@desrt.ca>
[REVERT] Bug 548612 – g_strstr_len() should use memmem when available
* configure.in:
* glib/gstrfuncs.c (g_strstr_len): revert use of memmem (see bug)
svn path=/trunk/; revision=7413
2008-08-28 Michael Natterer <mitch@imendio.com>
* glib/gstrfuncs.c (g_parse_long_long): make "endptr" const since
it's always a pointer into the const string passed. Remove some
casting to (gchar*) in this function.
(g_ascii_strtoull)
(g_ascii_strtoll): cast "endptr" to (const gchar**) here when
passing it to above function.
svn path=/trunk/; revision=7410
2008-08-28 Bastien Nocera <hadess@hadess.net>
Bug 548612 – g_strstr_len() should use memmem when available
* glib/tests/strfuncs.c (test_strstr):
* tests/string-test.c (main): Patch by Paolo Borelli
<pborelli@katamail.com> to move the tests to the right place,
and add more tests
* glib/gstrfuncs.c (g_strstr_len): Fix problem with memmem ignoring
nul-terminators in strings, and using the haystack_len instead
svn path=/trunk/; revision=7409
2008-08-28 Bastien Nocera <hadess@hadess.net>
Bug 548612 – g_strstr_len() should use memmem when available
* configure.in: detect whether memmem is available in the C library
* glib/gstrfuncs.c (g_strstr_len): use memmem for g_strstr_len() if
available in it's available, as it could be optimised by the C library
* tests/string-test.c (main): Add a few tests for g_strstr_len()
svn path=/trunk/; revision=7407
2008-08-27 Tor Lillqvist <tml@novell.com>
* glib/giowin32.c: Stylistic changes. Plug an unlikely memory leak
that occurred in create_thread() if closing the thread handle
failed. Add more error messages to g_io_win32_free() that are
printed only when debugging. Plug handle leak, a socket channel's
event was never closed.
svn path=/trunk/; revision=7405
2008-08-21 Tor Lillqvist <tml@novell.com>
* glib/giowin32.c: Don't bother compiling the binary
compatibility g_io_channel_win32_new_stream_socket()
function that has not been mentioned in any header since 2.0 on
Win64.
* glib/glib.symbols: Mark it, too, private, and don't export it on
Win64.
svn path=/trunk/; revision=7384
2008-08-21 Tor Lillqvist <tml@novell.com>
* glib/gmain.c: Rework the g_poll() implementation on Windows to
match poll() semantics more closely. This makes the test program
in bug #468910 behave better and doesn't seem to break anything
else.
If polling several GPollFDs, i.e. messages and/or waitable
handles, first check if one or several of them are in the
signalled state right away, and return indication for all that are
in that case.
If not, then poll with timeout and indicate only the single one
that the Win32 wait function tells us as before.
Remove unnecessary ifdefs, as we always have G_MAIN_POLL_DEBUG
defined on Windows.
Initialise g_main_poll_debug in g_main_context_new() so we have it
before testing it in one case.
Don't add several copies of a handle in the array of handles to
wait for. The documentation says this is not allowed, although it
did seem to work fine in practise. But do as the documentations
says anyway.
svn path=/trunk/; revision=7375
2008-08-20 Tor Lillqvist <tml@novell.com>
Bug 500246 - Bug fixes for giowin32
* glib/giowin32.c (read_thread) (write_thread): Change the nbytes
variables to signed.
(g_io_channel_win32_make_pollfd): Fix an obvious error in the file
descriptor case leftover after the patch from bug #333098 on
2006-03-02. Thanks to Marcus Brinkmann.
svn path=/trunk/; revision=7373
2008-08-20 Tor Lillqvist <tml@novell.com>
Bug 324234 - Using g_io_add_watch_full() to wait for connect() to
return on a non-blocking socket returns prematurely
Bug 548278 - Async GETs connections are always terminated
unexpectedly on Windows
* glib/giowin32.c: Add one more state variable to the
GIOWin32Channel struct, ever_writable. Initialise it to FALSE, set
to TRUE when the WSAEventSelect() indicates FD_WRITE, and never
reset to FALSE.
Don't do the WSASetEvent() in g_io_win32_prepare() unless
ever_writable is TRUE. Don't automatically indicate G_IO_OUT in
g_io_win32_check() unless ever_writable is TRUE.
This fixes the behaviour of the test case program in bug #548278,
and the "Testcase for the spurious OUT event bug" in bug
#324234. It also doesn't seem to break anything. Not that there is
any exhaustive test suite...
Add a comment with a list of bugs that are related to the code in
this file.
svn path=/trunk/; revision=7372
2008-08-15 12:41:26 Tim Janik <timj@imendio.com>
* glib/gtestutils.c: changed assertion messages, so older emacsen
can also detect failing source file and line, fixes:
Bug 502498 – Test framework assertion failures should follow gcc error format
svn path=/trunk/; revision=7358
2008-08-12 Federico Mena Quintero <federico@novell.com>
* glib/gi18n-lib.h: In the #error about having to define
GETTEXT_PACKAGE, add a hint about a possibly-missing config.h.
Signed-off-by: Federico Mena Quintero <federico@novell.com>
svn path=/trunk/; revision=7343
2008-08-08 Ryan Lortie <desrt@desrt.ca>
* glib/gmarkup.c: previously the parser only accepted character
references for \t \n and \r (as per XML 1.0); now it accepts all
of  .. .
svn path=/trunk/; revision=7326
2008-08-04 Tor Lillqvist <tml@novell.com>
* glib/gmain.c (g_get_current_time): MSDN says: "Do not cast a
pointer to a FILETIME structure to either a LARGE_INTEGER* or
__int64* value because it can cause alignment faults on 64-bit
Windows." So don't do that then. Indeed the code did work randomly
on Win64 when compiled with optimisation.
svn path=/trunk/; revision=7308
2008-08-04 Tor Lillqvist <tml@novell.com>
* glib/giowin32.c
* glib/gmain.c
* glib/gspawn-win32.c
* glib/gspawn-win32-helper.c: Change gssize casts introduced on
2008-07-28 to gintptr casts now that we have that. gssize is as
such the same as gintptr on both 32- and 64-bit Windows, but the
gintptr name indicates that it is used to hold pointers, i.e. also
HANDLEs.
svn path=/trunk/; revision=7306
2008-07-30 Tor Lillqvist <tml@novell.com>
Bug 545485 - Implicit declaration of utime()
* glib/gstdio.c: Include <utime.h> on POSIX.
svn path=/trunk/; revision=7273
2008-07-28 Tor Lillqvist <tml@novell.com>
Fix problems on 64-bit Windows. Avoid warnings, some of which
indicated actual problems, some which were just annoyances.
Where casts to an integer type are needed for pointers, use
gssize. Technically intptr_t would be the more proper type, but we
still want to be compilable with MSVS6 and 7 which don't have
intptr_t. MSVS8 and 9 do have intptr_t, but in <crtdefs.h>, not
<stdint.h>.
Use %p to print out handles. Use gssize casts when assigning
GPollFD::fd fields.
Use G_GSIZE_FORMAT when printing size_t values.
* configure.in: Define automake conditional G_OS_WIN32_X64 which
is true on Win64.
* glib/giochannel.h: Use slightly different prototype for
g_io_channel_win32_new_messages() on Win64 with gsize instead of
guint.
* glib/giowin32.c
* glib/gmain.c
* glib/gspawn-win32.c
* tests/testglib.c: Generic changes as described above.
* glib/gmain.h: Don't bother mentioning GIMP in comment.
* glib/grel.c (tuple_hash_2): Use all bits of pointer.
* glib/gspawn-win32.c
* glib/gspawn-win32-helper.c: Use gssize types in the
communication between parent and helper process, so that we can
pass process handles, which are pointers, also on Win64.
* glib/gtimer.c (g_time_val_to_iso8601): time_t is 64 bits on
Win64 so we can't pass the address of a GTimeVal::tv_sec which is
a long directly to gmtime(). On the other hand, changing
GTimeVal::tv_sec to be a gint64 on Win64 is not really feasible
either, as that would then require changes in much code that uses
GTimeVals.
* glib/gspawn-win32.c
* glib/Makefile.am: Call the helper programs
gspawn-win64-helper.exe and gspawn-win64-helper-console.exe on
Win64, to avoid potential risk of running a 32-bit version of the
helper.
svn path=/trunk/; revision=7260
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 Tor Lillqvist <tml@novell.com>
* configure.in: Set LIB_EXE_MACHINE_FLAG to either X86 or X64 on
Windows. AC_SUBST it.
* */Makefile.am: Correspondingly, pass appropriate -machine
flag to lib.exe when producing the import library for the MS
toolchain.
svn path=/trunk/; revision=7255
2008-07-25 15:47:08 Tim Janik <timj@imendio.com>
* glib/tests/testing.c (test_random_conversions): added new sample
test to prepare for extended range random tests.
svn path=/trunk/; revision=7253
2008-07-24 Tor Lillqvist <tml@novell.com>
* glib/gdir.c: Include <stdio.h> for FILENAME_MAX on newer mingw
installations.
svn path=/trunk/; revision=7251
2008-07-24 Tor Lillqvist <tml@novell.com>
* glib/gslice.c (smc_notify_free): Use G_GSIZE_FORMAT instead of
the C99 "zu".
svn path=/trunk/; revision=7249
* glib/tests/option-context.c (group_captions()):
Set LANG variable to C in the forked process to get reproducable.
Don't silence the forked process in --verbose mode to support
debugging.
svn path=/trunk/; revision=7238
2008-07-21 Emmanuele Bassi <ebassi@gnome.org>
* glib/gtimer.c (g_time_val_to_iso8601): Use the right format
string to get leading zeros when converting to ISO 8601. (Sven
Herzberg)
svn path=/trunk/; revision=7232
2008-07-21 Emmanuele Bassi <ebassi@gnome.org>
* glib/gbookmarkfile.c:
(bookmark_app_info_new): Do not set the timestamp value
using time(), as it will be overwritten anyway. (#535223,
Michael Meeks)
(parse_application_element),
(bookmark_app_info_dump): Support the "modified" attribute,
which takes an ISO-formatted string instead of a Unix time
stamp, to keep the number of g_strdup_printf() calls to a
minimum.
* glib/gtimer.c:
(g_time_val_to_iso8601): Do not use strftime(): we know
the format and contents of the ISO 8601 date format we
use.
* tests/bookmarks/valid-03.xbel: Add a test file for the
modified attribute.
svn path=/trunk/; revision=7231
2008-07-20 Tor Lillqvist <tml@novell.com>
* glib/giowin32.c (g_io_win32_prepare): Patch from Yu Kuan that
makes watched sockets behave much better. See gtk-devel-list
archives from May for the (unfortunately rather meager)
discussion. This patch fixes the presented simple test program,
which reasonably could be expected to work.
svn path=/trunk/; revision=7220
* glib/glib.symbols:
* glib/gstrfuncs.[hc]: Add g_dpgettext2() which is a
variant of g_dpgettext() taking context and id as separate
arguments.
* glib/gi18n-lib.h:
* glib/gi18n.h: Add an NC_() macro that is to C_() as N_()
is to _().
svn path=/trunk/; revision=7202
* glib/gstrfuncs.c (g_ascii_strtod): Document that this
function does accept localized infinities and nans. Reported
by Morten Welinder.
svn path=/trunk/; revision=7195
2008-07-10 Ryan Lortie <desrt@desrt.ca>
* docs/reference/glib/glib-sections.txt:
* glib/glib.symbols:
* glib/gmarkup.c:
* glib/gmarkup.h: add functions g_markup_parse_context_{push,pop} in
order to provide some small hooks on which to build easy-to-use
subparsers.
* glib/tests/Makefile: add new test
* glib/tests/markup-subparser.c: new test for subparsers
Fixes bug #337518.
svn path=/trunk/; revision=7174
* glib/gmain.c (g_get_current_time): Add a g_return_val_if_fail
check in both versions. Proposed by Patrik Olsson in bug 540545.
svn path=/trunk/; revision=7142
2008-06-24 Paolo Borelli <pborelli@katamail.com>
Bug 539770 - migrate gstrfunc unit tests to gtest
* tests/strfunc-test.c:
* tests/testglib.c:
* tests/strtoll-test.c:
* tests/strtod-test.c:
* tests/string-test.c:
* tests/Makefile.am:
Removed old tests.
* glib/tests/fileutils.c:
* glib/tests/strfuncs.c:
* glib/tests/Makefile.am:
Added all the old tests migrated to the new unit test framework
and add new unit tests for some of the functions.
svn path=/trunk/; revision=7097
2008-06-21 Tor Lillqvist <tml@novell.com>
* glib/gstdio.c: Improve Windows-specific parts of
documentation. Mention the different C library issue in more
places.
svn path=/trunk/; revision=7068
* configure.in:
* glib/gthread.h: Revert previous patch as it doesn't improve the
situation and results in other warnings.
svn path=/trunk/; revision=7064
2008-06-19 Tor Lillqvist <tml@novell.com>
Bug 539074 - Cannot get exit status with g_spawn_command_line_sync()
* glib/gspawn-win32-helper.c (main): Write also the exit status of
the spawned process to the error report pipe. Patch by Hiroyuki
Ikezoe.
svn path=/trunk/; revision=7060
* glib/gtimer.c (g_time_val_from_iso8601): set tv_usec to 0 rather
than 1 when a fraction of a second is not specified
(g_time_val_from_iso8601): calculate a fraction of a second
correctly even in case it does not happen to consist of exactly
six digits; do not allow random data after the ISO 8601 string,
only whitespace
(make g_time_val_to_iso8601): support fractions of a second
Patch by Peter Kjellerstedt
* tests/testglib.c: Update to match
svn path=/trunk/; revision=7057
2008-06-16 Michael Natterer <mitch@imendio.com>
* glib/goption.c (dgettext_swapped): changed return value to
const gchar* to fix warning.
svn path=/trunk/; revision=7046
2008-06-13 Hans Breuer <hans@breuer.org>
* glib/gstrfuncs.c : to get the default translation target on
win32 use g_win32_get_locale() instead of setlocale(LS_MESSAGES,NULL)
Fixes bug #538044
* glib/makefile.msc.in gio/makefile.msc : updated
svn path=/trunk/; revision=7036
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
* glib/gunicollate.c (g_utf8_collate_key): Handle strfxrm returning
-1 a little better. Problem pointed out by Takao Fujiwara
svn path=/trunk/; revision=7015
2008-06-11 Tor Lillqvist <tml@novell.com>
* glib/giowin32.c: g_win32_error_message() works fine for the
Winsock WSA* error codes, too, so drop the winsock_error_message()
function.
svn path=/trunk/; revision=7010
2008-06-11 Tor Lillqvist <tml@novell.com>
* glib/gmain.c
* glib/gspawn.c: Clarify what a "child pid" is in the doc
comments.
svn path=/trunk/; revision=6995
2008-06-02 Yevgen Muntyan <muntyan@tamu.edu>
Bug 531403 - g_utf8_collate broken on Mac.
* glib/gunicollate.c: (g_utf8_collate): use UCCompareTextDefault;
(collate_key_to_string), (carbon_collate_key_with_collator),
(carbon_collate_key), (carbon_collate_key_for_filename): new
functions using Carbon API to get collate key for g_utf8_collate_key()
and g_utf8_collate_key_for_filename();
(g_utf8_collate_key), (g_utf8_collate_key_for_filename): use those.
svn path=/trunk/; revision=6969
2008-05-30 Tor Lillqvist <tml@novell.com>
* glib/gstdio.c (g_access) [Win32]: Mask out X_OK to avoid problem
on Vista. X_OK was just ignored by access() in earlier Microsoft C
libraries. (Which is fine as executability has little meaning on
Windows.) The one on Vista returns an error if X_OK is passed.
svn path=/trunk/; revision=6961
2008-05-29 Tor Lillqvist <tml@novell.com>
* glib/gstdio.h
* glib/gstdio.c: Add g_utime(). No need to include <sys/utime.h>
in gstdio.h, just use a forward struct declaration.
* glib/glib.symbols: Add it.
svn path=/trunk/; revision=6960
2008-05-29 Tor Lillqvist <tml@novell.com>
* glib/gnulib/printf-args.c (printf_fetchargs): wint_t is short on
Windows, and gcc warns: "wint_t is promoted to int when passed
through ... (so you should pass int not wint_t to va_arg)." So do
that then.
svn path=/trunk/; revision=6956
2008-05-22 10:49:37 Tim Janik <timj@imendio.com>
* glib/gmacros.h: implement G_STMT_START and G_STMT_END with
do{}while(0), which is believed to be widely portable, fixes:
Bug 519026 - G_STMT_START/G_STMT_END test a non-existent preprocessor symbol
svn path=/trunk/; revision=6922
2008-05-20 Behdad Esfahbod <behdad@gnome.org>
Bug 459905 – Bug in wcwidth data
Bug 534085 – g_unichar_iswide_cjk() has a totally wrong table
* glib/guniprop.c (g_unichar_iswide), (g_unichar_iswide_cjk):
Regenrate wide and wide_cjk tables from Unicode 5.1.0 data directly.
Not using Markus Kuhn's tables anymore.
svn path=/trunk/; revision=6920
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-19 Tor Lillqvist <tml@novell.com>
* glib/gdir.c: Include the dirent.h and wdirent.c from
../build/win32/dirent directly here when compiling with MSVC and
without HAVE_DIRENT_H.
svn path=/trunk/; revision=6915
2008-05-19 Tor Lillqvist <tml@novell.com>
* glib/Makefile.am: #define HELPER_CONSOLE in
gspawn-win32-helper-console.c
* glib/gspawn-win32-helper.c: Compile a main() instead of
WinMain() if HELPER_CONSOLE is defined.
svn path=/trunk/; revision=6909
2008-05-12 Jeffrey Stedfast <fejj@novell.com>
* glib/gchecksum.c (g_checksum_reset): New function to reset the
state of a GChecksum.
(g_checksum_new): Call g_checksum_reset() instead of duplicating
code.
svn path=/trunk/; revision=6903
2008-05-17 Tor Lillqvist <tml@novell.com>
* glib/giowin32.c: Make debugging printout more compact and add
more information to it. No changes to actual functionality.
svn path=/trunk/; revision=6898
2008-05-17 Tor Lillqvist <tml@novell.com>
* glib/gmain.c: Improve debugging printouts. When
G_MAIN_POLL_DEBUG is defined, we check for an environment variable
of the same name to decide whether to print out debugging
information or not. G_MAIN_POLL_DEBUG is always defined on Windows
as there is more often a need to debug this stuff there. On Unix
the definition has to be uncommented (or done on the compile
command line).
svn path=/trunk/; revision=6897
2008-05-17 Yair Hershkovitz <yairhr@gmail.com>
* glib/glib.symbols:
* glib/gi18n.h: Added g_disable_setlocale().
* glib/gi18n.c: Added g_disable_setlocale() API to disable setting
the locale in g_i18n_init(). Dont disable translations if textdomain
was not set before calling g_i18n_init(). Dont disable translations if
the locale is "C".
svn path=/trunk/; revision=6894
2008-05-12 Yair Hershkovitz <yairhr@gmail.com>
* glib/gi18n.c (g_i18n_init): Coding convention fix. Space between
a function name and its opening parenthesis.
svn path=/trunk/; revision=6885
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-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-05 Michael Natterer <mitch@imendio.com>
* glib/glib.h: #define __GLIB_H_INSIDE__ around including
everything.
* glib/*.h: check for that define instead of __G_LIB_H__ if
G_DISABLE_SINGLE_INCLUDES is defined.
* glib/gdatasetprivate.h: #include <glib.h> instead of
<glib/gdataset.h>
svn path=/trunk/; revision=6875
2008-05-02 13:24:13 Tim Janik <timj@imendio.com>
* glib/gmain.c: renamed GMainDispatch.dispatching_sources to be more
descriptive and distinguishable within the source file.
svn path=/trunk/; revision=6874
2008-04-21 Tor Lillqvist <tml@novell.com>
* configure.in
* */Makefile.am: More work on enabling static building on
Windows. When building statically: Also define
GOBJECT_STATIC_COMPILATION in glibconfig.h so that also the
variables in gparamspecs.h get declared without any
dllimport/dllexport decorations. Don't install .def files which
obviously have no meaning for static libraries. Don't create MS
import libraries. Don't do any resource object files.
svn path=/trunk/; revision=6866
2008-04-17 Emmanuele Bassi <ebassi@gnome.org>
* glib/gchecksum.c:
(sha_byte_reverse): Use the macro GLib provides for byte-swapping
as it can be optimized.
(g_checksum_update): Fix a compiler warning.
svn path=/trunk/; revision=6861
2008-04-09 Federico Mena Quintero <federico@novell.com>
* glib/gbookmarkfile.c (bookmark_metadata_free): Don't leak
the apps_by_name hash table if the applications list is empty.
Signed-off-by: Federico Mena Quintero <federico@gnu.org>
svn path=/trunk/; revision=6846
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 Tor Lillqvist <tml@novell.com>
Bug 525972 - UCS-4 not in the new win_iconv implementation
* glib/win_iconv.c: Add UCS-4. Also add spelling of UCS-2 without
the hyphen.
svn path=/trunk/; revision=6816
2008-04-02 Tor Lillqvist <tml@novell.com>
Bug 524314 - g_convert() on Win32 implicitly converts full width
alphanumerics into half width
* glib/win_iconv.c: Update from Yukihiro Nakadaira. Use
WC_NO_BEST_FIT_CHARS flag for WideCharToMultiByte() unless the
//translit flag was suffixed to the codeset name.
* glib/gconvert.c: Include win_iconv.c earlier so that its
definition of WINVER before it includes <windows.h> is used.
svn path=/trunk/; revision=6808
2008-03-31 Tor Lillqvist <tml@novell.com>
* glib/gmain.c (g_poll): Improve fix for #525192 below: Use
SleepEx() so that the sleep is alertable. Thanks to John
Ehresman.
svn path=/trunk/; revision=6794
2008-03-31 Tor Lillqvist <tml@novell.com>
* glib/gwin32.c
(g_win32_get_package_installation_directory_of_module): Fix Cygwin
breakage. Patch by Lieven van der Heide.
svn path=/trunk/; revision=6790
2008-03-31 Tor Lillqvist <tml@novell.com>
Bug 525192 - 100% CPU if run main loop with no IO sources
* glib/gmain.c (g_poll) [Win32]: Patch by Neil Roberts.
svn path=/trunk/; revision=6787
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-22 Claudio Saavedra <csaavedra@gnome.org>
Bug 523877 – gbookmarkfile: avoid using g_string_append_printf() and
other optimizations
* glib/gbookmarkfile.c: (bookmark_metadata_dump),
(bookmark_item_dump), (g_bookmark_file_dump), (expand_exec_line):
Replace all calls to g_string_append_printf with g_strconcat () or
g_string_append () where appropriate, to reduce the file creation time.
Also, use g_string_sized_new () with an appropriate buffer size instead
of g_string_new (NULL), to reduce time spent in memory reallocation.
(#523877, Claudio Saavedra, Emmanuele Bassi)
svn path=/trunk/; revision=6752
2008-03-22 Emmanuele Bassi <ebassi@gnome.org>
Bug 518160 - replace two g_strdup_printf calls in GBookmarkFile
* glib/gbookmarkfile.c (is_element_full): Compare the fragments
instead of building two strings; this avoids two g_strdup_printf()
per namespaced element enountered. (#518160, Felix Riemann)
svn path=/trunk/; revision=6751
2008-03-19 Tor Lillqvist <tml@novell.com>
Bug 523298 - win_iconv can't convert from UTF-8 to GB18030 (or vice versa)
* glib/win_iconv.c: Fixes for code page 54936 (GB18030)
(mbtowc_flags): New function. Check if a code page is one of those
for which the dwFlags parameter to MultiByteToWideChar() must be
zero. Return 0 or MB_ERR_INVALID_CHARS.
(mbcs_mblen): New function for multi-byte (more than two bytes for
some characters) code pages. Only handles 54936 for now.
(make_csconv): Use it for 54936.
(kernel_mbtowc): Use mbtowc_flags().
svn path=/trunk/; revision=6741
* glib/gutils.h: Use "__attribute__ ((__gnu_inline__))" for inlining
if either __GNUC_STDC_INLINE__ or __GNUC_GNU_INLINE__ are defined. In
gcc version prior to 4.3 no correct C99-inline was implemented which
has semantic differences to GNU inline.
svn path=/trunk/; revision=6733
2008-03-16 Tor Lillqvist <tml@novell.com>
* configure.in: Don't bother defining Autoconf variables for
glib.def, gmodule.def, gobject.def and gthread.def when this can
be handled easily in */Makefile.am which are the only files that
use them. Remove also TESTGMODULE_EXP which isn't used at all.
* */Makefile.am: Corrsponding changes.
svn path=/trunk/; revision=6722
2008-03-14 Michael Natterer <mitch@imendio.com>
* glib/*.h: make it possible to disable single-file includes by
defining G_DISABLE_SINGLE_INCLUDES when building against GLib.
Approved by Tim Janik.
* glib/glib.h: include <glib/gslice.h>.
* glib/gi18n.h
* glib/gi18n-lib.h
* glib/gprintf.h: include <glib.h> so the above works when these
files are included without including <glib.h> first.
svn path=/trunk/; revision=6713
* configure.in:
* glib/gthread.h: Prevent the compiler from warning about breaking
strict-aliasing rules when using gcc 4.3 and G_LOCK on C sources.
svn path=/trunk/; revision=6691
2008-03-12 Tor Lillqvist <tml@novell.com>
Bug 520914 - win_iconv doesn't support UCS-2
* glib/win_iconv.c: Make UCS-2 just an alias for
UTF-16. Technically this is wrong of course, but shouldn't matter
an awful lot in practice.
svn path=/trunk/; revision=6686
2008-03-11 Murray Cumming <murrayc@murrayc.com>
Bug 521591 – g_markup_parse_context_parse() creates GError message that
is invalid UTF8.
* glib/gmarkup.c (set_error): Make sure that the GError::message is
valid UTF-8 even if it is complaining about invalid UTF-8 in the
markup text, using _g_utf8_make_valid().
svn path=/trunk/; revision=6680
2008-03-04 Alexander Larsson <alexl@redhat.com>
* gfile.c:
Remove deprecated symbols we kept for one release.
2008-03-04 Alexander Larsson <alexl@redhat.com>
* glib/gurifuncs.c:
Remove deprecated symbols we kept for one release.
svn path=/trunk/; revision=6621
2008-03-03 Matthias Clasen <mclasen@redhat.com>
* glib/gutils.h: Add a version of G_INLINE_FUNC for
__GNUC__ && __GNUC_STDC_INLINE__, patch by Jakub Jelinek
svn path=/trunk/; revision=6616
2008-03-03 Tor Lillqvist <tml@novell.com>
* glib/gspawn-win32.c (read_helper_report): Must set the GError
also in the unexpected EOF case.
(do_spawn_with_pipes): Must protect also new_argv[0].
svn path=/trunk/; revision=6612
2008-02-29 Tor Lillqvist <tml@novell.com>
* glib/win_iconv.c (name_to_codepage): Add some GNU libiconv
compatibility: Recognize "" and "char" as aliases for the current
locale's charset. (We use the system ANSI codepage as returned by
GetACP().) Recognize "wchar_t" as an alias for UTF-16LE.
svn path=/trunk/; revision=6604
2008-02-26 Tor Lillqvist <tml@novell.com>
* glib/gmain.c (g_poll): Further patch by Vlad Grecescu: Drop
the code path that called WaitMessage(), as WaitMessage()
doesn't offer any chance for APCs to run. Instead just use the
code path with MsgWaitForMultipleObjectsEx() even for the
wait-only-for-messages case. (#517484)
svn path=/trunk/; revision=6597
2008-02-25 Alexander Larsson <alexl@redhat.com>
* glib/glib.symbols:
* glib/gurifuncs.[ch]:
Rename g_uri_get_scheme to g_uri_parse_scheme.
Keep g_uri_get_scheme() symbol for this
unstable release to avoid breaking to many apps.
svn path=/trunk/; revision=6588
2008-02-25 Alexander Larsson <alexl@redhat.com>
* glib/gurifuncs.[ch]:
Rename g_uri_get_scheme to g_uri_parse_scheme.
Keep g_uri_get_scheme() symbol for this
unstable release to avoid breaking to many apps.
svn path=/trunk/; revision=6587
2008-02-24 Tor Lillqvist <tml@novell.com>
* glib/gspawn-win32.c: Guard against
_glib_get_installation_directory() returning NULL. In that
case, just use the name of the helper process executable
without path.
svn path=/trunk/; revision=6576
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 Tor Lillqvist <tml@novell.com>
* glib/gmain.c (g_poll) [Win32]: Use alertable wait functions so
that I/O completion routines or user-mode Asynchronous Procedure
Calls can be run. (#517484, Vlad Grecescu)
svn path=/trunk/; revision=6571
2008-02-24 Tor Lillqvist <tml@novell.com>
* glib/gutils.h: Mention G_WIN32_DLLMAIN_FOR_DLL_NAME() will be
deprecated in the future.
* glib/gutils.c: Drop use of G_WIN32_DLLMAIN_FOR_DLL_NAME(). Use a
minimal DllMain() instead that just saves the DLL handle.
(g_win32_get_system_data_dirs_for_module, _glib_get_locale_dir)
(get_module_share_dir): Use
g_win32_get_package_installation_directory_of_module().
svn path=/trunk/; revision=6570
2008-02-24 Tor Lillqvist <tml@novell.com>
* glib/gwin32.c
(g_win32_get_package_installation_directory_of_module): New
function. Supersedes g_win32_get_package_installation_directory()
and g_win32_get_package_installation_directory().
It makes more sense to have the function for this functionality
take a HMODULE as parameter instead of DLL name. The typical use
scenario has been to have a DllMain() function that retrieves the
full pathname for the DLL in question, and saves just the basename
of that. Then later code passes that saved dll basename to
g_win32_get_package_installation_directory(), which retrieves the
corresponding DLL handle, and then retrieves up its full
pathname. (Which DLlMain() already had.) It is less convoluted to
have a DllMain() that just saves the DLL handle, and then when
needed call this function to get the corresponding installation
folder.
(get_package_directory_from_module): Use
g_win32_get_package_installation_directory_of_module().
(g_win32_get_package_installation_directory)
(g_win32_get_package_installation_subdirectory): Mention these
functions will be deprecated and recommend using
g_win32_get_package_installation_directory_of_module() instead.
* glib/gwin32.h: Declare
g_win32_get_package_installation_directory_of_module().
* glib/glib.symbols: Add it.
svn path=/trunk/; revision=6569
2008-02-20 Tor Lillqvist <tml@novell.com>
* glib/gtestutils.c (g_test_trap_fork) [Win32]: Change the
g_error() to g_message() to avoid stopping on warnings. At least
now testglib runs to completion and the old tests in it get
exercised even if the newfangled ones don't.
(g_test_trap_assertions) [Win32]: Bypass on Windows.
svn path=/trunk/; revision=6542
2008-02-17 Hans Breuer <hans@breuer.org>
* glib/gutils.c : define CSIDL_MYPICTURES if not available
* gthread/gthread-win32.c : use G_STRFUNC instead of compiler
specific __FUNCTION__
svn path=/trunk/; revision=6526
2008-02-13 Tor Lillqvist <tml@novell.com>
* glib/gwin32.c: Doc change: Deprecate passing anything but NULL
for the "package" parameter to
g_win32_get_package_installation_directory() and
g_win32_get_package_installation_subdirectory().
svn path=/trunk/; revision=6508