3318 Commits

Author SHA1 Message Date
John Lindgren
aeac5de2f8 keyfile: fill parse buffer in line sized chunks
When loading a keyfile the incoming bytes are fed
to a line buffer to get parsed each time a new line
is encountered.

The code that fills the line buffer does it inefficiently,
one byte at a time.

This commit changes that code to look ahead at the incoming
bytes for the next '\n' character and then fill the line buffer
all at once.

https://bugzilla.gnome.org/show_bug.cgi?id=650211
2011-05-16 23:41:55 -04:00
John Lindgren
9c1a44cf32 keyfile: avoid needless allocations on file load
When loading a key file, the keys and values of individual lines
are allocated once when copied and trimmed from the parse buffer
and allocated/copied again when added to the lookup map.

This commit avoids the second pair of allocations by introducing
a new function g_key_file_add_key_value_pair that gives the
lookup map direct ownership of the key and value copied from the
parse buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=650211
2011-05-16 23:36:39 -04:00
Matthias Clasen
f96dc555d5 Rename a problematic test binary
Having a binary called printf is apparently asking for trouble,
so lets not do that.

http://bugzilla.gnome.org/show_bug.cgi?id=650078
2011-05-16 14:39:53 -04:00
Philip Withnall
2122191595 docs: Improve punctuation in some of the GArray method documentation 2011-05-15 15:31:16 +01:00
Benjamin Otte
cb7a5a8e94 docs: Add the cute trick comment to all sort functions
Thanks to Sebastian Dröge for pointing out there's more than
g_array_sort() and I hadn't in fact added the comment to g_array_sort()
in 80928ea403cfff5ffaa4bc73e84e3d4ebcb09123
2011-05-15 16:16:30 +02:00
Benjamin Otte
80928ea403 docs: Add a cute trick for achieving a stable sort
This trick is inspired by
http://www.gnu.org/s/hello/manual/libc/Array-Sort-Function.html
http://jeffreystedfast.blogspot.com/2011/04/optimizing-merge-sort.html
2011-05-15 16:13:55 +02:00
Giovanni Campagna
eebb3647a1 gbase64: fix introspection annotations
Makes the g_base64_* functions usable from introspection GLib bindings
(gjs, currently, as both vala and pygobject use manual bindings for
GLib)

https://bugzilla.gnome.org/show_bug.cgi?id=646635
2011-05-11 20:10:25 +02:00
Colin Walters
c026cf56a1 gdatetime: Quiet GCC warning about possibly-uninitialized 2011-05-11 13:19:05 -04:00
Matthias Clasen
3d3659c1b6 Documentation additions
Add Since tags to recently introduced test function typedefs.
https://bugzilla.gnome.org/show_bug.cgi?id=649506
2011-05-06 07:14:48 -04:00
Matthias Clasen
17d8d2cc44 Add tests for new GDateTime functionality 2011-05-05 14:57:09 -04:00
Matthias Clasen
e15ecab048 Expand the g_date_time_format documentation
Mention strftime, and explain supported modifiers.
2011-05-05 14:57:09 -04:00
Matthias Clasen
d23c33a04b GDateTime: enhance g_date_time_format()
Make g_date_time_format() support some useful format modifiers from
strftime(). This commit adds support for the POSIX 'O' modifier
(alternative digits), as well as the -/_/0 padding modifiers, which
are a GNU strftime() extension.
https://bugzilla.gnome.org/show_bug.cgi?id=648678
2011-05-05 14:57:09 -04:00
Chun-wei Fan
5b5299e1c4 GLib MSVC Support updates (autotools)
Filter out *-unix.c from the source file list, as it is obviously not
usable (nor used) under VS 2008/2010
2011-05-05 12:35:45 +08:00
Ryan Lortie
e823ba10d3 GVariant: Better handling of invalid UTF-8
g_variant_new_string() hits a g_return_if_fail() when given invalid
UTF-8.  That's certainly the right thing to do, but
g_variant_builder_add() uses this function internally and crashes when
it returns NULL due to the user passing a non-utf8 string.

We can protect the internal code by returning "[Invalid UTF-8]" in this
case while also making the problem easier to debug (and less fatal).

Closes #632631.
2011-05-04 18:20:23 +02:00
Colin Walters
542215b78a Rename g_unix_pipe_flags to g_unix_open_pipe
From IRC discussion, people liked this name more.

https://bugzilla.gnome.org/show_bug.cgi?id=649322
2011-05-03 23:34:17 -04:00
Matthias Clasen
ba5c9bd39f Remove extraneous decorations
Since in a doc comment takes no leading '@'.
2011-05-03 19:15:46 -04:00
Colin Walters
511070fb28 glib-unix.c: Don't leak FDs if pipe2() succeeds 2011-05-03 16:22:13 -04:00
Colin Walters
11bb78105d Use g types in public API for consistency 2011-05-03 10:57:22 -04:00
Colin Walters
ed37970a04 g_unix_set_fd_nonblocking: New API to control file descriptor blocking state
And use it in relevant places in GLib.

https://bugzilla.gnome.org/show_bug.cgi?id=649225
2011-05-03 10:14:48 -04:00
Colin Walters
e08e70e08d glib-unix.h: Unconditionally include unistd.h
danw points out it's part of POSIX.

https://bugzilla.gnome.org/show_bug.cgi?id=649201
2011-05-03 08:37:27 -04:00
Dan Winship
e56498ee0b Fix usage of _GNU_SOURCE
_GNU_SOURCE must be defined before including any other (system)
header, so defining it in glib-unix.h (and hoping no one has included
anything else before that) is wrong. And the "#define _USE_GNU"
workaround for this problem in gnetworkingprivate.h is even wronger
(and still prone to failure anyway due to single-include guards).

Fix this by defining _GNU_SOURCE in config.h when building against
glibc. In theory this is bad because new releases of glibc may include
symbols that conflict with glib symbols, which could then cause
compile failures. However, most people only see new releases of glibc
when they upgrade their distro, at which point they also generally get
new releases of gcc, which have new warnings/errors to clean up
anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=649201
2011-05-03 07:07:41 -04:00
Ray Strode
597ede957a glib/Makefile.am: add gmain-internal.h to sources
It's a new private header.

This commit adds it to the Makefile so it's properly distributed
with the sources.
2011-05-02 14:31:59 -04:00
Dan Winship
bdc23c44e8 Fix compiler warnings 2011-05-02 11:50:23 -04:00
Behdad Esfahbod
c1d61f1971 Bug 648966 - Update g_unichar_iswide and g_unichar_iswide_cjk
Add tests.
2011-05-02 11:43:18 -04:00
Dan Winship
181763438a Update .gitignores 2011-05-02 09:54:15 -04:00
Matthias Clasen
ddcb095fb2 Avoid an unused variable warning
Also, clean up some whitespace
2011-05-01 20:43:04 -04:00
Matthias Clasen
d09df426ba GHash: make sets with refcounted keys work correctly
When keys == values, we have to be careful about the order in
which we replace their elements.
2011-05-01 10:55:24 -04:00
Matthias Clasen
be991170fa GHash: introduce a "set" mode
Make hash tables start out in a mode in which they don't store
values at all, until the first insertion of a non-identical
key-value pair.

This reduces memory requirements by 1/3 when using hash tables
to store sets.

Based on a patch by Morten Welinder,
https://bugzilla.gnome.org/show_bug.cgi?id=644437
2011-04-30 23:11:18 -04:00
Morten Welinder
0ae6bc3aaa GHash: eliminate one of the lookup_nodes functions.
Kill g_hash_table_lookup_node and rename g_hash_table_lookup_node_for_insertion
to g_hash_table_lookup_node.  Since at this point we already check for
toombstones in all callers of g_hash_table_lookup_node this doesn't make
a difference.

https://bugzilla.gnome.org/show_bug.cgi?id=644437
2011-04-30 23:11:18 -04:00
Morten Welinder
6e45153ef7 GHash: split nodes array into seperate arrays.
This reduces memory requirements by 1/6 on 64-bit machines since
no padding is needed.  It also puts less strain on the memory
allocator since we no longer need one giant slab of memory.

https://bugzilla.gnome.org/show_bug.cgi?id=644437
2011-04-30 23:11:18 -04:00
Morten Welinder
4d8e64e6e8 GHash: use macros to check for magic hash values.
https://bugzilla.gnome.org/show_bug.cgi?id=644437
2011-04-30 23:11:18 -04:00
Behdad Esfahbod
acda716d2d Bug 648966 - Update g_unichar_iswide and g_unichar_iswide_cjk
Update to Unicode 6.0.  Also attach Python script that generates
the tables.
2011-04-29 18:03:24 -04:00
Colin Walters
a04efe6afb Use SIGTRAP (via G_BREAKPOINT()) if G_DEBUG=fatal-warnings
On Linux with gdb, it's much more convenient to debug programs using
G_DEBUG=fatal-warnings if we send SIGTRAP instead of abort() by
default.  The default handler for both is to terminate the process.

In particular this makes it more easily possible to debug a warning
that's not the first in a program; you can skip past it and
go to the warning you care about.

The "aborting..." message is removed since it's no longer accurate,
and anyways was never very useful; crashes should show up in ABRT/apport
type crash catching systems.

https://bugzilla.gnome.org/show_bug.cgi?id=648423
2011-04-28 14:48:48 -04:00
Shaun McCance
e585059514 glib/gvariant.c: Fix variable name in example code 2011-04-28 12:41:41 -04:00
Colin Walters
a1fbe7ae84 Drop stray reference to gthread.la
We now build this test multithreaded in gthread/tests.
2011-04-27 19:09:38 -04:00
Colin Walters
7b04bbc8e0 glib/Makefile.am: Remove stray tab 2011-04-27 18:42:29 -04:00
Colin Walters
549d895fa4 glib-unix: New API to watch some Unix signals
This new API allows watching a few select Unix signals;
looking through the list on my system, I didn't see anything
else that I think it'd reasonable to watch.

We build on the previous patch to make the child watch helper thread
that existed on Unix handle these signals in the threaded case.
In the non-threaded case, they're just global variables.

https://bugzilla.gnome.org/show_bug.cgi?id=644941
2011-04-27 16:01:39 -04:00
Colin Walters
920899d78f gmain: Prepare child watch handling for more generic signal handling
In preparation for supporting more Unix signals such as SIGHUP,
SIGTERM etc.,

https://bugzilla.gnome.org/show_bug.cgi?id=644941
2011-04-27 14:58:36 -04:00
Colin Walters
0ff211f520 glib-unix: New Unix-specific API
GLib historically has been designed to be "mostly" portable; there
are some functions only available on Unix like g_io_channel_unix_new(),
but these are typically paired with obvious counterparts for Win32.

However, as GLib is used not only by portable software, but components
targeting Unix (or even just Linux), there are a few cases where it
would be very convenient if GLib shipped built-in functionality.

This initial patch is a basic wrapper around pipe2(), including
fallbacks for older kernels.  This pairs well with the
existing g_spawn_*() API and its child_setup functionality.

However, in the future, I want to add a signal() wrapper here,
complete with proxying the signal to a mainloop.  I have initial code
for this, but doing it sanely (including factoring out gmain.c's
private worker thread), is a complex task, and I don't want to block
on that.

See also gwin32.h for Win32 specific functionality.

https://bugzilla.gnome.org/show_bug.cgi?id=644941
2011-04-27 13:29:38 -04:00
David Schleef
0dc5d45692 Fix %z in g_date_time_format()
https://bugzilla.gnome.org/show_bug.cgi?id=642935
2011-04-27 02:36:12 -04:00
Matthias Clasen
d3b80c49ea GHashTable: Small optimization of remove-all
Don't enter the loop if we are not going to notify anyway.
Pointed out in bug 646013.
2011-04-27 00:03:59 -04:00
Matthias Clasen
fc7403b675 GHashTable: Add a test for remove-all functionality 2011-04-27 00:03:28 -04:00
Matthias Clasen
4832289bc0 Whitespace cleanup 2011-04-26 23:57:17 -04:00
Matthias Clasen
440bd2a975 GSequence: Make g_sequence_iter_move behave as documented
As pointed out in bug 658313, moving before the begin iter is
supposed to return the begin iter, not the end iter. Also add
a test for this behaviour.
2011-04-26 22:08:24 -04:00
Benjamin Otte
d5dc79c0b0 API: testutils: Add g_test_fail()
This allows tests to fail in a nonfatal way and the test runner can
continue if invoked with -k.

https://bugzilla.gnome.org/show_bug.cgi?id=647826
2011-04-18 14:52:29 +02:00
Benjamin Otte
9a12103259 testutils: Sprinkle code with newlines
Readable code ftw!
2011-04-18 14:49:51 +02:00
Benjamin Otte
d259d50afd testutils: Return number of bad tests from g_test_run_suite_internal()
In particular do not return a boolean disguised as an int.
2011-04-18 14:49:51 +02:00
Benjamin Otte
62e68ceec8 testutils: Remove unused variable 2011-04-18 14:49:51 +02:00
Benjamin Otte
19fdb18ef8 testutils: Return a boolean from g_test_case_run()
Return value is intened to be TRUE for success, FALSE for failure.
Currently we return TRUE all the time.
Previously the test returned 0 all the time.
2011-04-18 14:49:51 +02:00
Ryan Lortie
8b03077a44 GTimeZone: fix non-threadsafe refcounting
In the previous code, if the timezone was pulled out of the cache again
just as the last reference was being dropped, the cache code will
increase its refcount and return it while the unref code was freeing it.

Protect against that.

Closes #646435.
2011-04-14 09:56:00 -04:00