📄 novell.c
字号:
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 + -