Mon, 17 Mar 2025 21:22:42 -0500
IRCv3: handle mode messages for channel modes
Also require Ibis 0.12.0
Testing Done:
Joined a channel on my local ergo and set a bunch of modes including giving and remove chanops from users.
Bugs closed: PIDGIN-18000
Reviewed at https://reviews.imfreedom.org/r/3908/
/* * Purple - Internet Messaging Library * Copyright (C) Pidgin Developers <devel@pidgin.im> * * Purple is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * source distribution. * * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this library; if not, see <https://www.gnu.org/licenses/>. */ #if !defined(PURPLE_GLOBAL_HEADER_INSIDE) && !defined(PURPLE_COMPILATION) # error "only <purple.h> may be included directly" #endif #ifndef PURPLE_ATTACHMENT_H #define PURPLE_ATTACHMENT_H #include <glib-object.h> #include "purpleversion.h" G_BEGIN_DECLS #define PURPLE_TYPE_ATTACHMENT purple_attachment_get_type() /** * PurpleAttachment: * * #PurpleAttachment represents a file attached to a #PurpleMessage. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 G_DECLARE_FINAL_TYPE(PurpleAttachment, purple_attachment, PURPLE, ATTACHMENT, GObject) /** * purple_attachment_new: * @id: The identifier of the attachment. * @content_type: The mime-type of the content. * * Creates a new #PurpleAttachment with the given @id and @content_type. * * Returns: (transfer full): The new attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 PurpleAttachment *purple_attachment_new(const char *id, const char *content_type); /** * purple_attachment_equal: * @attachment2: the second instance * * Checks if two attachments are equal. * * Attachments are considered equal if their [property@Attachment:id] * properties are equal. * * Returns: true if the attachments are equal; otherwise false. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 gboolean purple_attachment_equal(PurpleAttachment *attachment1, PurpleAttachment *attachment2); /** * purple_attachment_get_id: * @attachment: The #PurpleAttachment instance. * * Gets the ID from @attachment. * * Returns: The ID of @attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 const char *purple_attachment_get_id(PurpleAttachment *attachment); /** * purple_attachment_set_id: * @attachment: The #PurpleAttachment instance. * @id: The new ID for @attachment. * * Sets the ID of @attachment to @id. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 void purple_attachment_set_id(PurpleAttachment *attachment, const char *id); /** * purple_attachment_get_inline: * * Gets whether or not the attach should be displayed inline. * * Returns: true if the attachment should be displayed inline; otherwise false. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 gboolean purple_attachment_get_inline(PurpleAttachment *attachment); /** * purple_attachment_set_inline: * @_inline: the new value * * Sets whether or not the attachment should be displayed inline. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 void purple_attachment_set_inline(PurpleAttachment *attachment, gboolean _inline); /** * purple_attachment_get_content_type: * @attachment: The #PurpleAttachment instance. * * Gets the content-type of @attachment. * * Returns: The content-type of @attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 const char *purple_attachment_get_content_type(PurpleAttachment *attachment); /** * purple_attachment_set_content_type: * @content_type: (nullable): the new content-type * * Sets the content type of the attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 void purple_attachment_set_content_type(PurpleAttachment *attachment, const char *content_type); /** * purple_attachment_get_local_uri: * @attachment: The #PurpleAttachment instance. * * Gets the local URI if any for @attachment. * * Returns: (nullable): The local URI for @attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 const char *purple_attachment_get_local_uri(PurpleAttachment *attachment); /** * purple_attachment_set_local_uri: * @attachment: The #PurpleAttachment instance. * @local_uri: The new local URI. * * Sets the local URI of @attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 void purple_attachment_set_local_uri(PurpleAttachment *attachment, const char *local_uri); /** * purple_attachment_get_remote_uri: * @attachment: The #PurpleAttachment instance. * * Gets the remote URI if any for @attachment. * * Returns: (nullable): The remote URI for @attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 const char *purple_attachment_get_remote_uri(PurpleAttachment *attachment); /** * purple_attachment_set_remote_uri: * @attachment: The #PurpleAttachment instance. * @remote_uri: The new remote URI. * * Sets the remote URI of @attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 void purple_attachment_set_remote_uri(PurpleAttachment *attachment, const char *remote_uri); /** * purple_attachment_get_size: * @attachment: The #PurpleAttachment instance. * * Gets the size of @attachment. * * Returns: The size of @attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 guint64 purple_attachment_get_size(PurpleAttachment *attachment); /** * purple_attachment_set_size: * @attachment: The #PurpleAttachment instance. * @size: The new size of @attachment. * * Sets the size of @attachment to @size. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 void purple_attachment_set_size(PurpleAttachment *attachment, guint64 size); /** * purple_attachment_get_filename: * @attachment: The #PurpleAttachment instance. * * Gets the base filename for @attachment. Remote URI will be checked before * local URI, but the basename of one of those is what will be returned. * * Returns: (transfer full): The filename for @attachment. * * Since: 3.0 */ PURPLE_AVAILABLE_IN_3_0 char *purple_attachment_get_filename(PurpleAttachment *attachment); G_END_DECLS #endif /* PURPLE_ATTACHMENT_H */