Mon, 30 Apr 2007 07:11:51 +0000
Add padding to silc and bonjour to get rid of a bunch of warnings.
What's the reasoning behind this padding again? So that we don't
break binary compatibility across minor versions?
| 11477 | 1 | /* |
| 15884 | 2 | * purple - Bonjour Protocol Plugin |
| 11477 | 3 | * |
| 15884 | 4 | * Purple is the legal property of its developers, whose names are too numerous |
| 11477 | 5 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 6 | * source distribution. | |
| 7 | * | |
| 8 | * This program is free software; you can redistribute it and/or modify | |
| 9 | * it under the terms of the GNU General Public License as published by | |
| 10 | * the Free Software Foundation; either version 2 of the License, or | |
| 11 | * (at your option) any later version. | |
| 12 | * | |
| 13 | * This program is distributed in the hope that it will be useful, | |
| 14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 16 | * GNU General Public License for more details. | |
| 17 | * | |
| 18 | * You should have received a copy of the GNU General Public License | |
| 19 | * along with this program; if not, write to the Free Software | |
| 20 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
| 21 | */ | |
| 22 | #include <glib.h> | |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
23 | #ifndef _WIN32 |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
24 | #include <pwd.h> |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
25 | #else |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
26 | #define UNICODE |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
27 | #include <windows.h> |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
28 | #include <lm.h> |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
29 | #endif |
| 11477 | 30 | |
| 31 | #include "internal.h" | |
|
13061
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
32 | |
| 11477 | 33 | #include "account.h" |
| 34 | #include "accountopt.h" | |
|
13061
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
35 | #include "debug.h" |
|
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
36 | #include "util.h" |
| 11477 | 37 | #include "version.h" |
| 38 | ||
| 39 | #include "bonjour.h" | |
| 40 | #include "dns_sd.h" | |
| 41 | #include "jabber.h" | |
| 42 | #include "buddy.h" | |
| 43 | ||
|
12339
9333237efc4f
[gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents:
12216
diff
changeset
|
44 | /* |
|
9333237efc4f
[gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents:
12216
diff
changeset
|
45 | * TODO: Should implement an add_buddy callback that removes the buddy |
|
9333237efc4f
[gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents:
12216
diff
changeset
|
46 | * from the local list. Bonjour manages buddies for you, and |
|
13061
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
47 | * adding someone locally by hand is stupid. Or, maybe even better, |
|
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
48 | * if a PRPL does not have an add_buddy callback then do not allow |
|
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
49 | * users to add buddies. |
|
12339
9333237efc4f
[gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents:
12216
diff
changeset
|
50 | */ |
|
9333237efc4f
[gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents:
12216
diff
changeset
|
51 | |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
52 | static char *default_firstname; |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
53 | static char *default_lastname; |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
54 | static char *default_hostname; |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
55 | |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
56 | static void |
| 15884 | 57 | bonjour_removeallfromlocal(PurpleConnection *gc) |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
58 | { |
| 15884 | 59 | PurpleAccount *account = purple_connection_get_account(gc); |
| 60 | PurpleBuddyList *blist; | |
|
15983
31740b53ecd3
Fix some reads of invalid memory when shutting down bonjour when there
Mark Doliner <markdoliner@pidgin.im>
parents:
15884
diff
changeset
|
61 | PurpleBlistNode *gnode, *cnode, *cnodenext, *bnode, *bnodenext; |
| 15884 | 62 | PurpleBuddy *buddy; |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
63 | |
| 15884 | 64 | blist = purple_get_blist(); |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
65 | if (blist == NULL) |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
66 | return; |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
67 | |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
68 | /* Go through and remove all buddies that belong to this account */ |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
69 | for (gnode = blist->root; gnode; gnode = gnode->next) |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
70 | { |
| 15884 | 71 | if (!PURPLE_BLIST_NODE_IS_GROUP(gnode)) |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
72 | continue; |
|
15983
31740b53ecd3
Fix some reads of invalid memory when shutting down bonjour when there
Mark Doliner <markdoliner@pidgin.im>
parents:
15884
diff
changeset
|
73 | for (cnode = gnode->child; cnode; cnode = cnodenext) |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
74 | { |
|
15983
31740b53ecd3
Fix some reads of invalid memory when shutting down bonjour when there
Mark Doliner <markdoliner@pidgin.im>
parents:
15884
diff
changeset
|
75 | cnodenext = cnode->next; |
| 15884 | 76 | if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode)) |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
77 | continue; |
|
15983
31740b53ecd3
Fix some reads of invalid memory when shutting down bonjour when there
Mark Doliner <markdoliner@pidgin.im>
parents:
15884
diff
changeset
|
78 | for (bnode = cnode->child; bnode; bnode = bnodenext) |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
79 | { |
|
15983
31740b53ecd3
Fix some reads of invalid memory when shutting down bonjour when there
Mark Doliner <markdoliner@pidgin.im>
parents:
15884
diff
changeset
|
80 | bnodenext = bnode->next; |
| 15884 | 81 | if (!PURPLE_BLIST_NODE_IS_BUDDY(bnode)) |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
82 | continue; |
| 15884 | 83 | buddy = (PurpleBuddy *)bnode; |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
84 | if (buddy->account != account) |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
85 | continue; |
| 15884 | 86 | purple_prpl_got_user_status(account, buddy->name, "offline", NULL); |
| 87 | purple_blist_remove_buddy(buddy); | |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
88 | } |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
89 | } |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
90 | } |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
91 | } |
|
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
92 | |
|
12443
ad94864144f8
[gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12339
diff
changeset
|
93 | static void |
| 15884 | 94 | bonjour_login(PurpleAccount *account) |
| 11477 | 95 | { |
| 15884 | 96 | PurpleConnection *gc = purple_account_get_connection(account); |
| 97 | PurpleGroup *bonjour_group = NULL; | |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
98 | BonjourData *bd = NULL; |
| 15884 | 99 | PurpleStatus *status; |
| 100 | PurplePresence *presence; | |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
101 | |
| 15884 | 102 | gc->flags |= PURPLE_CONNECTION_HTML; |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
103 | gc->proto_data = g_new0(BonjourData, 1); |
| 11477 | 104 | bd = gc->proto_data; |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
105 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
106 | /* Start waiting for jabber connections (iChat style) */ |
| 11477 | 107 | bd->jabber_data = g_new(BonjourJabber, 1); |
| 13971 | 108 | bd->jabber_data->port = BONJOUR_DEFAULT_PORT_INT; |
| 11477 | 109 | bd->jabber_data->account = account; |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
110 | |
| 11477 | 111 | if (bonjour_jabber_start(bd->jabber_data) == -1) { |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
112 | /* Send a message about the connection error */ |
| 15884 | 113 | purple_connection_error(gc, _("Unable to listen for incoming IM connections\n")); |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
114 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
115 | /* Free the data */ |
| 11477 | 116 | g_free(bd->jabber_data); |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
117 | bd->jabber_data = NULL; |
| 11477 | 118 | return; |
| 119 | } | |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
120 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
121 | /* Connect to the mDNS daemon looking for buddies in the LAN */ |
| 11477 | 122 | bd->dns_sd_data = bonjour_dns_sd_new(); |
| 15884 | 123 | bd->dns_sd_data->name = (sw_string)purple_account_get_username(account); |
| 11477 | 124 | bd->dns_sd_data->txtvers = g_strdup("1"); |
| 125 | bd->dns_sd_data->version = g_strdup("1"); | |
| 15884 | 126 | bd->dns_sd_data->first = g_strdup(purple_account_get_string(account, "first", default_firstname)); |
| 127 | bd->dns_sd_data->last = g_strdup(purple_account_get_string(account, "last", default_lastname)); | |
| 13971 | 128 | bd->dns_sd_data->port_p2pj = bd->jabber_data->port; |
| 11477 | 129 | bd->dns_sd_data->phsh = g_strdup(""); |
| 15884 | 130 | bd->dns_sd_data->email = g_strdup(purple_account_get_string(account, "email", "")); |
| 11477 | 131 | bd->dns_sd_data->vc = g_strdup(""); |
| 15884 | 132 | bd->dns_sd_data->jid = g_strdup(purple_account_get_string(account, "jid", "")); |
| 133 | bd->dns_sd_data->AIM = g_strdup(purple_account_get_string(account, "AIM", "")); | |
|
11834
9c0104f0b8c3
[gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents:
11829
diff
changeset
|
134 | |
| 15884 | 135 | status = purple_account_get_active_status(account); |
| 136 | presence = purple_account_get_presence(account); | |
| 137 | if (purple_presence_is_available(presence)) | |
|
11834
9c0104f0b8c3
[gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents:
11829
diff
changeset
|
138 | bd->dns_sd_data->status = g_strdup("avail"); |
| 15884 | 139 | else if (purple_presence_is_idle(presence)) |
|
11834
9c0104f0b8c3
[gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents:
11829
diff
changeset
|
140 | bd->dns_sd_data->status = g_strdup("away"); |
|
9c0104f0b8c3
[gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents:
11829
diff
changeset
|
141 | else |
|
9c0104f0b8c3
[gaim-migrate @ 14125]
Mark Doliner <markdoliner@pidgin.im>
parents:
11829
diff
changeset
|
142 | bd->dns_sd_data->status = g_strdup("dnd"); |
| 15884 | 143 | bd->dns_sd_data->msg = g_strdup(purple_status_get_attr_string(status, "message")); |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
144 | |
| 11477 | 145 | bd->dns_sd_data->account = account; |
|
11927
f9ede13499d0
[gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents:
11841
diff
changeset
|
146 | if (!bonjour_dns_sd_start(bd->dns_sd_data)) |
|
f9ede13499d0
[gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents:
11841
diff
changeset
|
147 | { |
| 15884 | 148 | purple_connection_error(gc, _("Unable to establish connection with the local mDNS server. Is it running?")); |
|
11927
f9ede13499d0
[gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents:
11841
diff
changeset
|
149 | return; |
|
f9ede13499d0
[gaim-migrate @ 14218]
Mark Doliner <markdoliner@pidgin.im>
parents:
11841
diff
changeset
|
150 | } |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
151 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
152 | /* Create a group for bonjour buddies */ |
| 15884 | 153 | bonjour_group = purple_group_new(BONJOUR_GROUP_NAME); |
| 154 | purple_blist_add_group(bonjour_group, NULL); | |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
155 | |
| 15884 | 156 | /* Show the buddy list by telling Purple we have already connected */ |
| 157 | purple_connection_set_state(gc, PURPLE_CONNECTED); | |
| 11477 | 158 | } |
| 159 | ||
|
12443
ad94864144f8
[gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12339
diff
changeset
|
160 | static void |
| 15884 | 161 | bonjour_close(PurpleConnection *connection) |
| 11477 | 162 | { |
| 15884 | 163 | PurpleGroup *bonjour_group; |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
164 | BonjourData *bd = (BonjourData*)connection->proto_data; |
|
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
165 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
166 | /* Stop looking for buddies in the LAN */ |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
167 | if (bd->dns_sd_data != NULL) |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
168 | { |
| 11477 | 169 | bonjour_dns_sd_stop(bd->dns_sd_data); |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
170 | bonjour_dns_sd_free(bd->dns_sd_data); |
| 11477 | 171 | } |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
172 | |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
173 | if (bd->jabber_data != NULL) |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
174 | { |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
175 | /* Stop waiting for conversations */ |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
176 | bonjour_jabber_stop(bd->jabber_data); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
177 | g_free(bd->jabber_data); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
178 | } |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
179 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
180 | /* Remove all the bonjour buddies */ |
|
11691
d46ace30ec7e
[gaim-migrate @ 13977]
Mark Doliner <markdoliner@pidgin.im>
parents:
11539
diff
changeset
|
181 | bonjour_removeallfromlocal(connection); |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
182 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
183 | /* Delete the bonjour group */ |
| 15884 | 184 | bonjour_group = purple_find_group(BONJOUR_GROUP_NAME); |
| 13063 | 185 | if (bonjour_group != NULL) |
| 15884 | 186 | purple_blist_remove_group(bonjour_group); |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
187 | |
| 11477 | 188 | } |
| 189 | ||
|
12443
ad94864144f8
[gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12339
diff
changeset
|
190 | static const char * |
| 15884 | 191 | bonjour_list_icon(PurpleAccount *account, PurpleBuddy *buddy) |
| 11477 | 192 | { |
| 193 | return BONJOUR_ICON_NAME; | |
| 194 | } | |
| 195 | ||
|
12443
ad94864144f8
[gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12339
diff
changeset
|
196 | static int |
| 15884 | 197 | bonjour_send_im(PurpleConnection *connection, const char *to, const char *msg, PurpleMessageFlags flags) |
| 11477 | 198 | { |
| 199 | if(!to || !msg) | |
| 200 | return 0; | |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
201 | |
|
11693
1a42a66ca0f8
[gaim-migrate @ 13979]
Mark Doliner <markdoliner@pidgin.im>
parents:
11691
diff
changeset
|
202 | return bonjour_jabber_send_message(((BonjourData*)(connection->proto_data))->jabber_data, to, msg); |
| 11477 | 203 | } |
| 204 | ||
|
12443
ad94864144f8
[gaim-migrate @ 14750]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
12339
diff
changeset
|
205 | static void |
| 15884 | 206 | bonjour_set_status(PurpleAccount *account, PurpleStatus *status) |
| 11477 | 207 | { |
| 15884 | 208 | PurpleConnection *gc; |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
209 | BonjourData *bd; |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
210 | gboolean disconnected; |
| 15884 | 211 | PurpleStatusType *type; |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
212 | int primitive; |
| 15884 | 213 | PurplePresence *presence; |
|
11841
85773b4974fe
[gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11839
diff
changeset
|
214 | const char *message, *bonjour_status; |
|
13061
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
215 | gchar *stripped; |
| 11477 | 216 | |
| 15884 | 217 | gc = purple_account_get_connection(account); |
|
11839
bb7002373bb6
[gaim-migrate @ 14130]
Mark Doliner <markdoliner@pidgin.im>
parents:
11837
diff
changeset
|
218 | bd = gc->proto_data; |
| 15884 | 219 | disconnected = purple_account_is_disconnected(account); |
| 220 | type = purple_status_get_type(status); | |
| 221 | primitive = purple_status_type_get_primitive(type); | |
| 222 | presence = purple_account_get_presence(account); | |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
223 | |
| 15884 | 224 | message = purple_status_get_attr_string(status, "message"); |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
225 | if (message == NULL) |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
226 | message = ""; |
| 15884 | 227 | stripped = purple_markup_strip_html(message); |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
228 | |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
229 | /* |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
230 | * The three possible status for Bonjour are |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
231 | * -available ("avail") |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
232 | * -idle ("away") |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
233 | * -away ("dnd") |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
234 | * Each of them can have an optional message. |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
235 | */ |
| 15884 | 236 | if (purple_presence_is_available(presence)) |
|
11841
85773b4974fe
[gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11839
diff
changeset
|
237 | bonjour_status = "avail"; |
| 15884 | 238 | else if (purple_presence_is_idle(presence)) |
|
11841
85773b4974fe
[gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11839
diff
changeset
|
239 | bonjour_status = "away"; |
|
11835
da95d476b481
[gaim-migrate @ 14126]
Mark Doliner <markdoliner@pidgin.im>
parents:
11834
diff
changeset
|
240 | else |
|
11841
85773b4974fe
[gaim-migrate @ 14132]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
11839
diff
changeset
|
241 | bonjour_status = "dnd"; |
| 11477 | 242 | |
|
13061
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
243 | bonjour_dns_sd_send_status(bd->dns_sd_data, bonjour_status, stripped); |
|
ab3ef8e402e4
[gaim-migrate @ 15423]
Mark Doliner <markdoliner@pidgin.im>
parents:
12970
diff
changeset
|
244 | g_free(stripped); |
| 11477 | 245 | } |
| 246 | ||
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
247 | static GList * |
| 15884 | 248 | bonjour_status_types(PurpleAccount *account) |
| 11477 | 249 | { |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
250 | GList *status_types = NULL; |
| 15884 | 251 | PurpleStatusType *type; |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
252 | |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
253 | g_return_val_if_fail(account != NULL, NULL); |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
254 | |
| 15884 | 255 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_AVAILABLE, |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
256 | BONJOUR_STATUS_ID_AVAILABLE, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12489
diff
changeset
|
257 | NULL, TRUE, TRUE, FALSE, |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
258 | "message", _("Message"), |
| 15884 | 259 | purple_value_new(PURPLE_TYPE_STRING), NULL); |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
260 | status_types = g_list_append(status_types, type); |
| 11477 | 261 | |
| 15884 | 262 | type = purple_status_type_new_with_attrs(PURPLE_STATUS_AWAY, |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
263 | BONJOUR_STATUS_ID_AWAY, |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12489
diff
changeset
|
264 | NULL, TRUE, TRUE, FALSE, |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
265 | "message", _("Message"), |
| 15884 | 266 | purple_value_new(PURPLE_TYPE_STRING), NULL); |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
267 | status_types = g_list_append(status_types, type); |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
268 | |
| 15884 | 269 | type = purple_status_type_new_full(PURPLE_STATUS_OFFLINE, |
|
12658
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12650
diff
changeset
|
270 | BONJOUR_STATUS_ID_OFFLINE, |
|
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12650
diff
changeset
|
271 | NULL, TRUE, TRUE, FALSE); |
|
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12650
diff
changeset
|
272 | status_types = g_list_append(status_types, type); |
|
4aa7a873628d
[gaim-migrate @ 15001]
Mark Doliner <markdoliner@pidgin.im>
parents:
12650
diff
changeset
|
273 | |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
274 | return status_types; |
| 11477 | 275 | } |
| 276 | ||
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
277 | static void |
| 15884 | 278 | bonjour_convo_closed(PurpleConnection *connection, const char *who) |
| 11477 | 279 | { |
| 15884 | 280 | PurpleBuddy *buddy = purple_find_buddy(connection->account, who); |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
281 | |
|
11966
ad12fc2943ca
[gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
282 | if (buddy == NULL) |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12489
diff
changeset
|
283 | { |
|
11966
ad12fc2943ca
[gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
284 | /* |
|
ad12fc2943ca
[gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
285 | * This buddy is not in our buddy list, and therefore does not really |
|
ad12fc2943ca
[gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
286 | * exist, so we won't have any data about them. |
|
ad12fc2943ca
[gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
287 | */ |
|
ad12fc2943ca
[gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
288 | return; |
|
12595
8108c22aa723
[gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents:
12489
diff
changeset
|
289 | } |
|
11966
ad12fc2943ca
[gaim-migrate @ 14258]
Mark Doliner <markdoliner@pidgin.im>
parents:
11927
diff
changeset
|
290 | |
| 11477 | 291 | bonjour_jabber_close_conversation(((BonjourData*)(connection->proto_data))->jabber_data, buddy); |
| 292 | } | |
| 293 | ||
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
294 | static char * |
| 15884 | 295 | bonjour_status_text(PurpleBuddy *buddy) |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
296 | { |
| 15884 | 297 | PurplePresence *presence; |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
298 | |
| 15884 | 299 | presence = purple_buddy_get_presence(buddy); |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
300 | |
| 15884 | 301 | if (purple_presence_is_online(presence) && !purple_presence_is_available(presence)) |
|
15872
d4506f8656ab
Mark "Away" for translation
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15524
diff
changeset
|
302 | return g_strdup(_("Away")); |
|
12339
9333237efc4f
[gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents:
12216
diff
changeset
|
303 | |
|
9333237efc4f
[gaim-migrate @ 14643]
Mark Doliner <markdoliner@pidgin.im>
parents:
12216
diff
changeset
|
304 | return NULL; |
| 11477 | 305 | } |
| 306 | ||
|
12970
c2f3b4dcf711
[gaim-migrate @ 15323]
Richard Laager <rlaager@pidgin.im>
parents:
12943
diff
changeset
|
307 | static void |
| 15884 | 308 | bonjour_tooltip_text(PurpleBuddy *buddy, PurpleNotifyUserInfo *user_info, gboolean full) |
| 11477 | 309 | { |
| 15884 | 310 | PurplePresence *presence; |
| 311 | PurpleStatus *status; | |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
312 | const char *status_description; |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
313 | const char *message; |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
314 | |
| 15884 | 315 | presence = purple_buddy_get_presence(buddy); |
| 316 | status = purple_presence_get_active_status(presence); | |
| 317 | message = purple_status_get_attr_string(status, "message"); | |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
318 | |
| 15884 | 319 | if (purple_presence_is_available(presence)) |
| 320 | status_description = purple_status_get_name(status); | |
| 321 | else if (purple_presence_is_idle(presence)) | |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
322 | status_description = _("Idle"); |
|
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
323 | else |
| 15884 | 324 | status_description = purple_status_get_name(status); |
|
11496
0f61069a4a3f
[gaim-migrate @ 13740]
Mark Doliner <markdoliner@pidgin.im>
parents:
11477
diff
changeset
|
325 | |
| 15884 | 326 | purple_notify_user_info_add_pair(user_info, _("Status"), status_description); |
|
11519
abb61e69b1cf
[gaim-migrate @ 13764]
Mark Doliner <markdoliner@pidgin.im>
parents:
11515
diff
changeset
|
327 | if (message != NULL) |
| 15884 | 328 | purple_notify_user_info_add_pair(user_info, _("Message"), message); |
| 11477 | 329 | } |
| 330 | ||
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
331 | static gboolean |
| 15884 | 332 | plugin_unload(PurplePlugin *plugin) |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
333 | { |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
334 | g_free(default_firstname); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
335 | g_free(default_lastname); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
336 | g_free(default_hostname); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
337 | |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
338 | return TRUE; |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
339 | } |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
340 | |
| 15884 | 341 | static PurplePlugin *my_protocol = NULL; |
| 11477 | 342 | |
| 15884 | 343 | static PurplePluginProtocolInfo prpl_info = |
| 11477 | 344 | { |
| 345 | OPT_PROTO_NO_PASSWORD, | |
| 346 | NULL, /* user_splits */ | |
| 347 | NULL, /* protocol_options */ | |
| 15884 | 348 | /* {"png", 0, 0, 96, 96, 0, PURPLE_ICON_SCALE_DISPLAY}, */ /* icon_spec */ |
| 13971 | 349 | NO_BUDDY_ICONS, /* not yet */ /* icon_spec */ |
| 11477 | 350 | bonjour_list_icon, /* list_icon */ |
|
15872
d4506f8656ab
Mark "Away" for translation
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
15524
diff
changeset
|
351 | NULL, /* list_emblem */ |
| 11477 | 352 | bonjour_status_text, /* status_text */ |
| 353 | bonjour_tooltip_text, /* tooltip_text */ | |
| 354 | bonjour_status_types, /* status_types */ | |
| 355 | NULL, /* blist_node_menu */ | |
| 356 | NULL, /* chat_info */ | |
| 357 | NULL, /* chat_info_defaults */ | |
| 358 | bonjour_login, /* login */ | |
| 359 | bonjour_close, /* close */ | |
| 360 | bonjour_send_im, /* send_im */ | |
| 361 | NULL, /* set_info */ | |
| 362 | NULL, /* send_typing */ | |
| 363 | NULL, /* get_info */ | |
| 364 | bonjour_set_status, /* set_status */ | |
| 365 | NULL, /* set_idle */ | |
| 366 | NULL, /* change_passwd */ | |
| 367 | NULL, /* add_buddy */ | |
| 368 | NULL, /* add_buddies */ | |
| 369 | NULL, /* remove_buddy */ | |
| 370 | NULL, /* remove_buddies */ | |
| 371 | NULL, /* add_permit */ | |
| 372 | NULL, /* add_deny */ | |
| 373 | NULL, /* rem_permit */ | |
| 374 | NULL, /* rem_deny */ | |
| 375 | NULL, /* set_permit_deny */ | |
| 376 | NULL, /* join_chat */ | |
| 377 | NULL, /* reject_chat */ | |
| 378 | NULL, /* get_chat_name */ | |
| 379 | NULL, /* chat_invite */ | |
| 380 | NULL, /* chat_leave */ | |
| 381 | NULL, /* chat_whisper */ | |
| 382 | NULL, /* chat_send */ | |
| 383 | NULL, /* keepalive */ | |
| 384 | NULL, /* register_user */ | |
| 385 | NULL, /* get_cb_info */ | |
| 386 | NULL, /* get_cb_away */ | |
| 387 | NULL, /* alias_buddy */ | |
| 388 | NULL, /* group_buddy */ | |
| 389 | NULL, /* rename_group */ | |
| 390 | NULL, /* buddy_free */ | |
| 391 | bonjour_convo_closed, /* convo_closed */ | |
| 392 | NULL, /* normalize */ | |
| 393 | NULL, /* set_buddy_icon */ | |
| 394 | NULL, /* remove_group */ | |
| 395 | NULL, /* get_cb_real_name */ | |
| 396 | NULL, /* set_chat_topic */ | |
| 397 | NULL, /* find_blist_chat */ | |
| 398 | NULL, /* roomlist_get_list */ | |
| 399 | NULL, /* roomlist_cancel */ | |
| 400 | NULL, /* roomlist_expand_category */ | |
| 401 | NULL, /* can_receive_file */ | |
|
12143
09f216663302
[gaim-migrate @ 14444]
Evan Schoenberg <evands@pidgin.im>
parents:
12003
diff
changeset
|
402 | NULL, /* send_file */ |
|
12607
4622f0adedf4
[gaim-migrate @ 14943]
Mark Doliner <markdoliner@pidgin.im>
parents:
12595
diff
changeset
|
403 | NULL, /* new_xfer */ |
|
12650
ca70a14f4994
[gaim-migrate @ 14988]
Mark Doliner <markdoliner@pidgin.im>
parents:
12607
diff
changeset
|
404 | NULL, /* offline_message */ |
|
12607
4622f0adedf4
[gaim-migrate @ 14943]
Mark Doliner <markdoliner@pidgin.im>
parents:
12595
diff
changeset
|
405 | NULL, /* whiteboard_prpl_ops */ |
|
15217
53af6e98dfff
[gaim-migrate @ 17941]
Mark Doliner <markdoliner@pidgin.im>
parents:
14604
diff
changeset
|
406 | NULL, /* send_raw */ |
|
53af6e98dfff
[gaim-migrate @ 17941]
Mark Doliner <markdoliner@pidgin.im>
parents:
14604
diff
changeset
|
407 | NULL, /* roomlist_room_serialize */ |
|
16776
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
408 | |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
409 | /* padding */ |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
410 | NULL, |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
411 | NULL, |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
412 | NULL, |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
413 | NULL |
| 11477 | 414 | }; |
| 415 | ||
| 15884 | 416 | static PurplePluginInfo info = |
| 11477 | 417 | { |
| 15884 | 418 | PURPLE_PLUGIN_MAGIC, |
| 419 | PURPLE_MAJOR_VERSION, | |
| 420 | PURPLE_MINOR_VERSION, | |
| 421 | PURPLE_PLUGIN_PROTOCOL, /**< type */ | |
| 11477 | 422 | NULL, /**< ui_requirement */ |
| 423 | 0, /**< flags */ | |
| 424 | NULL, /**< dependencies */ | |
| 15884 | 425 | PURPLE_PRIORITY_DEFAULT, /**< priority */ |
| 11477 | 426 | |
| 427 | "prpl-bonjour", /**< id */ | |
| 428 | "Bonjour", /**< name */ | |
| 429 | VERSION, /**< version */ | |
| 430 | /** summary */ | |
| 431 | N_("Bonjour Protocol Plugin"), | |
| 432 | /** description */ | |
| 433 | N_("Bonjour Protocol Plugin"), | |
| 434 | NULL, /**< author */ | |
| 15884 | 435 | PURPLE_WEBSITE, /**< homepage */ |
| 11477 | 436 | |
| 437 | NULL, /**< load */ | |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
438 | plugin_unload, /**< unload */ |
| 11477 | 439 | NULL, /**< destroy */ |
| 440 | ||
| 441 | NULL, /**< ui_info */ | |
| 442 | &prpl_info, /**< extra_info */ | |
| 443 | NULL, /**< prefs_info */ | |
|
16776
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
444 | NULL, |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
445 | |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
446 | /* padding */ |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
447 | NULL, |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
448 | NULL, |
|
c9301dd6aa1f
Add padding to silc and bonjour to get rid of a bunch of warnings.
Mark Doliner <markdoliner@pidgin.im>
parents:
15996
diff
changeset
|
449 | NULL, |
| 11477 | 450 | NULL |
| 451 | }; | |
| 452 | ||
| 453 | static void | |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
454 | initialize_default_account_values() |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
455 | { |
|
13192
77a782e38011
[gaim-migrate @ 15554]
Mark Doliner <markdoliner@pidgin.im>
parents:
13076
diff
changeset
|
456 | #ifdef _WIN32 |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
457 | char *fullname = NULL; |
|
13192
77a782e38011
[gaim-migrate @ 15554]
Mark Doliner <markdoliner@pidgin.im>
parents:
13076
diff
changeset
|
458 | #else |
|
77a782e38011
[gaim-migrate @ 15554]
Mark Doliner <markdoliner@pidgin.im>
parents:
13076
diff
changeset
|
459 | struct passwd *info; |
|
77a782e38011
[gaim-migrate @ 15554]
Mark Doliner <markdoliner@pidgin.im>
parents:
13076
diff
changeset
|
460 | const char *fullname = NULL; |
|
77a782e38011
[gaim-migrate @ 15554]
Mark Doliner <markdoliner@pidgin.im>
parents:
13076
diff
changeset
|
461 | #endif |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
462 | char *splitpoint = NULL; |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
463 | char hostname[255]; |
|
13192
77a782e38011
[gaim-migrate @ 15554]
Mark Doliner <markdoliner@pidgin.im>
parents:
13076
diff
changeset
|
464 | |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
465 | #ifndef _WIN32 |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
466 | /* Try to figure out the user's real name */ |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
467 | info = getpwuid(getuid()); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
468 | if ((info != NULL) && (info->pw_gecos != NULL) && (info->pw_gecos[0] != '\0')) |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
469 | fullname = info->pw_gecos; |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
470 | else if ((info != NULL) && (info->pw_name != NULL) && (info->pw_name[0] != '\0')) |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
471 | fullname = info->pw_name; |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
472 | else if (((fullname = getlogin()) != NULL) && (fullname[0] != '\0')) |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
473 | ; |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
474 | else |
| 15996 | 475 | fullname = _("Purple Person"); |
|
13076
84dfc467ddbd
[gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents:
13063
diff
changeset
|
476 | /* Make sure fullname is valid UTF-8. If not, try to convert it. */ |
|
84dfc467ddbd
[gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents:
13063
diff
changeset
|
477 | if (!g_utf8_validate(fullname, -1, NULL)) |
|
84dfc467ddbd
[gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents:
13063
diff
changeset
|
478 | { |
|
84dfc467ddbd
[gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents:
13063
diff
changeset
|
479 | gchar *tmp; |
|
84dfc467ddbd
[gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents:
13063
diff
changeset
|
480 | tmp = g_locale_to_utf8(fullname, -1, NULL, NULL, NULL); |
|
84dfc467ddbd
[gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents:
13063
diff
changeset
|
481 | if ((tmp == NULL) || (*tmp == '\0')) |
|
15498
2ee3112b6f24
This should be the last of the string changes
Sean Egan <seanegan@pidgin.im>
parents:
15444
diff
changeset
|
482 | fullname = _("Purple Person"); |
|
13076
84dfc467ddbd
[gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents:
13063
diff
changeset
|
483 | } |
|
84dfc467ddbd
[gaim-migrate @ 15437]
Mark Doliner <markdoliner@pidgin.im>
parents:
13063
diff
changeset
|
484 | |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
485 | #else |
| 15884 | 486 | FARPROC myNetUserGetInfo = wpurple_find_and_loadproc("Netapi32.dll", |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
487 | "NetUserGetInfo"); |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
488 | |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
489 | if (myNetUserGetInfo) { |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
490 | LPUSER_INFO_10 user_info = NULL; |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
491 | LPSERVER_INFO_100 server_info = NULL; |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
492 | wchar_t *servername = NULL; |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
493 | wchar_t username[UNLEN + 1] = {'\0'}; |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
494 | DWORD dwLenUsername = sizeof(username); |
| 15884 | 495 | FARPROC myNetServerEnum = wpurple_find_and_loadproc( |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
496 | "Netapi32.dll", "NetServerEnum"); |
| 15884 | 497 | FARPROC myNetApiBufferFree = wpurple_find_and_loadproc( |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
498 | "Netapi32.dll", "NetApiBufferFree"); |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
499 | |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
500 | if (myNetServerEnum && myNetApiBufferFree) { |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
501 | DWORD dwEntriesRead = 0; |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
502 | DWORD dwTotalEntries = 0; |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
503 | DWORD dwResumeHandle = 0; |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
504 | |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
505 | NET_API_STATUS nStatus = (myNetServerEnum)(NULL, 100, |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
506 | &server_info, MAX_PREFERRED_LENGTH, |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
507 | &dwEntriesRead, &dwTotalEntries, |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
508 | SV_TYPE_DOMAIN_CTRL, NULL, &dwResumeHandle); |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
509 | |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
510 | if ((nStatus == NERR_Success |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
511 | || nStatus == ERROR_MORE_DATA) |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
512 | && dwEntriesRead > 0) { |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
513 | servername = server_info->sv100_name; |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
514 | } else { |
| 15884 | 515 | purple_debug_warning("bonjour", "Unable to look up domain controller. NET_API_STATUS = %d, Entries Read = %d, Total Entries = %d\n", nStatus, dwEntriesRead, dwTotalEntries); |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
516 | } |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
517 | } |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
518 | |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
519 | if (!GetUserNameW(&username, &dwLenUsername)) { |
| 15884 | 520 | purple_debug_warning("bonjour", |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
521 | "Unable to look up username\n"); |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
522 | } |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
523 | |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
524 | if (username != NULL && *username != '\0' |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
525 | && (myNetUserGetInfo)(servername, username, 10, |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
526 | &user_info) == NERR_Success) { |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
527 | if (user_info != NULL) { |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
528 | fullname = g_utf16_to_utf8( |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
529 | user_info->usri10_full_name, |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
530 | -1, NULL, NULL, NULL); |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
531 | } |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
532 | } |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
533 | if (user_info != NULL) |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
534 | (myNetApiBufferFree)(user_info); |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
535 | if (server_info != NULL) |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
536 | (myNetApiBufferFree)(server_info); |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
537 | } |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
538 | |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
539 | if (!fullname) |
|
15498
2ee3112b6f24
This should be the last of the string changes
Sean Egan <seanegan@pidgin.im>
parents:
15444
diff
changeset
|
540 | fullname = g_strdup(_("Purple Person")); |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
541 | #endif |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
542 | |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
543 | /* Split the real name into a first and last name */ |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
544 | splitpoint = strchr(fullname, ' '); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
545 | if (splitpoint != NULL) |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
546 | { |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
547 | default_firstname = g_strndup(fullname, splitpoint - fullname); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
548 | default_lastname = g_strdup(&splitpoint[1]); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
549 | } |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
550 | else |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
551 | { |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
552 | default_firstname = g_strdup(fullname); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
553 | default_lastname = g_strdup(""); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
554 | } |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
555 | |
|
12003
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
556 | #ifdef _WIN32 |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
557 | g_free(fullname); |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
558 | #endif |
|
6f6cbf74cb27
[gaim-migrate @ 14296]
Daniel Atallah <datallah@pidgin.im>
parents:
11984
diff
changeset
|
559 | |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
560 | /* Try to figure out a good host name to use */ |
|
13972
50b7226d8519
[gaim-migrate @ 16408]
Mark Doliner <markdoliner@pidgin.im>
parents:
13971
diff
changeset
|
561 | /* TODO: Avoid 'localhost,' if possible */ |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
562 | if (gethostname(hostname, 255) != 0) { |
| 15996 | 563 | purple_debug_warning("bonjour", "Error when getting host name: %s. Using \"localhost.\"\n", |
| 564 | strerror(errno)); | |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
565 | strcpy(hostname, "localhost"); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
566 | } |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
567 | default_hostname = g_strdup(hostname); |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
568 | } |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
569 | |
|
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
570 | static void |
| 15884 | 571 | init_plugin(PurplePlugin *plugin) |
| 11477 | 572 | { |
| 15884 | 573 | PurpleAccountUserSplit *split; |
| 574 | PurpleAccountOption *option; | |
| 11477 | 575 | |
|
11984
0ac04d1651b6
[gaim-migrate @ 14277]
Mark Doliner <markdoliner@pidgin.im>
parents:
11966
diff
changeset
|
576 | initialize_default_account_values(); |
| 11477 | 577 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
578 | /* Creating the user splits */ |
| 15884 | 579 | split = purple_account_user_split_new(_("Hostname"), default_hostname, '@'); |
| 11477 | 580 | prpl_info.user_splits = g_list_append(prpl_info.user_splits, split); |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
581 | |
|
11829
8d89f3c00831
[gaim-migrate @ 14120]
Richard Laager <rlaager@pidgin.im>
parents:
11718
diff
changeset
|
582 | /* Creating the options for the protocol */ |
| 15884 | 583 | option = purple_account_option_string_new(_("First name"), "first", default_firstname); |
| 11477 | 584 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
| 585 | ||
| 15884 | 586 | option = purple_account_option_string_new(_("Last name"), "last", default_lastname); |
| 11477 | 587 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
| 588 | ||
| 15884 | 589 | option = purple_account_option_string_new(_("E-mail"), "email", ""); |
| 11477 | 590 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
|
11539
fbabe3f89777
[gaim-migrate @ 13794]
Mark Doliner <markdoliner@pidgin.im>
parents:
11519
diff
changeset
|
591 | |
| 15884 | 592 | option = purple_account_option_string_new(_("AIM Account"), "AIM", ""); |
| 13968 | 593 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
| 594 | ||
| 15884 | 595 | option = purple_account_option_string_new(_("Jabber Account"), "jid", ""); |
| 13968 | 596 | prpl_info.protocol_options = g_list_append(prpl_info.protocol_options, option); |
| 597 | ||
| 11477 | 598 | my_protocol = plugin; |
| 599 | } | |
| 600 | ||
| 15884 | 601 | PURPLE_INIT_PLUGIN(bonjour, init_plugin, info); |