Merge branch 'g_dbus' into 'main'

gdbus: Add g_dbus_is_error_name() symbol for g_dbus_is_interface_name()

Closes #402

See merge request GNOME/glib!2156
This commit is contained in:
Philip Withnall 2021-06-16 10:58:04 +00:00
commit 4d6dbe0904
5 changed files with 34 additions and 3 deletions

View File

@ -2806,6 +2806,7 @@ g_dbus_is_name
g_dbus_is_unique_name
g_dbus_is_member_name
g_dbus_is_interface_name
g_dbus_is_error_name
g_dbus_gvalue_to_gvariant
g_dbus_gvariant_to_gvalue
g_dbus_escape_object_path_bytestring

View File

@ -3204,7 +3204,7 @@ g_dbus_message_set_error_name (GDBusMessage *message,
const gchar *value)
{
g_return_if_fail (G_IS_DBUS_MESSAGE (message));
g_return_if_fail (value == NULL || g_dbus_is_interface_name (value));
g_return_if_fail (value == NULL || g_dbus_is_error_name (value));
set_string_header (message, G_DBUS_MESSAGE_HEADER_FIELD_ERROR_NAME, value);
}

View File

@ -268,6 +268,28 @@ g_dbus_is_interface_name (const gchar *string)
return ret;
}
/**
* g_dbus_is_error_name:
* @string: The string to check.
*
* Check whether @string is a valid D-Bus error name.
*
* This function returns the same result as g_dbus_is_interface_name(),
* because D-Bus error names are defined to have exactly the
* same syntax as interface names.
*
* Returns: %TRUE if valid, %FALSE otherwise.
*
* Since: 2.70
*/
gboolean
g_dbus_is_error_name (const gchar *string)
{
/* Error names are the same syntax as interface names.
* See https://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-names-error */
return g_dbus_is_interface_name (string);
}
/* ---------------------------------------------------------------------------------------------------- */
/* TODO: maybe move to glib? if so, it should conform to http://en.wikipedia.org/wiki/Guid and/or

View File

@ -42,6 +42,8 @@ GLIB_AVAILABLE_IN_ALL
gboolean g_dbus_is_member_name (const gchar *string);
GLIB_AVAILABLE_IN_ALL
gboolean g_dbus_is_interface_name (const gchar *string);
GLIB_AVAILABLE_IN_2_70
gboolean g_dbus_is_error_name (const gchar *string);
GLIB_AVAILABLE_IN_ALL
void g_dbus_gvariant_to_gvalue (GVariant *value,

View File

@ -1162,9 +1162,15 @@ test_validate_names (void)
g_assert (!g_dbus_is_unique_name (names[n].string));
if (names[n].interface)
g_assert (g_dbus_is_interface_name (names[n].string));
{
g_assert (g_dbus_is_interface_name (names[n].string));
g_assert (g_dbus_is_error_name (names[n].string));
}
else
g_assert (!g_dbus_is_interface_name (names[n].string));
{
g_assert (!g_dbus_is_interface_name (names[n].string));
g_assert (!g_dbus_is_error_name (names[n].string));
}
}
}