Commit Graph

18665 Commits

Author SHA1 Message Date
Will Thompson
c1a8e93dc4
gfileutils: document non-atomicity of g_file_set_contents()
This function only calls fsync() if @target exists and is non-empty. If
not, it doesn't provide the "old contents or new contents" guarantee
that one might expect. This has been the case since
d20a188b12, and is justified either as a
performance optimization or by asserting that this function only
guarantees to not destroy existing data (implicitly defining
non-existence or emptiness as not data).

In addition, explicitly spell out that whether it's atomic in the
non-empty case is system-dependent. If the system administrator has
configured some funky filesystem options, they may be out of luck on the
atomicity front.

https://gitlab.gnome.org/GNOME/glib/issues/1302
2018-06-15 14:47:47 +01:00
Xavier Claessens
acb4f54833 Merge branch 'meson-functions' into 'master'
Meson: Add missing checks for functions

See merge request GNOME/glib!114
2018-06-15 13:27:18 +00:00
Xavier Claessens
a633e260c7 Merge branch 'gitlab' into 'master'
docs: Change Bugzilla references to GitLab

See merge request GNOME/glib!116
2018-06-15 13:23:52 +00:00
Philip Withnall
5e46a97ac6 gvariant: Document differences between GVariant bytestrings and arrays
https://gitlab.gnome.org/GNOME/glib/issues/896
2018-06-15 13:17:25 +01:00
Philip Withnall
09419fdeb4 gvariant: Change type of ‘y’ variants from guchar to guint8
This fits better with the convention in the rest of GLib where arbitrary
8-bit values are represented as guint8, avoiding the potential confusing
of a name which references ‘char’s.

This is not an API break, as both guint8 and guchar are unconditionally
typedeffed to unsigned char.

https://gitlab.gnome.org/GNOME/glib/issues/896
2018-06-15 13:10:36 +01:00
Philip Withnall
77dba8537c docs: Rename README.commits to CONTRIBUTING.md
That means GitLab will automatically pick it up and link people to it.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-06-15 13:05:00 +01:00
Philip Withnall
c200c1d1df docs: Rename README.in to README.md for GitLab
There seems to be little point in substituting the version number into
README (using autotools). Rename it to README.md and distribute that
verbatim (with autotools and Meson) instead.

Autotools still requires that README exists, so leave a stub README file
in place which redirects people to README.md. This can be dropped when
we drop autotools support.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-06-15 13:04:59 +01:00
Olivier Crête
8e65417c6e docs: Change Bugzilla references to GitLab
Including modifications by Philip Withnall <withnall@endlessm.com>
2018-06-15 13:04:39 +01:00
Philip Withnall
3126f73c80 Merge branch '1368-codegen-interface-info' into 'master'
gdbus-codegen: Add a mode to generate GDBusInterfaceInfo structures

Closes #1368

See merge request GNOME/glib!13
2018-06-15 10:35:46 +00:00
Ondrej Holy
e0e0f259c3 gio: Add bash completion for gio tool
GVfs utils used to have bash completion, which was pretty useful. However,
it hasn't been ported to gio tool unfortunately. GLib provides completion
for various utils already, so it would be nice to provide completion also
for gio tool. I've updated old bash completion code and merged with some
my old unmerged fixes.

The gvfs completion used "gvfs-ls --show-completions" helper. This mentioned
option hasn't been obviously ported to "gio list" and the proposed completion
doesn't add this option in "gio list" to not pollute the codes, but maybe it
is a bit slower as consequence.

The proposed bash completion suggests subcommands, uris and paths including
the remote mounts. It contains some workarounds, especially because of proper
handling of paths with colons and other special chars (like spaces)...
2018-06-15 12:34:10 +02:00
Christoph Reiter
45f9b5a336 Merge branch 'strlcpy' into 'master'
Meson: Add check for strlcpy/strlcat

See merge request GNOME/glib!111
2018-06-15 05:22:54 +00:00
Christoph Reiter
ee5a37f657 Merge branch 'threads-none' into 'master'
Remove unused THREADS_NONE

See merge request GNOME/glib!110
2018-06-15 04:55:17 +00:00
Christoph Reiter
efb5d50010 Merge branch 'struct-member' into 'master'
Meson: Add missing checks for struct members

See merge request GNOME/glib!113
2018-06-15 04:51:06 +00:00
Xavier Claessens
8ba364186f Meson: Add missing checks for functions 2018-06-14 14:51:08 -04:00
Xavier Claessens
5ee54589e2 Meson: Add missing checks for struct members 2018-06-14 14:32:49 -04:00
Richard Hughes
7a7fe06939 gio: PPC64 returns EOPNOTSUPP from splice() if not supported 2018-06-14 19:18:25 +01:00
Xavier Claessens
76a7f7dca3 Remove unused THREADS_NONE
Thread implementation is mandatory and configure will abort. So there is
no point in having a THREADS_NONE conditional/define.
2018-06-14 14:07:40 -04:00
Xavier Claessens
5ebcfdf447 Meson: Add check for strlcpy/strlcat
I don't know why it runs the code in autotools instead of only checking
if it links, but let's copy the same logic for now.
2018-06-14 14:00:43 -04:00
Philip Withnall
0e3b137210 codegen: Fix a minor Python linting warning
This introduces no functional changes.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=795304
2018-06-14 18:57:53 +01:00
Philip Withnall
3a1536ba34 codegen: Suppress the old --xml-files option in the --help output
Since it’s deprecated in favour of positional arguments, including it in
the help output is confusing.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=795304
2018-06-14 18:57:53 +01:00
Philip Withnall
8916874ee6 codegen: Add --interface-info-[body|header] modes
These generate basic .c and .h files containing the GDBusInterfaceInfo
for a D-Bus introspection XML file, but no other code (no skeletons,
proxies, GObjects, etc.).

This is useful for projects who want to describe their D-Bus interfaces
using introspection XML, but who wish to implement the interfaces
manually (for various reasons, typically because the skeletons generated
by gdbus-codegen are too simplistic and limiting). Previously, these
projects would have had to write the GDBusInterfaceInfo manually, which
is painstaking and error-prone.

The new --interface-info-[body|header] options are very similar to
--[body|header], but mutually exclusive with them.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=795304
2018-06-14 18:57:53 +01:00
Philip Withnall
99b64d4014 codegen: Support Since and name changing annotations on annotations
Recursive annotations do seem to be supported, so we should support them
properly in the type system representation. This currently introduces no
behavioural changes, but will be used in upcoming commits.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

https://bugzilla.gnome.org/show_bug.cgi?id=795304
2018-06-14 18:57:53 +01:00
Philip Withnall
c36c55dbd6 Merge branch 'fdonotif-fix-backend-dispose-race' into 'master'
gfdonotificationbackend: hold a strong ref on backend

See merge request GNOME/glib!106
2018-06-14 17:49:29 +00:00
Philip Withnall
7830b65c5f Merge branch 'triple_dash' into 'master'
goption: Reject group options specified with three dashes

Closes #1418

See merge request GNOME/glib!108
2018-06-14 17:43:53 +00:00
Philip Withnall
6dc543c6d3 Merge branch 'issue-699' into 'master'
Deprecate g_type_class_add_private()

Closes #699

See merge request GNOME/glib!7
2018-06-14 17:27:30 +00:00
Philip Withnall
ac690d9a8c docs: Amend the docs for g_str_equal() to reflect current general usage
People do (and should) use g_str_equal() for string comparisons outside
of hash tables, because it’s easier to read than
`strcmp (str1, str2) == 0`. That should not be discouraged.

However, we should still be careful to point out that g_str_equal() is
not NULL-safe, and g_strcmp0() is.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-06-14 18:12:42 +01:00
Nathan Miller
0b09890bff goption: Reject group options specified with three dashes
Commandline option parsing would recognize group options specified
with three dashes (i.e. ---foo 42).  This behaviour was limited to group
options.
2018-06-14 10:49:31 -05:00
Xavier Claessens
2fe4fa6cd0 Merge branch 'meson-version' into 'master'
build: Bump Meson dependency to 0.46.1

See merge request GNOME/glib!107
2018-06-14 13:44:51 +00:00
Philip Withnall
9c840fedd8 build: Bump Meson dependency to 0.46.1
We don’t strictly require this, but given that our CI runs it, we
essentially never test with 0.46.0, so it might as well be broken.

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-06-14 13:02:18 +01:00
Emmanuele Bassi
7e5db31d36 Deprecate g_type_class_add_private()
It's been 4 years and 8 development cycles since we introduced
G_ADD_PRIVATE and offset-based private data access. It is now
time to finally deprecate the old mechanism.

Closes: #699
2018-06-14 11:33:53 +01:00
Philip Withnall
d8c003dea6 Merge branch 'G_SOURCE_FUNC-macro' into 'master'
Add G_SOURCE_FUNC cast macro which suppresses -Wcast-function-type

See merge request GNOME/glib!82
2018-06-14 09:34:12 +00:00
Will Thompson
039fa6897b
Add G_SOURCE_FUNC cast macro which suppresses -Wcast-function-type
This is the workaround suggested by
https://gcc.gnu.org/onlinedocs/gcc/Warning-Options.html#index-Wcast-function-type

This warning is not enabled by default during the GLib build, but
applications may want to opt into it.
2018-06-14 10:11:12 +01:00
Arnaud Rebillout
5a73eef749 gfdonotificationbackend: hold a strong ref on backend
This is to avoid race between dispose() being called on the
GFdoNotificationBackend instance, and any pending operations which are
still waiting on a D-Bus reply when it’s disposed.

(thx to Philip Withnall for pointing that out)

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
2018-06-14 11:28:17 +07:00
Philip Withnall
c26558c1b1 Merge branch 'g_dbus_is_supported_address-assertion-failure' into 'master'
g_dbus_is_supported_address(): set error if returning FALSE

See merge request GNOME/glib!101
2018-06-13 11:31:41 +00:00
Will Thompson
ba7b035f5b
g_dbus_is_supported_address(): set error if returning FALSE
Previously, calling:

    g_dbus_is_supported_address ("some-imaginary-transport:", NULL)

correctly returned FALSE; but calling:

    g_dbus_is_supported_address ("some-imaginary-transport:", &error)

crashed with:

    GLib-GIO:ERROR:../gio/gdbusaddress.c:434:g_dbus_is_supported_address:
    assertion failed: (ret || (!ret && (error == NULL || *error != NULL)))

This was because, if the address component did not start with a known
transport, no error was set. Fix this, reusing an error string used by
the corresponding else branch in g_dbus_address_connect(), and adjust
the test to pass both NULL and non-NULL GError **s to this function in
every test case. This case:

    g_assert (!g_dbus_is_supported_address ("some-imaginary-transport:foo=bar;unix:path=/this/is/valid", NULL));

would have caught this bug with a non-NULL GError **.
2018-06-13 11:01:56 +01:00
Philip Withnall
e48a3920d4 Merge branch 'fdonotif-segfault-fix' into 'master'
gfdonotificationbackend: Fix possible invalid pointer in dbus callback

See merge request GNOME/glib!90
2018-06-13 09:27:11 +00:00
Arnaud Rebillout
57e070f874 gfdonotificationbackend: Fix possible invalid pointer in dbus callback
The way things were before: a FreedesktopNotification struct is
allocated before the dbus call, and this same struct is possibly re-used
for other dbus calls. If the server becomes unavailable, the callback
will be invoked after the call times out, which leaves a long time where
other dbus calls can happen, re-using the same FreedesktopNotification
as user data. When the first call times out, the callback is invoked,
and the user data is freed. Subsequent calls that used the same user
data will time out later on, and try to free a pointer that was already
freed, hence segfaults.

This bug can be reproduced in Cinnamon 3.6.7, as mentioned in:
<https://github.com/linuxmint/Cinnamon/issues/7491>

This commit fixes that by always allocating a new
FreedesktopNotification before invoking dbus_call(), ensuring that the
callback always have a valid user data.

Signed-off-by: Arnaud Rebillout <elboulangero@gmail.com>
2018-06-13 08:32:30 +07:00
Xavier Claessens
0d0e23328f Merge branch '776583-win32-notifications-warn-once' into 'master'
gwin32notificationbackend: Only warn once

See merge request GNOME/glib!96
2018-06-12 23:09:59 +00:00
Philip Withnall
e660355d25 Merge branch 'tests-remove-perl' into 'master'
tests: Port gen-casefold-txt.pl and gen-casemap-txt.pl to Python 3. See #1332

See merge request GNOME/glib!37
2018-06-12 20:31:43 +00:00
Christoph Reiter
a580185cdc tests: Port gen-casefold-txt.pl and gen-casemap-txt.pl to Python 3. See #1332
I've tried to keep the code structure roughly the same.
2018-06-12 22:18:03 +02:00
Philip Withnall
603d40467c Merge branch '303-win32-spawn' into 'master'
gspawn: Make error codes on Windows more specific

Closes #303

See merge request GNOME/glib!100
2018-06-12 19:10:52 +00:00
Philip Withnall
d157102a54 gspawn: Factor out error code conversion function
This will be used in gspawn-win32.c too in an upcoming commit.

https://gitlab.gnome.org/GNOME/glib/issues/303

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-06-12 16:13:51 +01:00
Philip Withnall
6c8da69443 gspawn: Make error codes on Windows more specific
A slightly modified patch originally written by Morten Welinder
<terra@gnome.org> to make the error codes returned by g_spawn_*()
functions more specific when on Windows. They are already this specific
on Linux.

Add a unit test for the ENOENT case.

https://gitlab.gnome.org/GNOME/glib/issues/303

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-06-12 16:13:44 +01:00
Philip Withnall
f4d2051fc1 gspawn: Fix errno saving in Windows implementation
The error number was saved after some g_debug() and g_free() calls, in
various places, which meant it could have been overwritten since the
error we care about happened.

https://gitlab.gnome.org/GNOME/glib/issues/303

Signed-off-by: Philip Withnall <withnall@endlessm.com>
2018-06-12 15:33:35 +01:00
Daniel Mustieles
8259ad9907 Updated Spanish translation 2018-06-12 15:56:27 +02:00
Philip Withnall
39382c7889 gwin32notificationbackend: Only warn once
Use a GOnce to make sure we only warn about notifications not being
supported on Windows once, rather than on each attempted notification.

Signed-off-by: Philip Withnall <withnall@endlessm.com>

Helps: https://gitlab.gnome.org/GNOME/glib/issues/1234
2018-06-12 12:45:35 +01:00
Christoph Reiter
fded2090e2 Merge branch '811-content-type-docs' into 'master'
docs: Add (transfer full) annotation to g_content_type_get_mime_type()

Closes #811

See merge request GNOME/glib!84
2018-06-12 08:52:56 +00:00
Philip Withnall
54498aa7ae Merge branch 'lrn/binary-tests' into 'master'
Force binary mode for stdout in printf tests

See merge request GNOME/glib!89
2018-06-11 15:06:25 +00:00
Philip Withnall
815478a74e Merge branch 'refcount-types' into 'master'
Reference counting types

See merge request GNOME/glib!54
2018-06-11 14:20:46 +00:00
Руслан Ижбулатов
ce1e32ec34 Force binary mode for stdout in printf tests
This allows test calls to produce output with \n
line separators on Windows, instead of \r\n.
Reduces the number of ifdefs, since all checks
can be done against one template on all platforms.
2018-06-11 14:20:34 +00:00