⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 novell.c

📁 Linux下的多协议即时通讯程序源代码
💻 C
📖 第 1 页 / 共 5 页
字号:
			NMUserRecord *ur;			ur = nm_conference_get_participant(conf, 0);			if (ur)				name = nm_user_record_get_userid(ur);			if (name)				err = g_strdup_printf(_("Unable to send message to %s."										" Could not create the conference (%s)."),						      name,						      nm_error_to_string (ret_code));			else				err = g_strdup_printf(_("Unable to send message."										" Could not create the conference (%s)."),						      nm_error_to_string (ret_code));			purple_notify_error(gc, NULL, err, NULL);			g_free(err);		}		if (msg)			nm_release_message(msg);	}}/* Move contact to newly created folder */static void_create_folder_resp_move_contact(NMUser * user, NMERR_T ret_code,								 gpointer resp_data, gpointer user_data){	NMContact *contact = user_data;	NMFolder *new_folder;	char *folder_name = resp_data;	NMERR_T rc = NM_OK;	if (user == NULL || folder_name == NULL || contact == NULL) {		if (folder_name)			g_free(folder_name);		return;	}	if (ret_code == NM_OK || ret_code == NMERR_DUPLICATE_FOLDER) {		new_folder = nm_find_folder(user, folder_name);		if (new_folder) {			/* Tell the server to move the contact to the new folder *//*			rc = nm_send_move_contact(user, contact, new_folder,			_move_contact_resp_cb, NULL); */			rc = nm_send_create_contact(user, new_folder, contact,										NULL, NULL);			_check_for_disconnect(user, rc);		}	} else {		PurpleConnection *gc = purple_account_get_connection(user->client_data);		char *err = g_strdup_printf(_("Unable to move user %s"									  " to folder %s in the server side list."									  " Error while creating folder (%s)."),					    nm_contact_get_dn(contact),					    folder_name,					    nm_error_to_string (ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}	if (folder_name)		g_free(folder_name);}/* Add contact to newly create folder */static void_create_folder_resp_add_contact(NMUser * user, NMERR_T ret_code,								gpointer resp_data, gpointer user_data){	NMContact *contact = (NMContact *) user_data;	NMFolder *folder;	char *folder_name = (char *) resp_data;	NMERR_T rc = NM_OK;	if (user == NULL || folder_name == NULL || contact == NULL) {		if (contact)			nm_release_contact(contact);		if (folder_name)			g_free(folder_name);		return;	}	if (ret_code == NM_OK || ret_code == NMERR_DUPLICATE_FOLDER) {		folder = nm_find_folder(user, folder_name);		if (folder) {			rc = nm_send_create_contact(user, folder, contact,										_create_contact_resp_cb, contact);			_check_for_disconnect(user, rc);		}	} else {		PurpleConnection *gc = purple_account_get_connection(user->client_data);		const char *name = nm_contact_get_dn(contact);		char *err =			g_strdup_printf(_("Unable to add %s to your buddy list."					  " Error creating folder in server side list (%s)."),					name, nm_error_to_string (ret_code));		purple_notify_error(gc, NULL, err, NULL);		nm_release_contact(contact);		g_free(err);	}	g_free(folder_name);}static void_join_conf_resp_cb(NMUser * user, NMERR_T ret_code,				   gpointer resp_data, gpointer user_data){	PurpleConversation *chat;	PurpleConnection *gc;	NMUserRecord *ur;	NMConference *conference = user_data;	const char *name, *conf_name;	int i, count;	if (user == NULL || conference == NULL)		return;	gc = purple_account_get_connection(user->client_data);	if (ret_code == NM_OK) {		conf_name = _get_conference_name(++user->conference_count);		chat = serv_got_joined_chat(gc, user->conference_count, conf_name);		if (chat) {			nm_conference_set_data(conference, (gpointer) chat);			count = nm_conference_get_participant_count(conference);			for (i = 0; i < count; i++) {				ur = nm_conference_get_participant(conference, i);				if (ur) {					name = nm_user_record_get_display_id(ur);					purple_conv_chat_add_user(PURPLE_CONV_CHAT(chat), name, NULL, 											PURPLE_CBFLAGS_NONE, TRUE);				}			}		}	}}/* Show info returned by getdetails */static void_get_details_resp_show_info(NMUser * user, NMERR_T ret_code,							gpointer resp_data, gpointer user_data){	PurpleConnection *gc;	NMUserRecord *user_record;	char *name;	char *err;	if (user == NULL)		return;	name = user_data;	if (ret_code == NM_OK) {		user_record = (NMUserRecord *) resp_data;		if (user_record) {			_show_info(purple_account_get_connection(user->client_data),					   user_record);		}	} else {		gc = purple_account_get_connection(user->client_data);		err =			g_strdup_printf(_("Could not get details for user %s (%s)."),					name, nm_error_to_string (ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}	if (name)		g_free(name);}/* Handle get details response add to privacy list */static void_get_details_resp_add_privacy_item(NMUser *user, NMERR_T ret_code,								   gpointer resp_data, gpointer user_data){	PurpleConnection *gc;	NMUserRecord *user_record = resp_data;	char *err;	gboolean allowed = GPOINTER_TO_INT(user_data);	const char *display_id;	if (user == NULL)		return;	gc = purple_account_get_connection(user->client_data);	display_id = nm_user_record_get_display_id(user_record);	if (ret_code == NM_OK) {		if (allowed) {			if (!g_slist_find_custom(gc->account->permit,									 display_id, (GCompareFunc)purple_utf8_strcasecmp)) {				purple_privacy_permit_add(gc->account, display_id, TRUE);			}		} else {			if (!g_slist_find_custom(gc->account->permit,									 display_id, (GCompareFunc)purple_utf8_strcasecmp)) {				purple_privacy_deny_add(gc->account, display_id, TRUE);			}		}	} else {		err = g_strdup_printf(_("Unable to add user to privacy list (%s)."),							  nm_error_to_string(ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}}/* Handle response to create privacy item request */static void_create_privacy_item_deny_resp_cb(NMUser *user, NMERR_T ret_code,								  gpointer resp_data, gpointer user_data){	PurpleConnection *gc;	NMUserRecord *user_record;	char *who = user_data;	char *err;	NMERR_T rc = NM_OK;	const char *display_id = NULL;	if (user == NULL)		return;	gc = purple_account_get_connection(user->client_data);	if (ret_code == NM_OK) {		user_record = nm_find_user_record(user, who);		if (user_record)			display_id = nm_user_record_get_display_id(user_record);		if (display_id) {			if (!g_slist_find_custom(gc->account->deny,									 display_id, (GCompareFunc)purple_utf8_strcasecmp)) {				purple_privacy_deny_add(gc->account, display_id, TRUE);			}		} else {			rc = nm_send_get_details(user, who,									 _get_details_resp_add_privacy_item,									 (gpointer)FALSE);			_check_for_disconnect(user, rc);		}	} else {		err = g_strdup_printf(_("Unable to add %s to deny list (%s)."),							  who, nm_error_to_string(ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}	if (who)		g_free(who);}/* Handle response to create privacy item request */static void_create_privacy_item_permit_resp_cb(NMUser *user, NMERR_T ret_code,									gpointer resp_data, gpointer user_data){	PurpleConnection *gc;	NMUserRecord *user_record;	char *who = user_data;	char *err;	NMERR_T rc = NM_OK;	const char *display_id = NULL;	if (user == NULL)		return;	gc = purple_account_get_connection(user->client_data);	if (ret_code == NM_OK) {		user_record = nm_find_user_record(user, who);		if (user_record)			display_id = nm_user_record_get_display_id(user_record);		if (display_id) {			if (!g_slist_find_custom(gc->account->permit,									 display_id,									 (GCompareFunc)purple_utf8_strcasecmp)) {				purple_privacy_permit_add(gc->account, display_id, TRUE);			}		} else {			rc = nm_send_get_details(user, who,									 _get_details_resp_add_privacy_item,									 (gpointer)TRUE);			_check_for_disconnect(user, rc);		}	} else {		err = g_strdup_printf(_("Unable to add %s to permit list (%s)."), who,							  nm_error_to_string(ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}	if (who)		g_free(who);}static void_get_details_send_privacy_create(NMUser *user, NMERR_T ret_code,								 gpointer resp_data, gpointer user_data){	NMERR_T rc = NM_OK;	PurpleConnection *gc;	NMUserRecord *user_record = resp_data;	char *err;	gboolean allowed = GPOINTER_TO_INT(user_data);	const char *dn, *display_id;	if (user == NULL)		return;	gc = purple_account_get_connection(user->client_data);	dn = nm_user_record_get_dn(user_record);	display_id = nm_user_record_get_display_id(user_record);	if (ret_code == NM_OK) {		if (allowed) {			rc = nm_send_create_privacy_item(user, dn, TRUE,											 _create_privacy_item_permit_resp_cb,											 g_strdup(display_id));			_check_for_disconnect(user, rc);		} else {			rc = nm_send_create_privacy_item(user, dn, FALSE,											 _create_privacy_item_deny_resp_cb,											 g_strdup(display_id));			_check_for_disconnect(user, rc);		}	} else {		err = g_strdup_printf(_("Unable to add user to privacy list (%s)."),							  nm_error_to_string(ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}}static void_remove_privacy_item_resp_cb(NMUser *user, NMERR_T ret_code,									gpointer resp_data, gpointer user_data){	PurpleConnection *gc;	char *who = user_data;	char *err;	if (user == NULL)		return;	if (ret_code != NM_OK) {		gc = purple_account_get_connection(user->client_data);		err = g_strdup_printf(_("Unable to remove %s from privacy list (%s)."), who,							  nm_error_to_string(ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}	if (who)		g_free(who);}static void_set_privacy_default_resp_cb(NMUser *user, NMERR_T ret_code,									gpointer resp_data, gpointer user_data){	PurpleConnection *gc;	char *err;	if (user == NULL)		return;	if (ret_code != NM_OK) {		gc = purple_account_get_connection(user->client_data);		err = g_strdup_printf(_("Unable to change server side privacy settings (%s)."),							  nm_error_to_string(ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}}/* Handle get details response add to privacy list */static void_get_details_resp_send_invite(NMUser *user, NMERR_T ret_code,							  gpointer resp_data, gpointer user_data){	NMERR_T rc = NM_OK;	PurpleConnection *gc;	NMUserRecord *user_record = resp_data;	char *err;	GSList *cnode;	NMConference *conference;	gpointer chat;	long id = (long) user_data;	if (user == NULL)		return;	gc = purple_account_get_connection(user->client_data);	if (ret_code == NM_OK) {		for (cnode = user->conferences; cnode != NULL; cnode = cnode->next) {			conference = cnode->data;			if (conference && (chat = nm_conference_get_data(conference))) {				if (purple_conv_chat_get_id(PURPLE_CONV_CHAT(chat)) == id) {					rc = nm_send_conference_invite(user, conference, user_record,												   NULL, _sendinvite_resp_cb, NULL);					_check_for_disconnect(user, rc);					break;				}			}		}	} else {		err = g_strdup_printf(_("Unable to invite user (%s)."), nm_error_to_string(ret_code));		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}}static void_createconf_resp_send_invite(NMUser * user, NMERR_T ret_code,							  gpointer resp_data, gpointer user_data){	NMERR_T rc = NM_OK;	NMConference *conference = resp_data;	NMUserRecord *user_record = user_data;	PurpleConnection *gc;	char *err;	if (user == NULL)		return;	if (ret_code == NM_OK) {		rc = nm_send_conference_invite(user, conference, user_record,									   NULL, _sendinvite_resp_cb, NULL);		_check_for_disconnect(user, rc);	} else {		err = g_strdup_printf(_("Unable to create conference (%s)."), nm_error_to_string(ret_code));		gc = purple_account_get_connection(user->client_data);		purple_notify_error(gc, NULL, err, NULL);		g_free(err);	}}/******************************************************************************* * Helper functions ******************************************************************************/static char *_user_agent_string(){#if !defined(_WIN32)	const char *sysname = "";	const char *release = "";	struct utsname u;	if (uname(&u) == 0) {		sysname = u.sysname;		release = u.release;	} else {		sysname = "Linux";		release = "Unknown";	}	return g_strdup_printf("Purple/%s (%s; %s)", VERSION, sysname, release);#else	const char *sysname = "";	OSVERSIONINFO os_info;	SYSTEM_INFO sys_info;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -