Commit Graph

4805 Commits

Author SHA1 Message Date
Ryan Lortie
e70250bbd5 Export __glib_assert_msg
Put __glib_assert_msg in the dynamic symbol table, but not in any public
headers.

This variable is _not_ part of our API but this way debuggers and
automated crash report utilities will be able to access this variable,
even if debug symbols are not available.

https://bugzilla.gnome.org/show_bug.cgi?id=701800
2013-08-17 12:10:23 -04:00
Dan Winship
fd5b1939bd build: fix dtrace-related warnings
Fix the warnings when compiling and linking the probes files by
calling dtrace with all the -W flags removed from CFLAGS (since dtrace
generates bad C code), and with CC set to "libtool --mode=compile ..."
(so that it will output a proper .lo file and libtool won't warn when
linking it into the .la).

https://bugzilla.gnome.org/show_bug.cgi?id=693335
2013-08-17 10:34:32 -04:00
Dan Winship
5415537edb glib/tests/gdatetime: use UTC time in test_GDateTime_diff()
test_GDateTime_diff() checks that the span from 2009-01-01 to
2010-01-01 is exactly 365 * G_TIME_SPAN_DAY, but it does this using
local time, and so fails if you are in a timezone that is in the
southern hemisphere which only did DST during one of 2008-2009 and
2009-2010 (in which case the year will end up being one hour too long
or too short).

Switch the diff tests to use UTC time instead; there are plenty of
other local time tests already.

https://bugzilla.gnome.org/show_bug.cgi?id=701529
2013-08-17 10:25:26 -04:00
Colin Walters
4cea6625cb giochannel: Add an out annotation for g_io_channel_read_unichar()
Since it's an output variable.

https://bugzilla.gnome.org/show_bug.cgi?id=704165
2013-08-15 19:45:34 -04:00
Ryan Lortie
c235240905 g_get_tmp_dir(): Clean up envars
On UNIX, we should only ever be looking at TMPDIR.

On Windows, we should only ever look at TEMP.

Also, clean up the documentation to better describe what is actually
happening.  The previous docs may have left someone confused about why
this function returns "/var/tmp" on Solaris, even with no TMPDIR set.

https://bugzilla.gnome.org/show_bug.cgi?id=705075
2013-08-04 17:26:05 +02:00
Chun-wei Fan
d0b4f59e8c Add MSVC implementations of G_GNUC_*_IGNORE_DEPRECATIONS
As Visual Studio 2008 and later have support for the __pragma keyword,
where the compiler pragmas can be used in a macro, we can support
G_GNUC_BEGIN_IGNORE_DEPRECATIONS and G_GNUC_END_IGNORE_DEPRECATIONS
for Visual Studio 2008 and later, so many deprecation (C4996) warnings
can be suppressed when using these compilers when we use these macros
in the code.

https://bugzilla.gnome.org/show_bug.cgi?id=704543
2013-07-29 10:26:01 +08:00
Matthias Clasen
d9359765ac Use better assertion macros
Use g_assert_cmpint and friends in the convert test, to get
more telling messages when they fail.
2013-07-28 18:39:51 -04:00
Matthias Clasen
39460701d4 Avoid an unused variable warning 2013-07-28 18:39:42 -04:00
Colin Walters
331e93c3f1 Drop iconv caching code
This was introduced for Solaris performance theoretically;
we have never been able to use it on Linux/glibc because
the UTF-16 BOM state isn't reset.

We have no data about Solaris performance; were some to
still exist, we could reintroduce the code with an explicit
check for Solaris, not a check for glibc.

https://bugzilla.gnome.org/show_bug.cgi?id=704999
2013-07-28 18:37:47 -04:00
Dan Winship
2127654da5 mainloop: redo child source tests to not use timeouts
The timeout-based tests could fail on slow or heavily-loaded machines.
Change them to use a counter-based "timeout" source rather than a
time-based one, so they no longer depend on wall time.

https://bugzilla.gnome.org/show_bug.cgi?id=700460
2013-07-24 14:22:23 -04:00
Colin Walters
baf7f1e23e tests/unix: Don't error immediately on timeout
On a heavily loaded system, it's possible that both our normal
condition *and* the timeout occurred.  In that case we can just ignore
the timeout.

While I did add a "sig_timeout" boolean, we don't need to add any
assertions around whether or not it was reached - the assertions
covering the non-timeout case are sufficient.  The sig_timeout boolean
is mainly for later debugging.

https://bugzilla.gnome.org/show_bug.cgi?id=700460
2013-07-23 14:43:38 -04:00
Colin Walters
2e471acfca gmain: Reset signal handlers to default when source is destroyed
If someone creates a unix signal source for e.g. SIGINT, and then
removes it, reset the handler to SIG_DFL.

Not doing this was the source of race conditions in the
glib/tests/unix test, but this will also just make us a "good citizen"
by cleaning up.

For example, if a project temporarily creates a handler for SIGTERM,
and then later removes it, they almost certainly want SIGTERM to
revert to the default of terminating the process, rather than doing
nothing.

https://bugzilla.gnome.org/show_bug.cgi?id=704699
2013-07-23 14:43:15 -04:00
Sébastien Wilmet
6fbb146342 GRegex: add g_regex_get_max_lookbehind()
It is useful for multi-segment regex matching.

A unit test is included.

https://bugzilla.gnome.org/show_bug.cgi?id=689794
2013-07-23 15:43:22 +02:00
Milan Crha
64041ca498 g_thread_create_full() can dereference NULL pointer
In case of the thread creation failure, and the thread was not created
as joinable, the g_thread_create_full() could dereference a NULL pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=704523
2013-07-22 09:54:33 +02:00
Sébastien Wilmet
4f327d6379 GRegex: update documentation for partial matching
The restrictions on partial matching no longer apply with PCRE >= 8.00.

The pcrepartial manpage contains the "FORMERLY RESTRICTED PATTERNS"
section:

"For  releases  of PCRE prior to 8.00, because of the way certain
internal optimizations were implemented in the pcre_exec() function, the
PCRE_PARTIAL option (predecessor of PCRE_PARTIAL_SOFT) could not be used
with all patterns. From release 8.00 onwards, the restrictions no
longer  apply,  and  partial  matching  with  can  be requested for any
pattern."

https://bugzilla.gnome.org/show_bug.cgi?id=704250
2013-07-20 11:07:46 +02:00
Sébastien Wilmet
b3968fb150 Improve documentation
- Mention G_SOURCE_CONTINUE and G_SOURCE_REMOVE in the GSourceFunc doc;
- Mention G_PARAM_READWRITE and G_PARAM_STATIC_STRINGS in the
  GParamFlags doc;
- Fix "Since:" version for G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE;
- Fix typo.

https://bugzilla.gnome.org/show_bug.cgi?id=704250
2013-07-20 11:07:46 +02:00
Igor Pashev
dc87c453fb tests/gvariant: Canonicalize to lower case to work on Illumos (OpenSolaris)
Solaris libc gives lowercase strings.

https://bugzilla.gnome.org/show_bug.cgi?id=704585
2013-07-19 18:23:29 -04:00
Giovanni Campagna
be2c7b83c4 glib-unix: fix handling of multiple signal source for the same signal
We can't reset the pending flag for a signal until we've traversed
the whole list, as the documentation clearly says that in case multiple
sources they all get invoked.
This is still racy if you get a signal after checking the flag
but before resetting it, but it was the same before. The correct
fix would be to use sigwait() or signalfd(), but that would mean
blocking all signals in all threads, which is not compatible
with existing applications.

https://bugzilla.gnome.org/show_bug.cgi?id=704322
2013-07-19 09:34:47 +02:00
Colin Walters
ff68fca9e9 tests/mainloop: Fix assertions to really avoid race conditions
As the comment says, we may be delayed an arbitrary amount of time on
non-idle systems; update the assertions to reflect this.

This should fix periodic failures in the gnome-ostree continuous
integration system.

https://bugzilla.gnome.org/700460
2013-07-14 14:46:43 +01:00
Dan Winship
8a89926532 gsourceclosure: Add support for GUnixSignalWatchSource and GUnixFDSource
https://bugzilla.gnome.org/show_bug.cgi?id=701511
2013-07-13 16:38:55 -04:00
Ryan Lortie
6dc5c118e4 Implement the Desktop Action specification
For some time, the desktop file specification has supported "additional
application actions".  This is intended to allow for additional methods
of starting an app, such as a mail client having a "Compose New Message"
action that brings up the compose window instead of the folder list.

This patch adds support for this with a relatively minimal API.

In the case that the application is a GApplication and DBusActivatable,
desktop actions are translated into GActions that have been added to the
application with g_action_map_add_action().  This more or less closes
the loop on being able to activate an application with an action
invocation (instead of 'activate').

https://bugzilla.gnome.org/show_bug.cgi?id=664444
2013-07-11 12:48:08 -04:00
Ryan Lortie
662e3c4891 GVariant: fix two small/theoretical leaks
Fix some leaks that turned up while valgrinding the GVariant testcase.

These leaks are small and only occur when there is already an error in
the program: they are leaks of temp strings used when formatting a
critical message.

These show up as leaks again the testcase under the new "expect
messages" approach.  Previously, we fork()ed and these caused the
subprocess to abort, which is why this was not noticed before.
2013-07-11 12:26:33 -04:00
Ryan Lortie
1c586e44be Add g_variant_new_printf
Add a quick way to get a floating GVariant from printf formatting.
2013-07-11 12:16:44 -04:00
Matthias Clasen
1c1255772b Minor doc tweak 2013-07-09 13:23:22 -04:00
Sebastian Dröge
dbdfcb69ce gthread: Use pthread_cond_timedwait_monotonic() if available
Otherwise we have to rely on pthread_cond_timedwait() actually using
the monotonic clock, which might be true or not. On Android at least
it is using the realtime clock, no pthread_condattr_setclock() is available
but instead pthread_cond_timedwait_monotonic() can be used.
2013-07-04 10:41:59 +02:00
Ryan Lortie
3cefb7248a Revert two errant commits to GMutex, etc.
This reverts commits dfbac178bd and
56348210f3.

These two commits introduce undesirable behaviour and were made with no
apparent approval from anybody at all, and without reference to a bug or
mailing list discussion.
2013-07-01 23:30:47 -04:00
Paul Barbieri
e55ccf7338 gspawn: Fix leak of internal pipe with G_SPAWN_LEAVE_DESCRIPTORS_OPEN
Even when the app author specifies G_SPAWN_LEAVE_DESCRIPTORS_OPEN,
we should avoid leaking our internal pipe machinery into the
child.

Commit message written by: Colin Walters <walters@verbum.org>

https://bugzilla.gnome.org/show_bug.cgi?id=703407
2013-07-01 21:10:28 +01:00
Bastien Nocera
1891eafd1d Fix typo in documentation
s/doucumentation/documentation
2013-07-01 08:40:40 +02:00
Jeffrey Stedfast
dfbac178bd Finish the previous fix for GMutex, GRecMutex, GRWLock and GCond 2013-06-30 14:02:38 -04:00
Jeffrey Stedfast
56348210f3 Fixed g_mutex_clear() to fully undo g_mutex_init()
In order to fully undo the effects of g_mutex_init(),
it is necessary to reset the internal mutex pointer
back to NULL so that a later call to g_mutex_init()
actually works as expected.
2013-06-30 13:46:28 -04:00
Sébastien Wilmet
b05bf77223 Doc: small fixes
This commit adds the GTestSubprocessFlags enum to the docs, and fixes
several minor typos in various places.

https://bugzilla.gnome.org/show_bug.cgi?id=703254
2013-06-30 10:32:18 +02:00
Dan Winship
b7b3838401 Make G_STRFUNC consistent across platforms
Recent versions of clang have changed __PRETTY_FUNCTION__ to always
include the function signature (rather than including the function
signature in C++ but not in C like gcc does). This causes G_STRFUNC to
give different results under clang and gcc, causing some tests with
g_test_expect_messages() to fail.

Fix this by only using __PRETTY_FUNCTION__ in C++, and using
__FUNCTION__ in C. (Under gcc this change has no effect.)

https://bugzilla.gnome.org/show_bug.cgi?id=702147
2013-06-29 23:23:36 -04:00
Dan Winship
5989651bee tests: add a test for the previous commit 2013-06-25 09:35:05 -04:00
Wim Taymans
1d5c815ecd gmain: handle blocked source in g_source_add_child_source()
When a child_source is added to a blocked source it has no context, yet we
call block_source on it that segfaults when it dereferences the NULL context
when it attempts to remove the file descriptors. To fix this we:

- Ensure that when we block a source, we don't attempt to remove its file
  descriptors from a NULL context.

- Also ensure that when we attach a blocked source to a context, we don't add the
  file descriptors to the context.

https://bugzilla.gnome.org/show_bug.cgi?id=701283
2013-06-25 09:25:57 -04:00
Colin Walters
4829e02c09 Revert "g_file_set_contents(): don't fsync on ext3/4"
We didn't actually do any real-world testing of this, and
unsurprisingly it turns out to break in at least one widely-used
configuration (Fedora 19 x86_64, ext4 on LVM).

This reverts commit 9d0c17b501.

https://bugzilla.gnome.org/show_bug.cgi?id=701560
2013-06-20 16:49:49 -04:00
Arnel A. Borja
19e20084ab g_uri_unescape_string: Mention (allow-none)/%NULL in documentation
https://bugzilla.gnome.org/show_bug.cgi?id=701409
2013-06-19 17:26:45 +02:00
Arnel A. Borja
8d29a5a357 g_uri_escape_string: Add missing allow-none annotation
https://bugzilla.gnome.org/show_bug.cgi?id=701409
2013-06-19 17:26:45 +02:00
Matthias Clasen
1eefcb4d66 Plug a small memory leak
g_test_trap_assertions was leaking the process_id string.
2013-06-16 09:28:59 -04:00
Colin Walters
9d9532bdd3 gmain: Document more use cases of g_main_context_wakeup()
https://bugzilla.gnome.org/show_bug.cgi?id=701878
2013-06-11 01:46:08 +02:00
Benjamin Otte
8a37af7f0e tests: Add a test for a specific invariant
See the documentation in the test. The invariant is used by
gnome-test-runner.

https://bugzilla.gnome.org/show_bug.cgi?id=701878
2013-06-11 01:46:08 +02:00
Ryan Lortie
afc8b1020a GDesktopAppInfo: support DBusActivatable
Support the sender-side of the freedesktop application specification for
cases that we find 'DBusActivatable=true' in the desktop file.

https://bugzilla.gnome.org/show_bug.cgi?id=699259
2013-06-07 18:36:55 -04:00
Ryan Lortie
9d0c17b501 g_file_set_contents(): don't fsync on ext3/4
ext3 and ext4 (for quite some time) with default mount options don't
need fsync() to ensure safety of replace-by-rename.  Stop doing that for
these filesystems.

Note: this patch also impacts ext2, which is probably not safe, but I
don't know of any way to check ext2. vs the others because they all have
the same magic numbers (short of opening /proc/mount).

This patch assumes that if BTRFS_SUPER_MAGIC is defined then so will be
EXT3_SUPER_MAGIC.

https://bugzilla.gnome.org/show_bug.cgi?id=701560
2013-06-04 09:52:10 -04:00
Ryan Lortie
c828aef014 g_file_set_contents: change {posix_ => }fallocate
Use fallocate() instead of posix_fallocate() so that we just fail
instead of getting the emulated version from the libc.

https://bugzilla.gnome.org/show_bug.cgi?id=701560
2013-06-03 22:55:20 -04:00
Ryan Lortie
fc98c13fde g_file_set_contents(): fix simple logic error
CI FTW.
2013-06-03 17:59:29 -04:00
Ryan Lortie
e40435e834 g_file_set_contents(): use unistd instead of stdio
Use a normal write() system call instead of fdopen() and fwrite().

This will definitely work on UNIX system and should work on Windows as
well...

As an added bonus, we can use g_close() now as well.

https://bugzilla.gnome.org/show_bug.cgi?id=701560
2013-06-03 17:49:06 -04:00
Ryan Lortie
c152ceba09 g_file_set_contents(): don't allocate display name
g_file_set_contents() sets a GError in the event of various failures
that count occur.  It uses g_filename_display_name() in order to get the
filename to include in the messages.

Factor out the error handling to make it easier to allocate the display
name only when we need it (instead of allocating it every time).

https://bugzilla.gnome.org/show_bug.cgi?id=701560
2013-06-03 17:43:36 -04:00
Ryan Lortie
d3be43fcc5 g_file_set_contents(): use posix_fallocate()
Extents-based filesystems like knowing in advance how much data will be
written to a file in order to prevent fragmentation.  If we have it, use
posix_fallocate() before writing data in g_file_set_contents().

https://bugzilla.gnome.org/show_bug.cgi?id=701560
2013-06-03 16:12:04 -04:00
Kjell Ahlstedt
9acc480d72 Remove extra comma in gtestutils.h
https://bugzilla.gnome.org/show_bug.cgi?id=701474
2013-06-03 09:37:01 +02:00
Matthias Clasen
7977bb15de Skip spawn tests when collecting coverage
These tests break gcov's data collection, so don't link them
against -lgov. See bug 682133.
2013-06-01 18:54:57 -04:00
Matthias Clasen
c0f96bb276 mem-overflow: test malloc and realloc corner cases 2013-06-01 18:51:25 -04:00
Ryan Lortie
f9eb9eed10 Rework the build system for a new tests approach
Perform a substantial cleanup of the build system with respect to
building and installing testcases.

First, Makefile.decl has been renamed glib.mk and substantially
expanded.  We intend to add more stuff here in the future, like canned
rules for mkenums, marshallers, resources, etc.

By default, tests are no longer compiled as part of 'make'.  They will
be built when 'make check' is run.  The old behaviour can be obtained
with --enable-always-build-tests.

--disable-modular-tests is gone (because tests are no longer built by
default).  There is no longer any way to cause 'make check' to be a
no-op, but that's not very useful anyway.

A new glibtests.m4 file is introduced.  Along with glib.mk, this
provides for consistent handling of --enable-installed-tests and
--enable-always-build-tests (mentioned above).

Port our various test-installing Makefiles to the new framework.

This patch substantially improves the situation in the toplevel tests/
directory.  Things are now somewhat under control there.  There were
some tests being built that weren't even being run and we run those now.
The long-running GObject performance tests in this directory have been
removed from 'make check' because they take too long.

As an experiment, 'make check' now runs the testcases on win32 builds,
by default.  We can't run them under gtester (since it uses a pipe to
communicate with the subprocess) so just toss them in TESTS.  Most of
them are passing on win32.

Things are not quite done here, but this patch is already a substantial
improvement.  More to come.
2013-05-31 23:12:15 -04:00
Ryan Lortie
e66abbe2ef Some final g_test_build_filename() porting
This should be the last users that need to be ported.

For some of the oldschool non-gtester-ified tests, we call g_test_init()
from main() because it is necessary in order to use
g_test_build_filename().
2013-05-31 23:03:19 -04:00
Matthias Clasen
eb16c5a4fe Fix a typo 2013-05-31 17:24:14 -04:00
Ryan Lortie
8df1bb3486 Rename G_TEST_DISTED to G_TEST_DIST
Since this feature is so utterly automake-centric, we may as well be
using the same terminology as automake itself (ie: although it's
BUILT_SOURCES, it's DIST_EXTRA, not DISTED).

Also add some comments to the enum explaining that these terms are
really corresponding directly to the automake terms.

https://bugzilla.gnome.org/show_bug.cgi?id=549783
2013-05-29 09:03:32 -04:00
Ryan Lortie
da478acd3c Remove G_TEST_DATA= from installed .test files
This is no longer needed with the new test data file finding stuff.

https://bugzilla.gnome.org/show_bug.cgi?id=549783
2013-05-29 09:03:32 -04:00
Ryan Lortie
17ded322c5 tests: move tests to new _get_filename() API
This API was introduced to save a few lines of code here and there, so
let's start by removing a bunch from our own tests.

https://bugzilla.gnome.org/show_bug.cgi?id=549783
2013-05-29 09:03:32 -04:00
Ryan Lortie
575a9da718 gtest: Add more path building API
Add a pair of functions for returning strings that don't need to be
freed.  This is a bit of a hack but it will turn the 99% case of using
these functions from:

  gchar *tmp;
  tmp = g_test_build_filename (...);
  fd = open (tmp, ...);
  g_free (tmp);

to:

  fd = open (g_test_get_filename (...), ...);

which is a pretty substantial win.

https://bugzilla.gnome.org/show_bug.cgi?id=549783
2013-05-29 09:03:32 -04:00
Ryan Lortie
58c6ca32aa tests: use new g_test_build_filename() API
Port most of the tests to the new g_test_build_filename() API.

https://bugzilla.gnome.org/show_bug.cgi?id=549783
2013-05-29 09:03:31 -04:00
Ryan Lortie
0c4806733c Add g_test_build_filename()
This function allows testcases to find data files in various situations
of srcdir == builddir, srcdir != builddir and for installed tests.

https://bugzilla.gnome.org/show_bug.cgi?id=549783
2013-05-29 09:03:31 -04:00
Ryan Lortie
aa3db2c91b tests: fix a srcdir vs. destdir issue
The target file is a script, so it'll always be in SRCDIR for the uninstalled
case.  Just look there and avoid the libtool trickery.
2013-05-27 18:12:54 -04:00
Colin Walters
0b167b0ae9 build: Fix usage of %.test again
We actually need the first dependency because it includes the
final executable name.  Rather, fix the original bug by using
the variable $(EXEEXT).
2013-05-24 22:16:44 +01:00
Colin Walters
5088c705ac tests: Drop unnecessary % from .test pattern match rule
On Windows, the executables will have .exe, so this won't
match.  Furthermore, they aren't actually dependent on the
executable to build.
2013-05-24 16:30:21 -04:00
Simon Kågedal Reimer
ec61deb791 G_GNUC_FORMAT: documentation error
Attribute should be placed just before the semicolon, not after.
As can be seen in the example.

https://bugzilla.gnome.org/show_bug.cgi?id=699779
2013-05-23 22:14:59 -04:00
Colin Walters
ff8f37ac05 glib/tests/cond: Fix race condition
The producer could push two values with the first one being
lost.  Fix this by blocking the producer until a consumer
reads.
2013-05-23 01:11:26 +01:00
Dan Winship
9115dd0a7c gtestutils: Use stdio rather than write() to be Windows-friendly
Windows doesn't define STDOUT_FILENO and STDERR_FILENO, and they're
not even guaranteed to be 1 and 2. So just use stdio instead. Also fix
a counting error. Pointed out on gtk-devel-list.
2013-05-22 14:25:50 -03:00
Dan Winship
4b94c0831e Use 'dumb quotes' rather than `really dumb quotes'
Back in the far-off twentieth century, it was normal on unix
workstations for U+0060 GRAVE ACCENT to be drawn as "‛" and for U+0027
APOSTROPHE to be drawn as "’". This led to the convention of using
them as poor-man's ‛smart quotes’ in ASCII-only text.

However, "'" is now universally drawn as a vertical line, and "`" at a
45-degree angle, making them an `odd couple' when used together.

Unfortunately, there are lots of very old strings in glib, and also
lots of new strings in which people have kept up the old tradition,
perhaps entirely unaware that it used to not look stupid.

Fix this by just using 'dumb quotes' everywhere.

https://bugzilla.gnome.org/show_bug.cgi?id=700746
2013-05-21 11:23:22 -03:00
Colin Walters
f2a9a6142c gmessages: Fix up testing commit to handle fatal masquerading
This makes glib/tests/testing pass again.
2013-05-21 00:07:18 +01:00
Colin Walters
714cbbea52 gtestutils: Ensure test subprocesses don't dump core
Since we expect them to crash, let's not spam the system
core dump collection (systemd, abrt).  At the moment
systemd is not very robust against programs crashing
in loops.

Instead of aborting, we exit(1).

https://bugzilla.gnome.org/show_bug.cgi?id=700714
2013-05-20 19:07:55 +01:00
Colin Walters
ad7959c5b7 Add --enable-installed-tests configure option
See https://live.gnome.org/GnomeGoals/InstalledTests for more
information.

The tests now support being run both uninstalled and installed, so
'make check' works for those who want it.  For tests which need data
files, the way this works is they look in the compiled in value of
SRCDIR by default, and the generated tests use "env G_TEST_DATA=" to
override that.

This patch only converts glib/tests for now; if this patch looks good,
I'll do the rest of the tests.

https://bugzilla.gnome.org/show_bug.cgi?id=699079
2013-05-16 08:51:57 -04:00
Colin Walters
91d7c8de6b glib/tests: Drop unnecessary SRCDIR definitions
It's always going to be defined, we don't support compiling these
tests "by hand".  This is a cleanup commit for the installed tests
work.

https://bugzilla.gnome.org/show_bug.cgi?id=699079
2013-05-16 08:51:57 -04:00
Colin Walters
225d8fb97d glib/tests: Use explicit file listings
This is a preparatory commit for installed tests work; having things
cleanly categorized helps.

https://bugzilla.gnome.org/show_bug.cgi?id=699079
2013-05-16 08:51:57 -04:00
Colin Walters
6e64bbe8de glib/tests/mappedfile: Copy test file before writing to it
This way we're *always* testing writability rather than only sometimes
doing it in the source directory.

https://bugzilla.gnome.org/show_bug.cgi?id=699079
2013-05-16 08:51:57 -04:00
Dan Winship
e195490a87 tests/slice: use G_GNUC_BEGIN_IGNORE_DEPRECATIONS
rather than implementing it by hand
2013-05-13 12:10:53 -04:00
Dan Winship
eebb3c1c8e gtestutils: use g_clear_pointer 2013-05-13 12:10:53 -04:00
Dan Winship
e9284ed297 gtestutils: deprecate g_test_trap_fork()
https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:53 -04:00
Dan Winship
e3d1869ee3 tests: port from g_test_trap_subprocess() to g_test_trap_fork()
https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:52 -04:00
Dan Winship
467f9ea1bc tests/protocol: redo a bit
Rather than overloading --verbose, just skip the tests that aren't
supposed to be run in the parent process (so that if you do run the
toplevel test with --verbose, it doesn't immediately error out).

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:52 -04:00
Dan Winship
960f5500e2 gtestutils: add g_test_trap_subprocess()
g_test_trap_fork() doesn't work on Windows and is potentially flaky on
unix anyway given the fork-but-don't-exec. Replace it with
g_test_trap_subprocess(), which re-spawns the same program with
arguments telling it to run a specific (otherwise-ignored) test case.

Make the existing g_test_trap_fork() unit tests be unix-only (they
never passed on Windows anyway), and add a parallel set of
g_test_trap_subprocess() tests.

Also fix the logic of gtestutils's "-p" argument (which is used by the
subprocess tests); previously if you had tests "/foo/bar" and
"/foo/bar/baz", and ran the test program with "-p /foo/bar/baz", it
would run "/foo/bar" too. Fix that and add tests.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:52 -04:00
Dan Winship
38859e8e29 g_test_trap_fork: don't blow away the SIGCHLD handler
Not sure why it was doing this, but it's not necessary (all of glib's
tests pass fine without it), and it breaks tests that try to use
g_spawn_sync() or GChildWatchSource after doing a g_test_trap_fork().

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:52 -04:00
Dan Winship
4c356443b8 tests/spawn-*.c: fix on Windows
Need to append ".exe" to the spawned binary name on Windows

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2013-05-13 12:10:52 -04:00
Dan Winship
13958ee429 gbitlock: fix this to not unconditionally use futex emulation
Ryan accidentally committed some debugging code a long time ago,
causing this file to always use futex emulation even when real futex
support was available. I noticed this a while later and pointed it out
to him, and assumed he was going to fix it, but I guess he assumed I
was going to fix it, and then neither of us did...

https://bugzilla.gnome.org/show_bug.cgi?id=699500
2013-05-04 10:09:39 -04:00
Colin Walters
f61daa6ed2 tests/mappedfile: Also handle ENOMEM
The RHEL6.4 kernel gives me that instead of EINVAL.

https://bugzilla.gnome.org/show_bug.cgi?id=699485
2013-05-02 14:04:41 -04:00
Colin Walters
518e3104bf configure: Assume C90 compatible malloc() prototype
This ancient code was attempting to cope with (unknown) systems whose
malloc() prototype was incompatible with the standard.  This test was
fragile; it would break if the build environment provided -Wall in
CFLAGS.

Now that it's 2013, let's assume that target systems have a sane
malloc().  If someone complains, we can revisit this.

https://bugzilla.gnome.org/698716
2013-04-26 16:23:42 -04:00
Ryan Lortie
eb860fd898 Partially revert "Merge waitpid() from g_spawn_sync into gmain()"
This partially reverts commit ce0022933c.

It used to be safe to use g_spawn_sync() from processes that had their
own SIGCHLD handler because it simply called wait().  When it was
changed to depend on the GLib child watching infrastructure this meant
that GLib had to own the SIGCHLD handler.

This caused hangs in at least Pidgin.

The patch contained two other improvements to the child watch code which
we want to keep, so only revert the changes to gspawn itself.

https://bugzilla.gnome.org/show_bug.cgi?id=698081
2013-04-23 14:39:09 -04:00
Ryan Lortie
00fbc2f0ce gslice: disable by default under valgrind
All experienced GLib hackers know that G_SLICE=always-malloc is
absolutely essential when valgrinding but many users of GLib don't know
about this and get hit pretty hard when valgrinding their programs.

When initialising gslice, add a check to see if we are running under
valgrind and disable ourselves if we are.

We only do the check in the case that G_SLICE= was not specified in the
environment, so setting it to an empty string will prevent this default
behaviour.

I considered modifying gslice to use the VALGRIND_MALLOCLIKE_BLOCK
client request in all cases in order to just mark the blocks properly
but these calls are not free and gslice is pretty hyper-optimised.  It's
easier to just disable gslice completely and this way we only have to do
one check during startup.  It's also theoretically possible that someone
might want to use valgrind to debug gslice, in which case the extra
annotations would probably cause quite a lot of difficulty.

https://bugzilla.gnome.org/show_bug.cgi?id=698595
2013-04-22 16:15:31 -04:00
Ryan Lortie
c8d56d7cf7 Add a copy of valgrind.h to glib/
This is a BSD-licenced header file that is designed to be copy-pasted
into programs.  It will allow us to detect if we are running under
Valgrind and send "client requests" to it.

We will use this for a couple of reasons in upcoming patches.

https://bugzilla.gnome.org/show_bug.cgi?id=698595
2013-04-22 16:15:16 -04:00
Lars Uebernickel
ac1379e22c g_variant_get_data_as_bytes: return a sub-bytes if necessary
https://bugzilla.gnome.org/show_bug.cgi?id=698457
2013-04-20 19:24:47 -04:00
Ryan Lortie
dbb65b5465 GVariant: add new g_variant_new_take_string() API
Lots of people have variously asked for APIs like
g_variant_new_string_printf() in order to avoid having to use
g_strdup_printf(), create a GVariant using g_variant_new_string(), then
free the temporary string.

Instead of supporting that, plus a million other potential cases,
introduce g_variant_new_take_string() as a compromise.

It's not possible to write:

 v = g_variant_new_take_string (g_strdup_printf (....));

to get the desired result and avoid the extra copies.  In addition, it
works with many other functions.

https://bugzilla.gnome.org/show_bug.cgi?id=698455
2013-04-20 18:58:24 -04:00
Ryan Lortie
57cd876321 GVariant parser: tweak lexer for format strings
Tweak the lexer so that '[%s]' gets parsed as three separate tokens,
instead of the closing bracket getting sucked into the format string.
2013-04-19 11:40:04 -04:00
Ryan Lortie
1d87c6c7f8 GVariant parser: turn two asserts into soft errors
Parsing wrongly-typed GVariant text format data is a well-defined
operation and it ought to result in a GError.  We do that for most
cases, but 'v' and 'ay' were being treated differently.  Fix those as
well.
2013-04-19 11:40:04 -04:00
Robert Bragg
c70b497859 utils: avoid redundant set/endpwent around getpwuid
set/endpwent are only required for iterating through passwd entries
using getpwent(). Since we are explicitly requesting a passwd entry
for a uid then the set/endpwent calls are redundant.

Removing these redundant calls is required for building on Android
since their C library doesn't implement these.

https://bugzilla.gnome.org/show_bug.cgi?id=645881
2013-04-17 04:36:24 -04:00
Giovanni Campagna
d171e83347 GVariant: fix transfer annotation
g_variant_new_from_bytes() returns a floating reference, so it
must be annotated (transfer none)

https://bugzilla.gnome.org/show_bug.cgi?id=697887
2013-04-16 15:57:19 +02:00
Sebastian Dröge
bcbaf1bef0 Fix compilation on Android with the bionic C library
https://bugzilla.gnome.org/show_bug.cgi?id=689223
2013-04-16 13:24:26 +02:00
Jasper St. Pierre
5e2cad9de9 bookmarkfile: Fix annotations on GBookmarkFile 2013-04-12 16:41:57 -04:00
Marek Kasik
3c614be04a tests: Add test for disabled help options
Test whether help options are hidden when they are disabled
by g_option_context_set_help_enabled(.., FALSE).

https://bugzilla.gnome.org/show_bug.cgi?id=697652
2013-04-12 17:04:06 +02:00
Marek Kasik
d20336130d Don't show help options when help is disabled
Check whether help is enabled when creating help text
in g_option_context_get_help().

https://bugzilla.gnome.org/show_bug.cgi?id=697652
2013-04-12 17:04:02 +02:00
Dan Winship
0513c855cb gmain: fix double-unlock in g_main_context_unref()
When unreffing a context with sources still attached, it would end up
unlocking an already-unlocked context, causing crashes on platforms
that (unlike Linux) actually check for that.

https://bugzilla.gnome.org/show_bug.cgi?id=697595
2013-04-10 11:39:12 -04:00
Robert Ancell
907a931082 Fix deprecation warning for g_io_channel_read 2013-04-10 15:55:37 +12:00
Руслан Ижбулатов
2ca9dda72a win32: Allow POSIX threads to be used if --with-threads=posix
All tests pass with this patch AND a good pthreads implementation
(i'm using winpthreads, not pthreads-w32).

https://bugzilla.gnome.org/show_bug.cgi?id=697626
2013-04-09 14:10:13 +02:00
Руслан Ижбулатов
0a130c8bb0 win32: Fix warning 2013-04-09 14:02:54 +02:00
James Turner
690d6b97f8 g_atomic_int_get, g_atomic_pointer_get: accept const arguments
https://bugzilla.gnome.org/show_bug.cgi?id=697386
2013-04-08 14:15:22 +02:00
Antoine Jacoutot
aba02c5248 simpler regex match on the shebang
The previous pattern didn't match on traditional non-GNU sed(1).
https://bugzilla.gnome.org/show_bug.cgi?id=696629
2013-04-07 09:09:59 +02:00
Jesse van den Kieboom
fb1ad873a6 GDateTime to GTimeZone in opaque structure doc 2013-04-05 08:01:17 +02:00
Cosimo Cecchi
3b4c9f5fcc gversionmacros: fix a typo 2013-04-04 13:15:00 -04:00
Colin Walters
d1bbab5689 gmacros: Mark G_UNAVAILABLE() functions as deprecated (gcc <= 4.4)
RHEL6 ships with GCC 4.4 by default, which doesn't understand the
nicer deprecated attribute that takes a message.  However, we can at
least fall back to the old G_DEPRECATED, rather than silently doing
nothing.

This gives me warning messages when building OSTree on RHEL6 when I
accidentally added a usage of g_unix_fd_source_new().

https://bugzilla.gnome.org/show_bug.cgi?id=697160
2013-04-03 00:33:45 -04:00
Colin Walters
e359130e3e ghash: Suppress -Wmaybe-uninitialized from GCC 4.4
It's not clever enough to figure out that these are always initialized
in code paths that use them.

Reviewed-By: Benjamin Otte <otte@gnome.org>
2013-04-02 14:14:42 -04:00
Ryan Lortie
e1fdd59f08 Add GLib 2.38 version macros 2013-04-01 16:53:53 -04:00
Murray Cumming
e4eaa14a8e Corrected a GLIB_AVAILABLE_IN_* 2013-03-21 13:11:03 +01:00
Ryan Lortie
a8939a67de tests: remove a pair of testcases that fail in en_CA
These testcases don't work with the Canadian date format, so remove
them.
2013-03-18 22:57:55 -04:00
Christian Persch
9863cce079 goption: g_option_context_new allows NULL for parameter_string 2013-03-18 14:11:05 +01:00
Matthias Clasen
5825dd864b g_hash_table_get_keys: Improve docs slightly
https://bugzilla.gnome.org/show_bug.cgi?id=630284
2013-03-17 23:30:34 -04:00
David King
0a13464df8 docs: Elaborate replacement for g_strncasecmp
https://bugzilla.gnome.org/show_bug.cgi?id=568405
2013-03-17 22:58:03 -04:00
David Schleef
9a08d81b0d Add warning to g_base64_decode()
https://bugzilla.gnome.org/show_bug.cgi?id=696015
2013-03-17 22:48:53 -04:00
Stephan Bergmann
255c65f83c gmacros: Ensure GUINT32/64_SWAP_LE_BE macros parenthesize arguments
Like all macros, we need to parenthesize arguments to ensure the order
of operations is correct.

See the mail thread starting at
<http://lists.fedoraproject.org/pipermail/devel/2013-March/180302.html>
"GCC produced wrong code in gvfs-1.14.2-3.fc18.x86_64" for how this
caused trouble with GVFS (which in turn caused trouble with
LibreOffice, where running "soffice sftp://.../.../test.odt" to access
an .odt file via GVFS failed to properly type-detect that file as a
Writer document and produced bogus error messages about the file being
broken).

https://bugzilla.gnome.org/show_bug.cgi?id=695925
2013-03-15 12:51:49 -04:00
Ryan Lortie
e359bc09c2 tests: clean up for Unicode corrigendum #9
Unicode corrigendum #9 spells out in no uncertain terms that on
conversion interfaces we should not reject characters like U+FFFE and
U+FFFF which we were doing before.

Commit f91ef4ef15 started accepting these
characters, but we had some testcases that were checking that strings
containing these characters should be rejected.

Update the tests.

https://bugzilla.gnome.org/show_bug.cgi?id=694669
2013-03-12 12:46:18 -04:00
Behdad Esfahbod
f67a9905ff [win32] Remove MemoryBarrier() fallback implementation
I added these because the older mingw32 toolchain didn't have
MemoryBarrier().  The newer mingw-w64 toolchain however has.
As reported by John Emmas this was causing build failure with
MSVC because of inline issues.  But that reminded me that we
may be taking this path even if the system implements
MemoryBarrier as a function, which is a waste.  So, just remove
it.
2013-03-07 20:21:12 -05:00
Christian Persch
f91ef4ef15 unicode: Allow noncharacters
Implement unicode corrigendum #9.

https://bugzilla.gnome.org/show_bug.cgi?id=694669
2013-03-05 17:27:53 +01:00
Ognyan Tonchev
06a59f889a base64: Fix g_base64_decode_step ()
Do not produce invalid data if there was padding character in the
previous sequence.

https://bugzilla.gnome.org/show_bug.cgi?id=694843
2013-03-05 10:55:29 -05:00
Colin Walters
27b19cee1b base64: Add tests for incremental decoding with very small block size
At the moment, sizes 1-3 are commented out since they fail, but
a future patch will fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=694843
2013-03-05 10:55:21 -05:00
Matthias Clasen
14768e97f8 Make GList more robust
g_list_delete_link was silently ignoring a NULL link before
the last change. Make it do so again, since we've found callers
that rely on this.
2013-03-01 19:11:11 -05:00
Chun-wei Fan
c7996825ce Fix gspawn-win32-helper.c with newer Microsoft CRTs
The newer Microsoft CRTs (8.0/2005 and later) impose much stricter
(paranoid) checks on close() being doubly called and the use of
invalid file descriptors.  This makes the calls on the file descriptors
use more caution when using them and only call close() when necessary.

This also adds an (empty) invalid parameter handler* as required by the
newer Microsoft CRTs to prevent the system from aborting the process
when we are checking whether a file descriptor is valid.

[*]: http://msdn.microsoft.com/en-us/library/a9yf33zb.aspx

https://bugzilla.gnome.org/show_bug.cgi?id=693646
2013-03-01 16:12:37 +08:00
Colin Walters
156b14cde5 build: Add --disable-compile-warnings
Some (broken) toolchains for example trip up
-Werror=missing-prototypes in system headers.  This patch allows
people to skip the formerly hardcoded "baseline" warnings.

https://bugzilla.gnome.org/show_bug.cgi?id=694757
2013-02-27 08:34:01 -05:00
Behdad Esfahbod
e3582c617c Minor 2013-02-25 23:08:43 -05:00
Behdad Esfahbod
e1ccae8416 [win32] Add fallback implementations for gatomic.c on mingw32
Bug 682896 - glib doesn't build on mingw32
2013-02-25 22:11:30 -05:00
Matthias Clasen
921593b022 GList: be more robust
We can detect list corruption in some cases. The new test case
demonstrates a case where we can warn instead of silently corrupt
the list. This was pointed out by Steve Grubb.

Also, use the same auxiliary routine in all places where we unlink
a list element.
2013-02-24 22:56:35 +01:00
Dan Winship
6833267a07 gtestutils: fix two GLIB_AVAILABLE flags
g_test_expect_message() and g_test_assert_expected_messages() appeared
in 2.34
2013-02-24 15:02:57 +01:00
Ryan Lortie
ce0ff7c9da threads: don't do rlimit test when running as root
Linux CAP_SYS_RESOURCE overrides RLIMIT_NPROC so we probably shouldn't
test thread creation failure when running the test as root...
2013-02-21 10:19:27 +00:00
Ryan Lortie
cfafad5aef gutils: stop g_get_home_dir() from reading passwd
In the case that the "HOME" environment variable is set (as it is under
normal circumstances), we don't really need to be opening /etc/passwd.

For historical reasons (ie: how we used to ignore $HOME) and due to the
grouping of many unrelated things together (reading username, hostname,
home directory, tmpdir, etc.) into one function we were still opening
/etc/passwd in g_get_home_dir(), even if $HOME was set.

Since earlier commits removed code from it, all that remains in
g_get_any_init_do() is the logic for dealing with $HOME and reading the
password database.

We now split the logic to deal with $HOME into g_get_home_dir().  With
only the password database functionality remaining, g_get_any_init_do()
is renamed to g_get_user_database_entry() and modified not to set global
variables but rather return a struct.  If g_get_home_dir() cannot find
$HOME, it falls back to calling g_get_user_database_entry() and using
the home directory from there.

Use of the 'g_utils_global' lock is further reduced by using
g_once_init_enter() to protect the critical sections in each of
g_get_user_database_entry() and g_get_home_dir().

Finally, the g_get_user_name() and g_get_real_name() functions are
modified to use the new regime.

https://bugzilla.gnome.org/show_bug.cgi?id=693204
2013-02-20 11:09:30 +00:00
Ryan Lortie
167c73faf4 gutils: replace direct references to g_home_dir
Some code was directly calling g_get_any_init() and then expecting to be
able to use the static 'g_home_dir' variable directly.  Change these
over to g_get_home_dir() instead.

https://bugzilla.gnome.org/show_bug.cgi?id=693204
2013-02-20 11:09:29 +00:00
Ryan Lortie
9879c7f5fa gutils: split out g_get_tmp_dir()
Remove the code for getting the tmpdir from g_get_any_init_do() and
outside of the g_utils_global lock.

https://bugzilla.gnome.org/show_bug.cgi?id=693204
2013-02-20 11:09:29 +00:00
Ryan Lortie
3c9691f7f8 gutils: split out g_get_host_name()
Remove the code for getting the hostname from g_get_any_init_do() and
outside of the g_utils_global lock.

https://bugzilla.gnome.org/show_bug.cgi?id=693204
2013-02-20 11:09:29 +00:00
Ryan Lortie
8c42a663f8 win32: Drop old codepage ABI from gutils.c
This is a source-compatible change and only breaks ABI with respect to
truly ancient binaries (and those binaries are already broken for other
reasons).

Back in the day, functions like g_get_user_name() used to return strings
in the system codepage instead of utf8 (as they do today).

It was decided at some point to change these functions to return utf8,
breaking source compatibility but keeping ABI compatibility.  This was
done by exporting new symbols with names like g_get_user_name_utf8() and
using a #define of the old name over to the new name (so that newly
compiled code would link against the _utf8 version, but old binaries
would continue to use the non-utf8 variant).

Meanwhile, glib has undergone several ABI breaks on Windows since, so
those old binaries don't work anymore.

Start to clean up this mess by removing the #define renaming.  New
binaries calling g_get_user_name() will now link against
g_get_user_name() and it will return utf8.

We must keep the functions like g_get_user_name_utf8() for binary
compatibility with recently built programs (ie: ones built with the
renaming).  Nobody should have ever been calling these directly and of
course they can return utf8, so just add them as internal wrappers in the
.c file and declare them _GLIB_EXTERN there.

One day, if we feel like breaking Windows ABI again, we can finish the
cleanup by dropping the wrappers.  There is some talk of introducing
something like 'ABI compatible for two years' and this change would be
compatible with such a regime.

https://bugzilla.gnome.org/show_bug.cgi?id=693204
2013-02-20 11:09:29 +00:00
Matthias Clasen
7788bb3a91 Make G_IO_FLAG_IS_WRITEABLE and enum value
Having it as a define was causing some problems for bindings.
https://bugzilla.gnome.org/show_bug.cgi?id=657045
2013-02-04 22:46:24 -05:00
Víctor Manuel Jáquez Leal
6b3ec82732 Compile private test with -pthread on UNIX
The commit f5f151cb removed this linkage, which is needed,
at least for the toolchain gcc version 4.7.2 (Debian 4.7.2-5)

https://bugzilla.gnome.org/show_bug.cgi?id=693105
2013-02-03 23:59:21 +01:00
Matthias Clasen
f802f467a5 Avoid a portability problem in the checksum test
String literals are not guaranteed to work like this.
https://bugzilla.gnome.org/show_bug.cgi?id=570572
2013-02-03 09:50:48 -05:00
Matthias Clasen
abbb54cdd6 Fix deprecation note for g_static_mutex_free
It should point at g_mutex_clear, not g_mutex_free.
https://bugzilla.gnome.org/show_bug.cgi?id=678223
2013-02-03 01:30:05 -05:00
Matthias Clasen
d632713a77 Make G_DISABLE_DEPRECATED work again for wholly deprecated headers
Patch by Milan Crha,

https://bugzilla.gnome.org/show_bug.cgi?id=688169
2013-02-03 01:11:02 -05:00
Dan Winship
39a528b9fd g_option_context_help: don't modify the input data
If there are options that need their names to be aliased, keep track
of that internally rather than modifying the passed-in GOptionGroup
(and leaking strings in the process).

https://bugzilla.gnome.org/show_bug.cgi?id=682560
2013-02-03 00:46:52 -05:00
Matthias Clasen
ab328469f5 Silence automake
automake doesn't like INCLUDES anymore.
2013-02-02 22:54:15 -05:00
Matthias Clasen
0336eb67a2 Log errors the same way as messages
This will make sense if we keep going past
the assertions that cause the error to be logged.
2013-02-02 18:27:22 -05:00
Matthias Clasen
f5f151cb85 Simplify glib/glib/tests setup
The Makefile.am was setting a ton of unnecessary things
2013-02-02 18:27:22 -05:00
Matthias Clasen
8455702a8d Make the logging test more robust
The default handler test was not unsetting the log handler that
gets installed by GTest, which causes the log messages to be duplicated
on stdout if --verbose or --tap are passed. This in turn can make some
of the non-match checks fail. Since we are already using g_test_trap_fork,
we can just unset the handler in the child.
2013-02-02 18:27:22 -05:00
Will Thompson
a809650a06 Test for g_hash_table_insert() corrupting sets
https://bugzilla.gnome.org/show_bug.cgi?id=692815
2013-02-02 00:34:06 -05:00
Ryan Lortie
bb1df4d01b hashtable: properly handle insert() de-set-ifying
GHashTable remains a set for as long as all of the keys are exactly
equal (in pointer value) to all of the values.  We check this by
comparing keys to values when we do inserts.

Unfortunately, when doing g_hash_table_insert() when a key is already in
the table, the old key pointer value is kept, but the new value pointer
is used.  Now we have a situation where a key pointer is unequal to a
value pointer, but we were not treating this case properly.

Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=692815
2013-02-02 00:34:01 -05:00
Ryan Lortie
477490786b gmain: equivocate a bit on _set_ready_time()
Since this is a new API this cycle it's a good time to add a doc comment
explicitly declaring that a confusing issue that could be resolved
either way has no specific defined behaviour.

This may allow us some additional freedom in future GMainContext work or
we may decide that one behaviour is more desirable than the other.
2013-02-01 04:56:23 +01:00
Cosimo Cecchi
0ea7abaed5 gmacros: add G_GNUC_UNUSED to G_STATIC_ASSERT
Silence some warnings seen with GCC 4.8.
2013-01-30 17:59:09 +01:00
Colin Walters
f398bec5bc Add g_close(), use it
There are two benefits to this:

1) We can centralize any operating system specific knowledge of
   close-vs-EINTR handling.  For example, while on Linux we should never
   retry, if someone cared enough later about HP-UX, they could come by
   and change this one spot.
2) For places that do care about the return value and want to provide
   the caller with a GError, this function makes it convenient to do so.

Note that gspawn.c had an incorrect EINTR loop-retry around close().

https://bugzilla.gnome.org/show_bug.cgi?id=682819
2013-01-29 09:46:04 -05:00
Simon McVittie
cf68300d27 g_atomic_int_get, g_atomic_pointer_get: accept const arguments
Signed-off-by: Simon McVittie <simon.mcvittie@collabora.co.uk>
Reviewed-by: Matthias Clasen <mclasen@redhat.com>
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=692583
2013-01-28 11:37:53 +00:00
Rui Matos
67694fb35e gsequence: Fix g_sequence_lookup() return value documentation
Mention that we return NULL if the item we are looking up isn't
found.
2013-01-26 19:12:10 +01:00
Colin Walters
cbd7225e70 gwakeup: Fix uninitialized variable from previous commit
We really don't want to infloop here...
2013-01-25 12:06:04 -05:00
Colin Walters
090f874626 Handle EINTR for a few more write() calls
https://bugzilla.gnome.org/show_bug.cgi?id=682819
2013-01-25 11:23:48 -05:00
Gil Forcada
c67a2ebda3 Incorrect string formatters, fixes #692229 2013-01-25 00:17:18 +01:00
Colin Walters
d8874e58a7 gtester: Use FD_CLOEXEC when creating pipes
We were already unsetting the cloexec flag for the child later,
just not actually starting with it.

https://bugzilla.gnome.org/show_bug.cgi?id=692404
2013-01-23 12:23:51 -05:00
Matthias Clasen
287849a1ee Fix a typo 2013-01-20 03:16:47 -05:00
Matthias Clasen
89aa9dbd98 Fix g_test_add_vtable
This function was creating a test suite for each added
testcase, when it should have grouped tests according to
their paths.
2013-01-20 03:14:24 -05:00
Matthias Clasen
1cd0cf3797 Fix annotation for g_test_fail
The doc comment has a "Since: 2.30" annotation, so make
the header match that.
2013-01-20 03:12:09 -05:00
Matthias Clasen
9e9d028b96 Fix build with -Werror=format
There were a few places in gmarkup.c where we were giving
pointer differences when integers are expected. Fix that
by explicitly casting to int.

https://bugzilla.gnome.org/show_bug.cgi?id=692079
2013-01-19 14:30:05 -05:00
Cosimo Cecchi
13966e0fad timezone: plug a memleak 2013-01-18 17:22:52 -05:00
Cosimo Cecchi
f24594122c timezone: avoid a double GBytes unref
This will cause random memory corruption; functions should not unref
passed-in parameters.
2013-01-18 17:09:31 -05:00
Ryan Lortie
998c6e65cf GVariant: fix normal-form checking for tuples
GVariant has the concept of fixed-sized types (ie: types for which all
values of the type will have the same size).  Examples are booleans,
integers, doubles, etc.  Tuples containing only these types are also
fixed size.

When GVariant is trying to deal with a fixed-sized value for which it
doesn't have a sufficient backing store (eg: the case where a
fixed-sized value was created with g_variant_new_data() with an
incorrect number of bytes) it denotes this by setting the size of the
value to the correct fixed size but using a NULL data pointer.

This is well-documented in several code comments and also in the public
API documentation for g_variant_get_data() which describes the situation
number which NULL could be returned.

The decision to deal with this case in this way was changed at the last
minute around the time that GVariant was merged -- originally we had an
elaborate setup involving allocating an internal buffer of sufficient
size to be shared between all invalid values.

Unfortunately, when making this change a small detail was missed.
gvs_tuple_get_child() (the function responsible for deserialising
tuples) was updated to properly check for this case (and it contains a
comment about why it must).  gvs_tuple_is_normal() (the function
responsible for verifying if a tuple is in normal form) was not.

We add the check now.

Note that this problem does not exist with any other container type
because tuples are the only container capable of being fixed-sized.  All
other container types (arrays, maybes, variants) can contain a variable
number of items or items of variable types (note: we consider dictionary
entries to be two-tuples).  The code for validating non-container values
also contains a check for the case of NULL data.

The problem also does not occur in the only other function dealing with
serialised tuples: gvs_tuple_n_children().  Whereas other container
types would have to inspect the serialised data to determine the number
of children, for tuples it can be determined directly from the type.
2013-01-18 16:27:13 -05:00
Ryan Lortie
52a81a7d86 Remove a few more G_GNUC_INTERNAL users 2013-01-18 13:28:43 -05:00
Ryan Lortie
346aa683de Fix visibility for glib/ and gio/ submodules
We have various sub directories in glib/ and gio/ (eg: inotify, gnulib,
pcre, xdgmime, etc.) that build convenience libraries that are then
included into libglib and libgio.  The files in these directories need
to be built with the same visibility policy as the files in the first
level directories, so add CFLAGS for them all.

This wasn't a problem when the visibility flags were set directly in
CFLAGS but then we had to deal with some modules that we built that we
explicitly wanted to export symbols from.

For now, we can keep things the way they are because it's less hacky and
although it's a theoretical hazard to forget these CFLAGS, we rarely add
new subdirectories to the build.
2013-01-18 13:23:40 -05:00
Colin Walters
6f8f1f7097 Remove most use of G_GNUC_INTERNAL
Now that we use an explicit list of symbols to export, the
G_GNUC_INTERNAL is redundant.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2013-01-18 13:03:28 -05:00
Ryan Lortie
dbf447292d Remove ABI checking scripts
Before this commit, the only difference between the expected and actual
ABI were the addition of _init and _fini symbols in each module (now
that regexp-based export control is not catching those).
2013-01-17 10:50:18 -05:00
Ryan Lortie
304950a7ac Remove regexp-based export control 2013-01-17 10:49:37 -05:00
Ryan Lortie
e1517ca82d mainloop test: fix a silly memory error 2013-01-15 15:40:14 -05:00
Ryan Lortie
46b15bb581 mainloop test: use atomic for cross-thread access 2013-01-15 15:40:09 -05:00
Ryan Lortie
42c2c4f67d mainloop test: fix a small typo
This g_assert() could never possibly fail, as it was.
2013-01-15 15:22:35 -05:00
Ryan Lortie
83e5d169d6 tests for the new MainContext/GSource API 2013-01-15 14:08:02 -05:00
Ryan Lortie
6d1a663609 Add a UNIX fd source
https://bugzilla.gnome.org/show_bug.cgi?id=658020
2013-01-15 14:08:02 -05:00
Ryan Lortie
cbf68cb22d gsource: Add support for file descriptors on UNIX
Adding file descriptors to a GSource provides similar functionality to
the old g_source_add_poll() API with two main differences.

First: the list of handles is managed internally and therefore users are
prevented from randomly modifying the ->events field.  This prepares us
for an epoll future where changing the event mask is a syscall.

Second: keeping the list internally allows us to check the ->revents for
events for ourselves, allowing the source to skip implementing
check/prepare.  This also prepares us for the future by allowing an
implementation that doesn't need to iterate over all of the sources
every time.

https://bugzilla.gnome.org/show_bug.cgi?id=686853
2013-01-15 14:08:02 -05:00
Ryan Lortie
db7d5306cc GTimeoutSource: simplify
Take advantage of the new default handling of the 'prepare' and 'check'
functions.

https://bugzilla.gnome.org/show_bug.cgi?id=657729
2013-01-15 14:08:02 -05:00
Ryan Lortie
768574635d GSource: new API g_source_set_ready_time()
Add an API to mark a GSource to automatically become ready at the
specified monotonic time.

https://bugzilla.gnome.org/show_bug.cgi?id=657729
2013-01-15 14:08:02 -05:00
Ryan Lortie
6d25e34998 gsource: allow NULL check and prepare functions
Allow for NULL GSourceFuncs.check() and .prepare().

For prepare() the source will be taken not to be ready and having an
infinite timeout.  For check() the source will be taken not to be ready.

https://bugzilla.gnome.org/show_bug.cgi?id=686853
2013-01-15 14:08:02 -05:00
Ryan Lortie
8f7f7f6c42 move GIOCondition to gmain.h from giochannel.h
GIOCondition has uses outside of GIOChannel, so move it to gmain.h.

https://bugzilla.gnome.org/show_bug.cgi?id=686853
2013-01-15 14:08:02 -05:00
Ryan Lortie
ed8ec635eb gsource: Make GSource->source_funcs const
This is the vtable pointer for the source which is usually held in
static storage.  For our internal sources it points at a vtable which
the user should really never be modifying.

Mark it const.

https://bugzilla.gnome.org/show_bug.cgi?id=686853
2013-01-15 14:08:01 -05:00
Yuri Sedunov
e1bee17e94 gtester: Add #include config.h
Missed #include "config.h" so, in particular, large file support
(_FILE_OFFSET_BITS) ignored.

https://bugzilla.gnome.org/show_bug.cgi?id=691624
2013-01-15 11:05:43 -05:00
Ryan Lortie
5d42fdd068 visibility: Use a separate CFLAGS variable
We only want to control the default visibility for our five main
installable libraries: libglib, libgthread, libgmodule, libgobject,
libgio.  We should therefore only set -fvisibility=hidden when building
those.

Use a separate substitution variable for this purpose.

Using CFLAGS directly leads to some modules built in testcases not
exporting their symbols (and then the tests fail).  It also affects the
fam file monitoring module.

Colin had originally done it this way in his visibility patch series but
I failed to understand why so I didn't copy it.  Now I do.

Also: revert changes made to two testcases in an attempt to work around
this issue.

https://bugzilla.gnome.org/show_bug.cgi?id=691756
2013-01-14 23:31:59 -05:00
Ryan Lortie
963243e6b5 win32: hide _glib_get_dll_directory again
This is not part of our public ABI and it's not used from the other
libraries in GLib, so we should not be exporting it.

Caught by Dieter Verfaillie.
2013-01-14 11:11:00 -05:00
Ryan Lortie
068a119f74 win32: build: stop using .def files
With visibility now under the control of __declspec(dllexport) we no
longer need to build .def files or use them for building our various
.dll files.

.def files used to be installed (even though it is only really useful
when creating the .dll or .lib file).  Don't do that anymore either.

The Makefiles still contain rules to create a .lib file for use with
Visual Studio and these rules require .def files.  There are special
requirements to using these rules (like having installed and setup
Microsoft tools for use during the build) and therefore the problem of
creating a .def file for use with them is left open to anyone willing to
make the effort.  Many options are available depending on which
toolchain is in use (dlltool, pexport, gendef, dumpbin.exe, just to name
a few).

If we can find a free tool for creating .lib files in the future, we
should probably revisit this issue and add proper support back to our
build system.
2013-01-13 22:59:40 -05:00
Ryan Lortie
f13d3c075f win32: visibility fixups
Add/remove visibility macros according to if symbols were previously
part of our public win32 API.
2013-01-13 22:59:40 -05:00
Ryan Lortie
4625c138e9 gbacktrace.c: special treatment for a weird symbol
We have a public symbol 'glib_on_error_halt' that is exported from
gbacktrace.c without appearing in a header, presumably with the
intention that people will be able to hit it from their debugger.

Mark it as GLIB_AVAILABLE_IN_ALL from inside the .c file...

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2013-01-13 13:13:43 -05:00
Ryan Lortie
b91c476827 Add a new _GLIB_EXTERN macro for "extern"
This macro simply evaluates the "extern" unless it has been explicitly
defined to something else.

All of the version macros (including the unversioned deprecation markers
and GLIB_AVAILABLE_IN_ALL) now include _GLIB_EXTERN as part of their
definition.

G_INLINE has also been modified to use _GLIB_EXTERN where appropriate.

This macro should never be used outside of the gmacros.h/gversonmacros.h
headers.

The effect of this patch is that "extern" has now been added to all
functions declared in installed headers.  Strictly speaking, this is
something we should have had all along...

GLIB_VAR and GOBJECT_VAR have also been modified to use _GLIB_EXTERN on
non-Windows, instead of "extern" which they were using before.  The
eventual goal is to use the normal version/deprecation macros on
exported variables and drop GLIB_VAR but we need to see how this will
work on Windows before we go ahead with that.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2013-01-13 13:13:36 -05:00
Ryan Lortie
0156092a42 various: add GLIB_AVAILABLE_IN_ALL everywhere else
Add the GLIB_AVAILABLE_IN_ALL annotation to all old functions (that
haven't already been annotated with the GLIB_AVAILABLE_IN_* macros or a
deprecation macro).

If we discover in the future that we cannot use only one macro on
Windows, it will be an easy sed patch to fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2013-01-13 13:11:57 -05:00
Ryan Lortie
0a2b586259 gversionmacros.h: add GLIB_AVAILABLE_IN_ALL
Add a macro to declare that a particular symbol is available in all
versions of GLib.

All newly-added symbols should have proper version macros (like
GLIB_AVAILABLE_IN_2_36) and this macro is less likely to get used 'by
accident' for those than one with a name like GLIB_EXTERN or
GLIB_PUBLIC.

https://bugzilla.gnome.org/show_bug.cgi?id=688681
2013-01-13 13:05:09 -05:00
Henrique Dante de Almeida
c219181cb2 Add G_GNUC_PRINTF on all functions with format strings
This allows compilation with clang without errors, even when
-Wformat-nonliteral is active (as long as there are no real cases of
non literal formatting).

https://bugzilla.gnome.org/show_bug.cgi?id=691608
2013-01-13 12:32:40 -05:00
Benjamin Otte
120834db5b API: Constify g_get_prgname()
Found by Mike Gorse while via pygobject freeing the value.

Should have been const according to original commit message.
2013-01-13 18:14:11 +01:00
Dan Winship
b3ce0deb6d tests/gdatetime: add a missing ; on windows 2013-01-06 18:56:39 -05:00
Matthias Clasen
e478b65ea5 Improve g_cond_wait docs
Document that the mutex is locked upon return.
https://bugzilla.gnome.org/show_bug.cgi?id=691110
2013-01-04 08:28:13 -05:00
Jasper St. Pierre
5e62827efd gmarkup: Make GMarkupParseContext a boxed type
At the same time, add a refcount and public ref/unref methods.
This makes it usable from introspectable.

https://bugzilla.gnome.org/show_bug.cgi?id=690084
2013-01-01 11:03:19 -05:00
Michael Henning
0d3da350c6 gutils: move G_END_DECLS to the end of gutils.h
Previously, some declarations near the bottom came after the
G_END_DECLS, causing linker errors for C++ users that called those
functions.

https://bugzilla.gnome.org/show_bug.cgi?id=690902
2012-12-31 16:13:29 -05:00
Matthias Clasen
e1b99b2ddc Move single-include guards inside include guards
gcc has optimizations for include guards that only work
if they are outermost in the the header.
https://bugzilla.gnome.org/show_bug.cgi?id=689810
2012-12-27 23:43:14 -05:00
Matthias Clasen
08dce819cc Revert "gtestutils: add g_test_trap_subprocess(), deprecate g_test_trap_fork()"
This reverts commit e3a29184d5.
2012-12-19 15:20:45 -05:00
Matthias Clasen
0178402c6d Revert "tests: port from g_test_trap_subprocess() to g_test_trap_fork()"
This reverts commit ea06ec8063.
2012-12-19 15:20:37 -05:00
Matthias Clasen
6f15db8c3d Revert "gtestutils: fix "-p" logic"
This reverts commit 723a8f5588.
2012-12-19 15:20:31 -05:00
Matthias Clasen
50850fe08c Revert "tests/option-context: fix under --verbose"
This reverts commit 80253cd710.
2012-12-19 15:20:20 -05:00
Matthias Clasen
f64d6640d4 Revert "tests/protocol: redo a bit"
This reverts commit 8d9969fe15.
2012-12-19 15:20:13 -05:00
Matthias Clasen
53a436221f Revert "tests/spawn-*.c: fix on Windows"
This reverts commit 602714a8da.
2012-12-19 15:20:05 -05:00
Dan Winship
602714a8da tests/spawn-*.c: fix on Windows
Need to append ".exe" to the spawned binary name on Windows

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:13 -05:00
Dan Winship
8d9969fe15 tests/protocol: redo a bit
Rather than overloading --verbose, just skip the tests that aren't
supposed to be run in the parent process (so that if you do run the
toplevel test with --verbose, it doesn't immediately error out).

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:12 -05:00
Dan Winship
80253cd710 tests/option-context: fix under --verbose
We need to always pass G_TEST_TRAP_SILENCE_STDERR/STDOUT, or else
we can't check that they contained the right text later.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:12 -05:00
Dan Winship
723a8f5588 gtestutils: fix "-p" logic
If you had two tests "/foo/bar" and "/foo/bar/baz", and ran the test
program with "-p /foo/bar/baz", it would run "/foo/bar" too. Fix that.
And add a test to tests/testing for it.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:11 -05:00
Dan Winship
ea06ec8063 tests: port from g_test_trap_subprocess() to g_test_trap_fork()
(or, in a few cases, to g_test_expect_message())

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:10 -05:00
Dan Winship
e3a29184d5 gtestutils: add g_test_trap_subprocess(), deprecate g_test_trap_fork()
g_test_trap_fork() doesn't work on Windows and is potentially flaky on
unix anyway given the fork-but-don't-exec. Replace it with
g_test_trap_subprocess(), which re-spawns the same program with
arguments telling it to run a specific (otherwise-ignored) test case.

Make the existing g_test_trap_fork() unit tests be unix-only (they
never passed on Windows anyway), and add a parallel set of
g_test_trap_subprocess() tests.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-19 14:35:08 -05:00
Daniel Macks
1fec9ac47d Fix constant type to match assigned variable type
Some compilers assume a literal value is a certain byte-length without
checking the type to which it is being assigned, giving a compile-time
warning: a default of 'long' is a mismatch when assigning to a guint64
when the latter is a 'long long'. Use one of glib's standard macros to
specify the type of the constant to match the variable type.

https://bugzilla.gnome.org/show_bug.cgi?id=688829
2012-12-19 14:29:08 -05:00
Emmanuele Bassi
5f1f9cb7d8 timezone: Fix byte arithmetic
Use guint8* instead of gpointer, to avoid warnings and side effects.

https://bugzilla.gnome.org/show_bug.cgi?id=686128
2012-12-19 13:48:31 +00:00
John Ralls
e6d45972fc Bug 633117: glib fails tests if /etc/localtime is not properly set 2012-12-19 00:40:08 +00:00
John Ralls
c9939b0fc7 GTimeZone interval_info: Fix interval 0 per IANA tzfile instructions
IANA tzfiles don't always put standard time in the 0th t_info. Follow
their instructions to use the first standard time t_info for interval 0.
2012-12-18 15:43:41 -08:00
John Ralls
0f0404af21 test_posix_parse: PST8PDT passes on Unix because it names an IANA zone. 2012-12-18 15:43:41 -08:00
John Ralls
bdab372379 MSWindows TimeZone Support: Refactor and rewrite TZ variable parsing 2012-12-18 15:43:41 -08:00
John Ralls
1af37768a5 Test the TZ-variable parsing functions 2012-12-18 15:43:40 -08:00
John Ralls
7d1ae24e19 Implement and test time zone name/abbrev setting for Windows. 2012-12-18 15:43:40 -08:00
John Ralls
d12bb7ef72 Win32 TimeZone Support: General refactoring
For code clarity and to pass tests
2012-12-18 15:43:40 -08:00
John Ralls
1ef6933cbe Add MSWindows timezone names to test new windows support. 2012-12-18 15:43:40 -08:00
Arnel A. Borja
1ccd4d60fc GTimeZone: Fix time zones in Windows
Get time zone information from registry. Use GetTimeZoneInformation()
instead to get the local time zone if Dynamic DST is not available.

https://bugzilla.gnome.org/show_bug.cgi?id=683998
2012-12-18 15:43:40 -08:00
Arnel A. Borja
206ba07bd9 GTimeZone: Parse Windows format for TZ
Parse the "tzn[+|-]hh[:mm[:ss]][dzn]" format used in Windows for
environment variable TZ.

https://bugzilla.gnome.org/show_bug.cgi?id=683998
2012-12-18 15:43:40 -08:00
Arnel A. Borja
87436e6b3d GTimeZone: Parse POSIX format for TZ
Parse the "std offset [dst [offset],start[/time],end[/time]]" (POSIX)
format used in Unix for environment variable TZ.

https://bugzilla.gnome.org/show_bug.cgi?id=686128
2012-12-18 15:43:40 -08:00
Arnel A. Borja
9a4a53c03d GTimeZone: Add initialization functions for rules
Add functions to initialize a GTimeZone from rules.
2012-12-18 15:43:40 -08:00
Arnel A. Borja
9fae921c3e GTimeZone: Parse more offset formats
Allow more formats for offset. Parse seconds in offsets too. Make offset
signs optional.

https://bugzilla.gnome.org/show_bug.cgi?id=686128
2012-12-18 15:43:40 -08:00
John Ralls
59f2da1749 Replace zoneinfo pointers with structs
The approach of sucking a zoneinfo file into a GBytes and working with
pointers into it might be fast, but it's obtuse and not compatible with
Microsoft Windows.
2012-12-18 15:43:40 -08:00
John Ralls
489e031f22 Extract function init_zone_from_iana_info 2012-12-18 15:43:40 -08:00
John Ralls
47de8646e2 Extract function zone_info_unix 2012-12-18 15:43:40 -08:00
Colin Walters
2149b29468 Add g_get_num_processors()
Based on a patch from John Cupitt <jcupitt@gmail.com>

Useful for thread pools which should scale to number of processors.

See https://bugzilla.gnome.org/show_bug.cgi?id=687223

https://bugzilla.gnome.org/show_bug.cgi?id=614930
2012-12-18 13:13:15 -05:00
Colin Walters
c700721805 g_unix_open_pipe: Add missing F_SETFD
Spotted by Ray Strode <rstrode@redhat.com>

While we're here, microoptimize by skipping the fcntl() calls if flags
is 0.

https://bugzilla.gnome.org/show_bug.cgi?id=690069
2012-12-11 17:12:19 -05:00
Colin Walters
bf1e63c2aa Make GChecksum more fully introspectable
In 2.34, g_compute_checksum_for_bytes() was added, but this patch
allows binding users to use the incremental update API; this is
significantly more efficient than reading entire files into memory.

https://bugzilla.gnome.org/show_bug.cgi?id=689982
2012-12-10 20:08:09 -05:00
Ryan Lortie
6869454103 add two missing version macros 2012-12-06 13:58:42 -05:00
Ryan Lortie
7c98844760 various: add missing cases of #include "config.h" 2012-12-06 13:30:31 -05:00
Ryan Lortie
7523c04b54 g_get_home_dir(): honour $HOME
If the $HOME environment variable is set, prefer that to the entry in
/etc/passwd.

This brings us in line with almost every other utility and library on
UNIX-like systems while avoiding some of the more complicated
possibilities that have been suggested.

This incompatible change has been petitioned for quite some time by
many, and in particular from the Debian world, which carries a patch
that adds a new G_HOME environment variable with the same meaning as
this patch now assigns to HOME.

The primary motivation for the change was to increase the testability of
GLib-based programs from 'make check' types of frameworks: it is now
possible to set HOME to a temp directory to avoid the testsuite
modifying the user's real home directory.

The change also brings us increased compliance with the XDG Base
Directory Specification.  The specification specifically states that the
default values should be computed based on the HOME environment
variable, whereas we were basing them on the value from /etc/passwd.

The change was agreed to by all in attendence at the November 29 Gtk+
developer meeting.

https://bugzilla.gnome.org/show_bug.cgi?id=142568
2012-12-06 11:41:46 -05:00
Dan Winship
e97a2f4195 win32: suppress fatal error dialog box when running tests
When running a test program (ie, if g_test_init() has been called),
don't pop up a dialog box when a fatal error occurs. Just print the
message to stderr and exit.

https://bugzilla.gnome.org/show_bug.cgi?id=679683
2012-12-05 11:15:19 -05:00
Sebastian Dröge
c9affa778e Revert "Fix compilation on Android with the bionic C library"
This reverts commit cb0ed84d40.

It wasn't meant to be pushed yet.
2012-11-28 16:55:12 +01:00
Andoni Morales Alastruey
97385dbbe8 Fix duplicated case value for mingw runtimes defining EOVERLFOW as EFBIG 2012-11-28 16:34:18 +01:00
Sebastian Dröge
cb0ed84d40 Fix compilation on Android with the bionic C library 2012-11-28 16:32:48 +01:00
Sebastian Dröge
058fa6393e Protect against strcmp() on NULL strings 2012-11-28 16:25:43 +01:00
Martin Pitt
fca30c3e16 g_unix_signal_add_full(): Annotate to shadow g_unix_signal_add()
Just like g_timeout_add() and friends, we want to hide the unintrospectable
g_unix_signal_add() from GI bindings and present g_unix_signal_add_full() as
GLib.unix_signal_add() to them.
2012-11-28 12:10:52 +01:00
Dan Winship
b55e1820a9 g_test_expect_message: fix pattern syntax in example code 2012-11-26 10:47:34 -05:00
John Ralls
1f005d9385 Bug 681685: Transcoding fails on OSX
Add aliases for codesets supported by iconv and included in locales.
Ifdef-out tests in glib/tests/gdatetime.c which fail because on OSX only
ASCII numbers or symbols are returned for the format.

Even though nl_langinfo does weird things on Darwin in some cases, it
still acts correctly when LANG/LC_ALL is set to a supported
locale.codeset.
2012-11-25 16:44:06 +09:00
Ryan Lortie
be008ea6e2 gdatetime: Fix some docs sed damage 2012-11-24 11:23:22 -05:00
Sébastien Wilmet
2b7c2107a5 Improve i18n documentation
Clearly explain which gettext functions must be called. It depends
whether the program is an application or a library.

https://bugzilla.gnome.org/show_bug.cgi?id=688886
2012-11-22 23:08:54 +01:00
Will Thompson
5ff99924d8 gthread: add AVAILABLE_IN_2_32 annotations
https://bugzilla.gnome.org/show_bug.cgi?id=688319
2012-11-22 09:37:22 +00:00
Eduardo Lima Mitev
6e2046207a gchecksum: Adds SHA512 support
https://bugzilla.gnome.org/show_bug.cgi?id=602715
2012-11-21 21:50:26 +01:00
Michael Natterer
ef8510be09 Bug 673047 - gunicollate is broken on OS X
Apply slightly modified patch from Camillo Lugaresi which fixes
gunicollate for OSX >= 10.6. It was totally hilariously broken
for anyone on 10.6 and later, I dont know if it's now broken
on 10.5, but better fix it for the vast majority of users.
2012-11-16 18:51:41 +01:00
Dan Winship
03ef7ba5ab win32: re-fix the _utf8 compat function situation
The previous fix didn't work, because every place within glib that
used any of the functions also needed to be including win32compat.h.

So, move the prototypes back to their original headers (but at least
all in one place at the bottom).

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-16 08:22:06 -05:00
Dan Winship
2628dc2c09 gtestutils: don't try to print long doubles
A few gtestutils function use long double as a type that can (in
theory) hold any int or any double. But win32 doesn't support long
doubles in printf, so convert them to ints or doubles first before
trying to print them.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
fc3acd88ba win32: avoid printf format warnings on nonstandard formats
glib/tests/test-printf tests some non-standard printf formats on
Windows, which gcc doesn't recognize, and so complains about. Disable
those warnings for that test.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
75d2c1823c gvariant-internal.h: fix the include hack
gvariant-internal.h was defining GLIB_COMPILATION so that it could
include individual headers, but this broke tests/gvariant on windows
because setting GLIB_COMPILATION changes the definition of GLIB_VAR,
causing external variables to not be found. Fix this by having it
define __GLIB_H_INSIDE__ instead.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
f80d8f1e4d win32: various fixes to test programs
Fix a few win32-specific bugs in various tests, and #ifdef out code
that is UNIX- or Linux-specific that wouldn't be expected to pass on
Windows.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
b8c13a01b6 win32: misc warning fixes
https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:06 -05:00
Dan Winship
3ac6cfaeaa win32: prototype _glib_get_dll_directory() and _glib_get_locale_dir()
Rather than using "extern" declarations of these win32 functions
everywhere they're needed, just prototype them in glib-private.h.
(Which also fixes the fact that they weren't prototyped in the files
where they're defined.)

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:05 -05:00
Dan Winship
08f4f92fed win32: add gwin32compat.h, for utf8-renaming compatibility defines
To avoid -Wmissing-prototype warnings, we need to prototype both the
original and the _utf8 versions of all of the functions that have had
_utf8-renaming on Windows. But duplicating all the prototypes is ugly,
so rather than doing them "in-place", move them all to a new header
file just for that.

https://bugzilla.gnome.org/show_bug.cgi?id=688109
2012-11-15 14:19:05 -05:00
Michael Natterer
49db979922 Revert "gmain: Add private API to create Unix child watch that uses waitid()"
This reverts commit 93bf37ce15.
2012-11-15 15:33:38 +01:00
Michael Natterer
75de24ca66 Revert "gspawn: support creating pipes with O_CLOEXEC"
This reverts commit 2054ccad95.
2012-11-15 15:33:38 +01:00
Ryan Lortie
2054ccad95 gspawn: support creating pipes with O_CLOEXEC
Add a new flag, G_SPAWN_CLOEXEC_PIPES, for creating the stdin/out/err
pipes with O_CLOEXEC (for the usual reasons).

https://bugzilla.gnome.org/show_bug.cgi?id=672102
2012-11-14 14:12:15 -05:00
Colin Walters
93bf37ce15 gmain: Add private API to create Unix child watch that uses waitid()
This avoids collecting the zombie child, which means that the PID
can't be reused.  This prevents possible race conditions that might
occur were one to send e.g. SIGTERM to a child.

This race condition has always existed due to the way we called
waitpid() for the app, but the window was widened when we moved the
waitpid() calls into a separate thread.

If waitid() isn't available, we return NULL, and consumers of this
private API (namely, GSubprocess) will need to handle that.

https://bugzilla.gnome.org/show_bug.cgi?id=672102
2012-11-14 14:11:57 -05:00
Simon McVittie
e744a4aa7a Remove trailing spaces from expected GMarkup error messages
Commit 138f4c1 broke the relevant part of 'make check' by changing the
error messages away from the ones we previously expected. This commit
updates the expected output to catch up.

Bug: https://bugzilla.gnome.org/show_bug.cgi?id=688255
Reviewed-by: Matthias Clasen <mclasen@redhat.com>
2012-11-14 13:26:57 +00:00
Colin Walters
b98a1c8df3 gmain: Handle case where source id overflows
0 is not a valid source id, but for long-lived programs that rapidly
create/destroy sources, it's possible for the source id to overflow.
We should handle this, because the documentation implies we will.

https://bugzilla.gnome.org/show_bug.cgi?id=687098
2012-11-13 11:32:57 -05:00
Matthias Clasen
138f4c1e2f Remove trailing space from some translated strings
https://bugzilla.gnome.org/show_bug.cgi?id=687700
2012-11-09 22:12:57 -05:00
Matthias Clasen
7fd15ee4ae Add plural forms for some translations
https://bugzilla.gnome.org/show_bug.cgi?id=687698
2012-11-09 22:10:10 -05:00
Martin Pitt
a07a5f82aa GByteArray: Add missing transfer annotations
Make g_byte_array_new() and g_byte_array_new_take() introspectable by adding
missing transfer annotations to return value.

Covered by tests in PyGObject.
2012-11-09 09:32:03 +01:00
Martin Pitt
e06268d72e GBytes: Add missing annotations
Annotate g_bytes_new*()'s data argument to be a guint8 array, as
introspection clients cannot deal with raw gconstpointers. This makes
GBytes' behaviour similar to GByteArray whose API already uses guint8.

Add missing transfer annotation to g_bytes_get_data() to make it
introspectable.

This is covered by test cases in PyGObject.
2012-11-09 09:09:39 +01:00
John Ralls
8dd70a261d Bug 686185: GDateTime Transcoding fails on OSX
Better fix than d5df0a10f. Thanks to Christian Persch for pointing this
out.
2012-11-08 08:37:54 -08:00
Emmanuel Pacaud
a9eb1907a6 Check for PR_GET_NAME
PR_GET_NAME may not be defined when using an old kernel. Deal with it.
2012-11-08 08:19:43 +01:00
John Ralls
d5df0a10f1 Skip test_non_utf8_printf() if EUC-JP is aliased to UTF-8
See https://bugzilla.gnome.org/show_bug.cgi?id=686185
This skips the test on those systems, like Darwin, which provide the
ja_JP.eucjp locale but which glib doesn't know how to transcode and
aliases JIS to UTF-8.
2012-11-06 16:50:09 -08:00
Ryan Lortie
b26fb3ae5c Don't call varargs open() through non-varargs type
open() is probably defined varargs.  Casting a varargs function to an
equivalent non-varargs type and then calling it is undefined, but
gfileutils.c was doing exactly that.

Add some non-varargs wrappers to avoid the problem.

Problem reported by John Spencer.

https://bugzilla.gnome.org/show_bug.cgi?id=687600
2012-11-06 14:40:36 -05:00
Ryan Lortie
81b27ffc1c Add a translator comment about 'KB'
The GLib units policy used to be that 'KB' means 1024 bytes, 'MB' means
1024 KB, 'GB' means 1024 MB, etc.

Those days are over, but we have a deprecated function that still works
that way.  It contains the string "KB", marked for translation, which
has been a source of confusion for translators on multiple occasions.

https://bugzilla.gnome.org/show_bug.cgi?id=687516
2012-11-05 08:24:30 -05:00
Martin Pitt
13ae0f1f92 Annotate g_filename_to_utf8()
bytes_read and bytes_written are (out) arguments, and the return value must be
a byte array instead of utf8, as otherwise the function would only support
UTF-8 locales/file names.
2012-11-03 14:00:45 +01:00
Colin Walters
ce0022933c Merge waitpid() from g_spawn_sync into gmain()
This is preparatory work for a future commit which will add a
"catchall" waitpid API.  If we don't synchronize here with the worker
thread, race conditions are possible.

This also ensures we have an error message if someone adds a child
watch for a nonexistent pid, etc.  Previously, we'd simply keep
calling waitpid() getting ECHILD, and ignoring it until the source was
removed. Now, we g_warning() and fire the source.

Thirdly, this ensures that the waitpid() call in gmain handles EINTR,
like the g_spawn_sync() one did.

https://bugzilla.gnome.org/show_bug.cgi?id=687061
2012-11-02 09:19:13 -04:00
Tim-Philipp Müller
0bdf7fecaf tests: fix compiler warning in gvariant test
gvariant.c:3555:1: warning: function declaration isn’t a prototype [-Wstrict-prototypes]
2012-11-02 13:14:58 +00:00
Colin Walters
3686aa0e18 gettext: Add missing include
Fixes the build with -Werror=missing-prototypes.

https://bugzilla.gnome.org/show_bug.cgi?id=687385
2012-11-02 09:03:52 -04:00
Colin Walters
4c2a659588 gcharset: Add header file for private API
This fixes the build with -Werror=missing-prototypes.

https://bugzilla.gnome.org/show_bug.cgi?id=687385
2012-11-02 09:03:52 -04:00
Colin Walters
488cdb13f6 gslice: Prototype G_ENABLE_DEBUG function that's part of ABI
Sadly, g_slice_debug_tree_statistics is conditionally part of the
public ABI.  We might as well make it conditionally part of the API as
well, even though this will require people actually using it to

https://bugzilla.gnome.org/show_bug.cgi?id=687385
2012-11-02 09:03:51 -04:00
Colin Walters
bd8387f25a g_check_setuid: Include glib-private.h
Otherwise we fail to build with -Werror=missing-prototypes.

https://bugzilla.gnome.org/show_bug.cgi?id=687385
2012-11-02 09:03:35 -04:00
Colin Walters
139892734e tests/1bitmutex: Hack to build with -Werror=missing-prototypes
Admittedly, this could probably be better, but it builds.

https://bugzilla.gnome.org/show_bug.cgi?id=687385
2012-11-01 20:12:02 -04:00
Colin Walters
67466b41af build: Don't use C99 declarations
Since GLib needs to compile with MSVC, we can't use them.  This fixes
compilation when using -Werror=declaration-after-statement.

https://bugzilla.gnome.org/show_bug.cgi?id=687385
2012-11-01 20:12:01 -04:00
Robert Ancell
59a24ab5a3 Use "Returns:" instead of the invalid "@returns" for annotating return values.
https://bugzilla.gnome.org/show_bug.cgi?id=673229
2012-11-01 14:47:25 +13:00
Vincent Untz
529bf6bd89 Add annotations for g_filename_from_uri()
https://bugzilla.gnome.org/show_bug.cgi?id=672924
2012-10-30 09:27:20 -04:00
Aleksander Morgado
0d22609fe9 gmessages: fix minor typo in documentation 2012-10-30 13:15:23 +01:00
Ryan Lortie
311e18abdd gthread-posix: always use atomic pointer ops
On platforms where dependent loads can be reordered (alpha) and we have
exotic implementation of pthread_mutex_lock() it could be possible that
our implementation of g_mutex_lock() is unsafe.

Always use atomic operations to avoid this possibility.

https://bugzilla.gnome.org/show_bug.cgi?id=686191
2012-10-29 16:18:10 +01:00
Paul Eggert
00f4c12bf9 gmain: Document constraints on waitpid
Applications that use glib should not invoke waitpid with a first
argument that is nonpositive, because when such a waitpid is run in
one thread and glib waits for a subprocess in another, there is a race
condition, and the former waitpid can reap a process that was intended
for the latter.  Mention this in the documentation for
g_child_watch_source_new, and in the diagnostic generated by
g_spawn_sync when its waitpid fails with errno equal to ECHILD.

Signed-off-by: Colin Walters <walters@verbum.org>

http://bugzilla.gnome.org/show_bug.cgi?id=687075
2012-10-29 10:19:20 -04:00
Colin Walters
36bf25371c g_unix_signal_source_new: Allow SIGUSR1 and SIGUSR2
These are user defined, it makes sense to allow watching them.  This
is needed to port gnome-session and gdm over.

https://bugzilla.gnome.org/show_bug.cgi?id=686898
2012-10-26 09:28:01 -04:00
Martin Pitt
1775c46e7a GIOChannel: Add missing annotations
The various read and write methods have several out arguments which were not
previously marked as such. Also, as GIOChannel supports binary data with a NULL
encoding, the buffers need to be uint8 arrays instead of utf8 strings.
2012-10-25 14:55:30 +02:00
Martin Pitt
c3f52eae0e GIOChannel: Add missing (allow-none) annotations
g_io_channel_set_line_term() and g_io_channel_set_encoding() can get NULL
arguments, mark them as such.
2012-10-25 07:52:43 +02:00
Colin Walters
4fb2d737ac gvariant: Make g_variant_new_from_bytes() public
Now that GBytes has been made public, we should make
g_variant_new_from_bytes() public too.

Add g_variant_get_data_as_bytes() to match.

https://bugzilla.gnome.org/show_bug.cgi?id=677062
2012-10-23 16:25:49 +02:00
Matthias Clasen
d906f84a44 GBytes: deal with a corner-case
When calling g_bytes_unref_to_data on a GBytes with NULL data
we could end up with double-free or use-after-free issues.
https://bugzilla.gnome.org/show_bug.cgi?id=686091
2012-10-16 21:21:25 -04:00
Matthias Clasen
a0a3643823 Add a test for the previous fix
Running tests/bytes with G_SLICE=always-malloc MALLOC_CHECK_=2
was aborting before.
2012-10-16 21:21:25 -04:00
Arnel A. Borja
a1e6ecdfeb gtimezone: Indentation adn comment fixes 2012-10-12 09:58:55 -07:00
John Ralls
86a8ec047e Bug 631382 - GTimeZone support for zoneinfo version 1 2012-10-12 09:43:57 -07:00
Dan Winship
132c4cee4f ghash.c: fix docs
A previous commit left an unclosed XML tag. Fix that.
2012-10-10 10:03:15 -04:00
Jasper St. Pierre
d9730f0e31 ghash: Add documentation 2012-10-07 20:12:03 -03:00
Jasper St. Pierre
f15b2b3166 glib.py: Remove old debugging code
This was accidentally copy/pasted from gobject.py
2012-10-07 20:12:02 -03:00
Dan Winship
eb2f5c1e0f Add GLIB_VERSION_2_36 and related 2012-10-03 16:36:38 -04:00
Christian Persch
242dfd617b unicode: Add new tests for unicode 6.2 2012-10-03 13:58:20 +02:00
Christian Persch
9524c620bb unicode: Update to unicode 6.2.0 beta 2012-10-03 13:58:19 +02:00
Christian Persch
95acb7c0d1 unicode: Add new line breaking class from unicode 6.2
Regional Indicator (RI) is new in unicode 6.2.

https://bugzilla.gnome.org/show_bug.cgi?id=684912
2012-10-03 13:58:19 +02:00
Christian Persch
b0ef1c1fbb unicode: Use g_assert_cmp{int,uint,hex} in tests
This gives more info when the test goes wrong.
2012-10-03 13:58:19 +02:00
Matthias Clasen
7c045e3423 Correct to docs for g_strcmp0
Don't promise to return -1 or 1 - we fall back to strcmp which
does not guarantee this.
https://bugzilla.gnome.org/show_bug.cgi?id=685037
2012-09-30 13:40:48 -04:00
Benjamin Otte
685259dfea Fix gdb script for new quark variable names
... and don't spam stderr with exceptions if someone renames things
again.

Last but not least, keep the old names as a fallback, so that LD_PRELOAD
with an older libglib still works.
2012-09-27 15:31:46 +02:00
Chun-wei Fan
3d45854a58 Update config.h.win32(.in) and glibconfig.h.win32(.in)
-Make config.h.win32(.in) have entries that more resembles the generated
 config.h.in
-Move the ALIGNOF_* #define's from glibconfig.h.win32(.in) to
 config.h.win32(.in), where they were supposed to be.
2012-09-26 17:47:52 +08:00
Matthias Clasen
6270b3f384 Fix g_ptr_array_ref_docs
https://bugzilla.gnome.org/show_bug.cgi?id=676034
2012-09-23 11:16:26 -04:00
Matthias Clasen
a12c277acb Fix GRegex docs 2012-09-23 02:00:03 -04:00
Matthias Clasen
6283f801b0 Fix up g_tree_foreach docs 2012-09-23 02:00:03 -04:00
Matthias Clasen
d9f8381aa8 Fix up docs for GDuplicateFunc 2012-09-23 01:59:57 -04:00
Colin Walters
d6cbb29f59 CVE-2012-3524: Hardening for being run in a setuid environment
Some programs attempt to use libglib (or even libgio) when setuid.
For a long time, GTK+ simply aborted if launched in this
configuration, but we never had a real policy for GLib.

I'm not sure whether we should advertise such support.  However, given
that there are real-world programs that do this currently, we can make
them safer with not too much effort.

Better to fix a problem caused by an interaction between two
components in *both* places if possible.

This patch adds a private function g_check_setuid() which is used to
first ensure we don't run an external dbus-launch binary if
DBUS_SESSION_BUS_ADDRESS isn't set.

Second, we also ensure the local VFS is used in this case.  The
gdaemonvfs extension point will end up talking to the session bus
which is typically undesirable in a setuid context.

Implementing g_check_setuid() is interesting - whether or not we're
running in a privilege-escalated path is operating system specific.
Note that GTK+'s code to check euid versus uid worked historically on
Unix, more modern systems have filesystem capabilities and SELinux
domain transitions, neither of which are captured by the uid
comparison.

On Linux/glibc, the way this works is that the kernel sets an
AT_SECURE flag in the ELF auxiliary vector, and glibc looks for it on
startup.  If found, then glibc sets a public-but-undocumented
__libc_enable_secure variable which we can use.  Unfortunately, while
it *previously* worked to check this variable, a combination of newer
binutils and RPM break it:
http://www.openwall.com/lists/owl-dev/2012/08/14/1

So for now on Linux/glibc, we fall back to the historical Unix version
until we get glibc fixed.

On some BSD variants, there is a issetugid() function.  On other Unix
variants, we fall back to what GTK+ has been doing.

Reported-By: Sebastian Krahmer <krahmer@suse.de>
Signed-off-by: Colin Walters <walters@verbum.org>
2012-09-13 18:34:29 -04:00
Alexander Larsson
c99acf51d0 Fix regression in g_shell_parse_argv()
The commit in 6e4acf44b3 broke
the fallthrough case for '\\' when it changed the '#' case.

This caused issues like this:
  https://bugzilla.gnome.org/show_bug.cgi?id=683821

https://bugzilla.gnome.org/show_bug.cgi?id=562907
2012-09-13 10:20:27 +02:00
Ryan Lortie
73a100d2ef G_DEFINE_QUARK: fix up some implementation issues
https://bugzilla.gnome.org/show_bug.cgi?id=683360
2012-09-08 14:08:01 -04:00
Colin Walters
e6df67abe6 tests/gvariant: Fix test on big endian architectures
We need to ensure we get the exact same byte-level GVariant, so
byteswap on big endian architectures.

https://bugzilla.gnome.org/show_bug.cgi?id=683384
2012-09-06 09:23:06 -04:00
Matthias Clasen
a30f6a6eb8 Add new api to symbol lists and docs
https://bugzilla.gnome.org/show_bug.cgi?id=682849
2012-09-02 15:10:20 -04:00
Matthias Clasen
06e3a1d71a Add compare-and exchange for data lists
Also, make it possible to get a 'new ref' on a datalist member
in a race-free way.
This is useful when using object data in thread-safe libraries.

https://bugzilla.gnome.org/show_bug.cgi?id=682849
2012-09-02 15:09:12 -04:00
Matthias Clasen
c270b833a6 Fix shell tests 2012-09-01 11:08:27 -04:00
6e4acf44b3 gshell: Fix parsing of comments in command lines.
Fixes bug 562907
2012-08-29 20:42:25 -04:00
Colin Walters
6e64ba58b9 Switch all open() calls to use g_open()
Because it now handles EINTR.  And we should do so.  While most people
use Linux, which tries very hard to avoid propagating EINTR back up
into userspace, it can still happen.

https://bugzilla.gnome.org/show_bug.cgi?id=682833
2012-08-28 13:56:59 -04:00
Cosimo Cecchi
4b602940e2 glib: don't quote quark names for G_DEFINE_QUARK 2012-08-28 13:16:24 -04:00
Cosimo Cecchi
daae12710a gquark: clarify G_DEFINE_QUARK docs about the use of quotes
Use the term "name" instead of "string" in the documentation, and add a
note explaining double quotes shouldn't be used for the quark name.
2012-08-28 13:16:23 -04:00
Matthias Clasen
369c7689c2 Add missing includes 2012-08-28 05:57:17 -04:00
Matthias Clasen
b7d1518ce9 Fix a typo in a doc comment 2012-08-28 00:08:07 -04:00
Matthias Clasen
4f12f7c029 Use G_DEFINE_QUARK for GLib's own quarks
This commit just deals with glib/.
gobject/ and gio/ will be handled in separate commits.
2012-08-28 00:08:07 -04:00
Matthias Clasen
702b448865 Add a G_DEFINE_QUARK macro
https://bugzilla.gnome.org/show_bug.cgi?id=627240
2012-08-28 00:08:07 -04:00
Matthias Clasen
a1ff18582d Put quarks in their own source file
Just because I'm too lazy to grep every single time for the other
source file in which the quark code is hiding.
2012-08-28 00:08:06 -04:00
Colin Walters
ce976bcac7 gstdio: Harden g_open() against EINTR
Noticed by code inspection, when auditing some of my code for EINTR
handling.

https://bugzilla.gnome.org/show_bug.cgi?id=682819
2012-08-27 18:10:12 -04:00
Colin Walters
d54e10632a gvariant: Add tests for exact SHA256 checksums
I'd like to use GVariant as a data format in my userspace filesystem,
and having the actual bits be stable means I can reliably compute
cryptographic checksums.

This updated patch removes vardict checks, because Ryan wants the
flexibility to change them in the future.

https://bugzilla.gnome.org/show_bug.cgi?id=673012
2012-08-27 17:02:00 -04:00
Ryan Lortie
7936af6934 GVariantType: gut g_variant_type_check()
This function is causing an insane amount of wasted time on some
real-world profiles and it's pretty useless since we already have
GVariantType (as a type different from a string) for the purpose of
static type safety.

Disable it for now.  We can possibly turn this back on again if we solve
bug #544026.

https://bugzilla.gnome.org/show_bug.cgi?id=679835
2012-08-27 16:12:30 -04:00
Dan Winship
1a2c5e155d glib/tests: fix leaks
https://bugzilla.gnome.org/show_bug.cgi?id=682560
2012-08-27 07:38:27 -04:00
Dan Winship
0c0cdfd9c4 gtestutils: add g_test_add_data_func_full()
Like g_test_add_data_func(), but includes a GDestroyNotify for the
test data.

https://bugzilla.gnome.org/show_bug.cgi?id=682560
2012-08-27 07:31:13 -04:00
Dan Winship
2427378223 gmain: remove unix signal watch if its GSourceFunc returns FALSE
g_unix_signal_watch_dispatch() was ignore the callback's return value.
Fix that.

https://bugzilla.gnome.org/show_bug.cgi?id=682560
2012-08-27 07:24:15 -04:00
Dan Winship
99c7c951d9 gmain: don't leak child sources that are destroyed before their parents
A parent source holds refs on its children, so if the child source is
destroyed, we need to drop that ref. Fix, and reorganize to make this
all more obvious.

https://bugzilla.gnome.org/show_bug.cgi?id=682560
2012-08-27 07:24:07 -04:00
Dan Winship
48a9887eae gmain: free source_lists when freeing GMainContext
If a context was freed with sources still attached, those sources
correctly got destroyed, but the corresponding GSourceList structs
were being leaked.

https://bugzilla.gnome.org/show_bug.cgi?id=682560
2012-08-27 07:23:59 -04:00
William Jon McCann
dbad8304ff Don't crash if set_app_info is called before adding metadata
set_mime_type, set_is_private, add_group, set_groups, set_icon, etc
all added metadata before using it. If set_app_info was called before
any of those it would crash when trying to access the metadata.
2012-08-24 13:36:26 -04:00
Colin Walters
0b6fdff05c Fix regression when TMPDIR/TMP are unset
We should just be returning /tmp as a default, not calling g_getenv
("/tmp") which makes no sense.

https://bugzilla.gnome.org/show_bug.cgi?id=672329
2012-08-22 14:48:41 -04:00
Ryan Lortie
59394b3e1e Revert the GMarkup attribute collect changes
We need to have some more discussion on this topic.

This reverts commits 86329ba44f and
8d40389d15.

https://bugzilla.gnome.org/show_bug.cgi?id=665634
2012-08-20 18:34:13 -04:00
Ryan Lortie
850680d751 gmarkup test: fix use of message expect API 2012-08-20 17:57:13 -04:00
Dan Winship
56210220a2 tests/protocol: update the messages to reflect G_LOG_DOMAIN being set now 2012-08-20 17:26:45 -04:00
Ryan Lortie
d06c7a911e g_test_expect_message: add some g_return_if_fail
NULL domain is not supported and some might expect this to work, so make
sure they don't get the wrong idea...
2012-08-20 16:26:25 -04:00
Ryan Lortie
34653169e5 GVariant: add g_variant_check_format_string()
For some time now people have been asking for a way to check for type
compatibility between GVariant instances and format strings.  There are
several APIs inside of GLib itself that would benefit from this.

This patch introduces a way to do that.
2012-08-20 16:26:25 -04:00
Dan Winship
cc24dac3c8 glib/tests: use g_test_expect_message()
Replace some tests that used to use g_test_trap_fork() with
g_test_expect_message() instead.

https://bugzilla.gnome.org/show_bug.cgi?id=679556
2012-08-20 13:54:52 -04:00
Dan Winship
25ac137c0a gtestutils: add g_text_expect_message()
Add g_test_expect_message() and g_test_assert_expected_messages(), to
allow tests of warnings, error messages, return-if-fails, etc.

https://bugzilla.gnome.org/show_bug.cgi?id=679556
2012-08-20 13:54:52 -04:00
Dan Winship
78a8aecbb3 g_logv: only expand the message once
Hoist the g_strdup_printf()'ing out of the loop, since the message is
the same for every handler that gets called.

https://bugzilla.gnome.org/show_bug.cgi?id=679556
2012-08-20 13:49:06 -04:00
Dan Winship
f78931c4ab glib/tests/testing, logging: don't use g_test_undefined()
We are verifying the behavior of the test/logging functions here; this
is not undefined behavior.

https://bugzilla.gnome.org/show_bug.cgi?id=679556
2012-08-20 13:49:06 -04:00
Thomas Hindoe Paaboel Andersen
96a0c589ee gmem.c: array is only paritally filled by memcpy
The size of the local_data arrray is too large. It should not be
multiplied by the sizeof guint.

The memcpy of profile_data to local_data later will only fill a part of the
array.

Spotted with the PVS-Studio static analyzer

https://bugzilla.gnome.org/show_bug.cgi?id=681501
2012-08-20 16:41:42 +02:00
Matthias Clasen
e27367f341 Exterminate 'the the' 2012-08-18 23:15:58 -04:00
Matthias Clasen
96ed9e41f4 Improve utils test coverage 2012-08-18 14:42:10 -04:00
Matthias Clasen
cb8f88ca9f Improve uri test coverage 2012-08-18 14:41:48 -04:00
Matthias Clasen
2c338e21d6 Improve strfuncs tests coverage 2012-08-18 14:41:35 -04:00
Matthias Clasen
58c7747c50 Improve GRegex test coverage 2012-08-18 14:41:23 -04:00
Matthias Clasen
a7e10fa0b6 Improve GPrivate test coverage 2012-08-18 14:41:07 -04:00
Matthias Clasen
aad40b89fe Improve file utils test coverage 2012-08-18 14:40:33 -04:00
Matthias Clasen
6e1d205ad3 Improve GError test coverage 2012-08-18 14:40:15 -04:00
Matthias Clasen
e181234fe5 Improve atomic ops test coverage 2012-08-18 14:39:52 -04:00
Matthias Clasen
06d837b6a3 Improve array test coverage 2012-08-18 14:39:28 -04:00
Owen W. Taylor
2360d04e50 Fix problems with CLEANFILES and automake-1.11.1
Running with automake-1.11.1, a couple fixes are needed
for CLEANFILES when gtk-doc is not installed.

(Found with Amazon Linux AMI release 2012.03)

https://bugzilla.gnome.org/show_bug.cgi?id=682067
2012-08-17 13:41:34 -04:00
Chun-wei Fan
2954f70d39 Fix build on Visual C++
-glib/gmarkup.c: Use G_VA_COPY() instead of va_copy() as va_copy() may not
 be universally available.
-gio/gtestdbus.c: Include io.h on Windows for close()
2012-08-17 19:22:43 +08:00
David King
86a4fd6fa9 docs: Describe GCompletion item memory management
https://bugzilla.gnome.org/show_bug.cgi?id=600751
2012-08-17 07:16:50 +01:00
Colin Walters
056d39c9f7 GMappedFile: Add g_mapped_file_get_bytes()
This is yet another API that has a data/length/refcount combination
that one might often want to turn into a GBytes.

https://bugzilla.gnome.org/show_bug.cgi?id=677065
2012-08-17 00:48:40 -04:00
Matthias Clasen
b0d8498ee3 GDateTime: pack the struct better
Makes a difference in 32bit.
2012-08-17 00:27:10 -04:00
Matthias Clasen
8d40389d15 gmarkup: Add g_markup_collect_known_attributes()
Add a variant of g_markup_collect_attributes() which will
ignore unknown attributes (such as those from different XML
namespaces) when parsing markup, rather than returning
G_MARKUP_ERROR_UNKNOWN_ATTRIBUTE as g_markup_collect_attributes()
does.

Patch by Philip Withnall,
https://bugzilla.gnome.org/show_bug.cgi?id=665634
2012-08-16 23:40:08 -04:00
Matthias Clasen
6bee6dbce5 Miscellaneous string fixes
Typo and punctuation fixes, and some rewording, based
on a patch by Philip Withnall, bug
https://bugzilla.gnome.org/review?bug=628193
2012-08-16 23:02:41 -04:00
Matthias Clasen
bf3262dd93 GTest: Improve --help output
https://bugzilla.gnome.org/show_bug.cgi?id=550433
2012-08-16 21:33:04 -04:00
David King
55ca95c220 docs: Improve G_GNUC_* documentation
Mention where the GCC attributes should be placed for functions and
arguments. Add an example for G_GNUC_UNUSED.

https://bugzilla.gnome.org/show_bug.cgi?id=326931
2012-08-16 19:17:41 -04:00
Javier Jardón
f8a5fc2e2e Revert "Use upstream gettext instead the glib one"
Commited by mistake
This reverts commit e930e3b3aa.
2012-08-15 02:46:16 +09:00
Javier Jardón
e930e3b3aa Use upstream gettext instead the glib one 2012-08-15 01:41:11 +09:00
Matthias Clasen
a74749d354 Deprecated GSlice config API
This was marked as 'internal debugging' in the headers, and
should have never been made public. As a first step to repair
this, deprecate it.

https://bugzilla.gnome.org/show_bug.cgi?id=680831
2012-08-06 08:52:58 -04:00
Stef Walter
278fe0c67f gchecksum: Add g_compute_checksum_for_bytes()
* Add a GBytes based version of g_compute_checksum_for_data()
 * Add appropriate tests

https://bugzilla.gnome.org/show_bug.cgi?id=680912
2012-08-06 10:38:39 +02:00
Stef Walter
dd2ecf7488 checksum: Use functions instead of macros when building tests
* No need for hard to debug and maintain macros here.

https://bugzilla.gnome.org/show_bug.cgi?id=681151
2012-08-06 10:32:49 +02:00
Dan Winship
b3f9637337 gthreadpool: set default max_unused_threads and max_idle_time values
GThreadPool defaulted to 0 for max_unused_threads (meaning thread-pool
threads would exit immediately if there was not already another task
waiting for them), and 0 for max_idle_time (meaning unused threads
would linger forever, though this is only relevant if you changed
max_unused_threads).

However, GIOScheduler changed the global defaults to 2 and 15*1000,
respectively, arguing that these were more useful defaults. And they
are, so let's use them.

https://bugzilla.gnome.org/show_bug.cgi?id=661767
2012-07-31 14:37:56 -04:00
Dan Winship
26056558be gmain: allow g_source_get_context() on destroyed sources
g_source_get_context() was checking that the source wasn't destroyed
(since a source doesn't hold a ref on its context, and so
source->context might point to garbage in that case). However, it's
useful to be allowed to call g_source_get_context() on a source that
is destroyed-but-currently-running.

So instead, let g_source_get_context() return the context whenever
it's non-NULL, and clear the source->context of any sources that are
still in a context's sources list when the context is freed. Since
sources are only removed from the list when the source is freed (not
when it is destroyed), this means that now whenever a source has a
non-NULL context pointer, then that pointer is valid.

This also means that g_source_get_time() will now return-if-fail
rather than crashing if it is called on a source whose context has
been destroyed.

Add tests to glib/tests/mainloop to verify that g_source_get_context()
and g_source_get_time() work on destroyed sources.

https://bugzilla.gnome.org/show_bug.cgi?id=661767
2012-07-30 12:48:10 -04:00
Dan Winship
6881e743ee glib/tests/mainloop: test g_source_get_time()
Verify that

  - g_source_get_time() does not change within a single callback
    (even if the real time does)

  - g_source_get_time() does not change between different callbacks in
    the same mainloop iteration

  - g_source_get_time() does change between iterations if the real
    time did.

https://bugzilla.gnome.org/show_bug.cgi?id=661767
2012-07-30 12:48:10 -04:00
Lionel Landwerlin
ad4f780cb4 glib: fix locale detection on android
g_utf8_strup() tries to call setlocale() before starting to compute
the length of its first argument. Calling setlocale() can return NULL
(as specified in the man page), and obviously that happens on android.

https://bugzilla.gnome.org/show_bug.cgi?id=680704
2012-07-27 19:41:05 +02:00
Colin Walters
003e7a70e8 Revert unintential IAPI break for g_key_file_load_from_data()
The old (length) annotation actually wasn't being read.  Changing
it to an array was telling g-i that it was an array of utf8, which
is clearly not true.

We *could* add (element-type guint8), but that would change it to a
byte array, as opposed to the original utf8 version.

Just removing the annotation should bring us back to where we
were, which was fine.

https://bugzilla.gnome.org/show_bug.cgi?id=680310
2012-07-20 14:07:39 -04:00
Matthias Clasen
23a2136fb5 Check for PR_SET_NAME
Bug 680148 claims that PR_SET_NAME may not be defined when
using an old kernel. Deal with it.
2012-07-19 06:37:59 -04:00
Matthias Clasen
4c255d4602 Be more careful when using xlocale
Bug 680074 shows that we may end up in situations where only
some of the xlocale functions we need are available. Rather than
trying to find the minimal set of required functions for each
use, define a global USE_XLOCALE and only use any xlocale functions
if we have a full set.
2012-07-19 06:32:29 -04:00
Matthias Clasen
dd098405ad Cosmetic: Fix up line endings
Somehow a few ^M sneaked in here.
2012-07-19 06:20:41 -04:00
Dan Winship
2357f67b1b gmain: handle child sources being destroyed before parent
Fix a crash when a child source is destroyed before its parent. Also,
add a test case for this and the previous fix.
2012-07-18 15:08:44 -04:00
Dan Winship
ee6e66cb44 g_source_add_child_source: sync blocked state
Child sources are supposed to be blocked when their parents are, so
when adding a source to a blocked source, block the child too. Fixes a
warning when unblocking the parent.
2012-07-18 14:19:36 -04:00
Krzesimir Nowak
cd8ec3359b GVariantType: Add (constructor) annotation for some constructors.
This are mistaken by g-ir-scanner as GVariantType's methods, because
they take a GVariantType* as a first parameter.

https://bugzilla.gnome.org/show_bug.cgi?id=679968
2012-07-16 17:58:22 +02:00
Marc-André Lureau
bfbfbec91e win32: g_getenv() should return "" if variable exists and empty
On Windows, GetEnvironmentVariable() returns 0 for empty variables.
Checking GetLastError() == ERROR_ENVVAR_NOT_FOUND helps make a
difference between a variable that does not exist or an empty one
which should return "".

https://bugzilla.gnome.org/show_bug.cgi?id=679617
2012-07-16 12:49:25 +02:00
Marc-André Lureau
6007a4b0b1 win32: fix g_get_environ()
The current code create the strv array incorrectly, it is too big and
leaves invalid holes. This may result in crashes when freeing the
returned value.

https://bugzilla.gnome.org/show_bug.cgi?id=679617
2012-07-16 12:49:24 +02:00
Matthias Clasen
34b2125edf Fix doc build 2012-07-13 17:37:12 -04:00
Marc-André Lureau
d9af4259f7 win32: fix build g_spawn_check_exit_status() with mingw
With mingw, only gspawn-win32.c is compiled, but it is missing some
new symbols.

https://bugzilla.gnome.org/show_bug.cgi?id=679691
2012-07-12 23:19:52 -04:00
Krzesimir Nowak
ce1b50bf2a GRegex, GConvert: Add some missing annotations.
Also, removed pointless (allow-none) return annotation.

https://bugzilla.gnome.org/show_bug.cgi?id=679762
2012-07-12 16:09:57 +02:00
Colin Walters
f7abd3ce13 Add g_spawn_check_exit_status()
Many (if not "almost all") programs that spawn other programs via
g_spawn_sync() or the like simply want to check whether or not the
child exited successfully, but doing so requires use of
platform-specific functionality and there's actually a fair amount of
boilerplate involved.

This new API will help drain a *lot* of mostly duplicated code in
GNOME, from gnome-session to gdm.  And we can see that some bits even
inside GLib were doing it wrong; for example checking the exit status
on Unix, but ignoring it on Windows.

https://bugzilla.gnome.org/show_bug.cgi?id=679691
2012-07-10 18:03:56 -04:00
Antoine Jacoutot
4749878f91 goptions: use G_N_ELEMENTS instead of nitems 2012-07-10 15:14:52 +02:00
Ryan Lortie
5a85fe0e37 GVariant: fix string validation
String validation was done by checking if the string was valid utf8 and
ensuring that the first non-utf8 character was the last character (ie:
the nul terminator).

No check was actually done to make sure that this byte actually
contained a nul, however, so it was possible that you could have a
string like "hello\xff" with length 6 that would correctly validate.

Fix that, and test it.
2012-07-09 12:47:31 -04:00
Antoine Jacoutot
f9a6a97470 OpenBSD: explicitely define nitems
nitems is never guaranteed to be defined in sys/params.h as it is meant
to be defined within a protected ifdef __KERNEL condition.
2012-07-08 19:23:18 +02:00
Christian Persch
53b3175cfa regex: Add new GRegexError code from PCRE 8.31 2012-07-07 22:08:08 +02:00
Christian Persch
2188a5e59c regex: Enable fixed test
This problem was fixed in PCRE 8.31, so uncomment the test.
2012-07-07 22:08:08 +02:00
Christian Persch
9457833010 regex: Import PCRE 8.31
https://bugzilla.gnome.org/show_bug.cgi?id=679193
2012-07-07 22:08:02 +02:00
Ryan Lortie
f66052fc87 GVariant: support comparing booleans
g_variant_compare() is documented as working on booleans but somehow
this case was missed.  Add it and test it.

Problem discovered by Charles Kerr.
2012-07-06 17:29:30 -04:00
Dan Winship
ee9aae5dcf Clarify the GLIB_VERSION_MIN_REQUIRED/MAX_ALLOWED docs
https://bugzilla.gnome.org/show_bug.cgi?id=674898
2012-07-06 12:10:42 -04:00
Dan Winship
40f0f66151 Deal with GLIB_VERSION_MIN_REQUIRED/MAX_ALLOWED being a "future" value
If GLIB_VERSION_MIN_REQUIRED or GLIB_VERSION_MAX_ALLOWED was defined
to a future value, we were essentially treating it as
GLIB_VERSION_0_0. Fix to treat it as being in the future instead.

https://bugzilla.gnome.org/show_bug.cgi?id=674898
2012-07-06 12:10:42 -04:00
Colin Walters
4ac0d78d5d GString: Tweak documentation, add g_string_free_to_bytes()
The docs for GString should really mention GByteArray, and what makes
it different.  Drop the comparison to Java which is dated and actually
inaccurate (because StringBuffer operates on Unicode).

While we're here, add g_string_free_to_bytes(), which further
complements the spread of GBytes-based API.  For example, one can
create a buffer using GString, then send it off via
g_output_stream_write_bytes().

https://bugzilla.gnome.org/show_bug.cgi?id=677064
2012-07-06 10:19:12 -04:00
Matthias Clasen
ab4cc22ba5 Improve the g_dir_read_name documentation
This function can return NULL in error cases as well. Document
this, and explain how to discriminate the cases.
https://bugzilla.gnome.org/show_bug.cgi?id=639771
2012-07-05 22:25:49 -04:00
Rico Tzschichholz
72660997bc glib/deprecated: Fix some version typos 2012-07-03 21:22:16 +02:00
Neil Roberts
489b947c3b Fix the 'Since' tag for G_SOURCE_{REMOVE,CONTINUE}
The Since tag for these was saying 2.28 but it was actually added in
2.31. It looks like all of the Since tags list stable version numbers
so this patch bumps that up to 2.32.

https://bugzilla.gnome.org/show_bug.cgi?id=679258
2012-07-02 18:44:49 +01:00
Daniel Mustieles
1519d6b894 Fixed a a «big bug» in a string ;-) 2012-07-02 17:24:45 +02:00
Christian Persch
7483315f83 regex: Fix unicode othercasing
Reorder the toupper/tolower calls when othercaseing, so this
function is bug-for-bug compatible with the pcre internal tables.

https://bugzilla.gnome.org/show_bug.cgi?id=678273
2012-07-02 15:59:39 +02:00
Christian Persch
a2f54a3408 regex: Add FIRSTLINE compile flag
This option exists since PCRE 6.0.
2012-07-02 15:59:39 +02:00
Christian Persch
e99e34f65f regex: Add NOTEMPTY_ATSTART match option
Since PCRE 8.00 it supports a variant of PCRE_NOTEMPTY that works
similarly except that it only applies to the start of the matched string
but permits empty matches further in.
2012-07-02 15:59:39 +02:00
Christian Persch
1171215014 regex: Add PARTIAL_HARD match option
Since PCRE 8.00 it supports a new partial matching method PCRE_PARTIAL_HARD.
2012-07-02 15:59:39 +02:00
Christian Persch
0a2967030a regex: Add JavaScript compat mode
Since PCRE 7.7, there's a flag that changes the behaviour to be more
JavaScript compatible. Since it's no effort to expose it, just do so.
2012-07-02 15:59:39 +02:00
Christian Persch
e5550a24db regex: Don't leak internal PCRE options
g_regex_get_compile_get_compile_flags() and g_regex_get_match_flags()
were leaking PCRE flags that don't exist in the corresponding
public GRegexCompileFlags and GRegexMatchFlags; this change masks
these internal flags.
2012-07-02 15:59:39 +02:00
Christian Persch
26d91ddc08 regex: Add BSR_ANYCRLF and BSR_ANY match options
These flags override the compile option at match time. They use PCRE_BSR_ANYCRLF
and PCRE_BSR_UNICODE, resp., which make \R match only CR, LF and CRLF, or any
Unicode newline character or character sequences, resp.
2012-07-02 15:59:39 +02:00
Christian Persch
88ac3839f5 regex: Add BSR_ANYCRLF compile option
When this flag is set, \R only matches CR, LF and CRLF.
2012-07-02 15:59:39 +02:00