Wed, 25 May 2022 23:52:45 -0500
Remove prpl-gtalk from XMPP console
It no longer exists, and complicates the code a bit.
| 8675 | 1 | /* |
| 2 | * nmuserrecord.c | |
| 3 | * | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
4 | * Copyright (c) 2004 Novell, Inc. All Rights Reserved. |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
5 | * |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
6 | * This program is free software; you can redistribute it and/or modify |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
7 | * it under the terms of the GNU General Public License as published by |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
8 | * the Free Software Foundation; version 2 of the License. |
| 8675 | 9 | * |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
10 | * This program is distributed in the hope that it will be useful, |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
13 | * GNU General Public License for more details. |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
14 | * |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
15 | * You should have received a copy of the GNU General Public License |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
16 | * along with this program; if not, write to the Free Software |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
15884
diff
changeset
|
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 8675 | 18 | * |
| 19 | */ | |
| 20 | ||
| 21 | #include <glib.h> | |
| 22 | #include <string.h> | |
| 23 | #include "nmuserrecord.h" | |
| 24 | #include "nmfield.h" | |
| 25 | #include "nmuser.h" | |
| 26 | ||
| 27 | struct _NMUserRecord | |
| 28 | { | |
| 29 | NMSTATUS_T status; | |
| 30 | char *status_text; | |
| 31 | char *dn; | |
| 32 | char *cn; | |
| 33 | char *display_id; | |
| 34 | char *fname; | |
| 35 | char *lname; | |
| 36 | char *full_name; | |
| 37 | NMField *fields; | |
| 38 | gboolean auth_attr; | |
| 39 | gpointer data; | |
| 40 | int ref_count; | |
| 41 | }; | |
| 42 | ||
| 43 | static int count = 0; | |
| 44 | ||
| 45 | /* API functions */ | |
| 46 | ||
| 47 | NMUserRecord * | |
| 48 | nm_create_user_record() | |
| 49 | { | |
| 50 | NMUserRecord *user_record = g_new0(NMUserRecord, 1); | |
| 51 | ||
| 52 | user_record->ref_count = 1; | |
| 53 | ||
|
40765
a5381c20e802
Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents:
39913
diff
changeset
|
54 | purple_debug_info("novell", "Creating user_record, total=%d", count++); |
| 8675 | 55 | |
| 56 | return user_record; | |
| 57 | } | |
| 58 | ||
| 59 | static char * | |
| 60 | _get_attribute_value(NMField *field) | |
| 61 | { | |
| 62 | char *value = NULL; | |
| 63 | ||
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
64 | if (field->ptr_value == NULL) |
| 8675 | 65 | return NULL; |
| 66 | ||
| 67 | if (field->type == NMFIELD_TYPE_UTF8 || field->type == NMFIELD_TYPE_DN) { | |
| 68 | ||
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
69 | value = (char *)field->ptr_value; |
| 8675 | 70 | |
| 71 | } else if (field->type == NMFIELD_TYPE_MV) { | |
| 72 | ||
| 73 | /* Need to handle multi-valued returns, for now | |
| 74 | * just pick the first value and return it | |
| 75 | */ | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
76 | NMField *tmp = (NMField *)field->ptr_value; |
|
39913
ce96d4639dc7
Remove redundant conditions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents:
37425
diff
changeset
|
77 | if (tmp->type == NMFIELD_TYPE_UTF8 || tmp->type == NMFIELD_TYPE_DN) { |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
78 | value = (char *)tmp->ptr_value; |
| 8675 | 79 | } else { |
| 80 | return NULL; | |
| 81 | } | |
| 82 | ||
| 83 | } else { | |
| 84 | return NULL; | |
| 85 | } | |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
86 | |
| 8675 | 87 | return g_strdup(value); |
| 88 | } | |
| 89 | /* | |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
90 | * This creates a user_record for the reference list the |
|
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
91 | * field array that is passed in should be a |
| 8675 | 92 | * NM_A_FA_USER_DETAILS array. |
| 93 | */ | |
| 94 | NMUserRecord * | |
| 95 | nm_create_user_record_from_fields(NMField * details) | |
| 96 | { | |
| 97 | NMUserRecord *user_record; | |
| 98 | NMField *field, *fields = details; | |
| 99 | ||
| 100 | if (details == NULL) { | |
| 101 | return NULL; | |
| 102 | } | |
| 103 | ||
| 104 | if (details->type == NMFIELD_TYPE_ARRAY) { | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
105 | if (details->ptr_value == NULL) |
| 8675 | 106 | return NULL; |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
107 | fields = (NMField *) details->ptr_value; |
| 8675 | 108 | } |
| 109 | ||
| 110 | user_record = nm_create_user_record(); | |
| 111 | ||
| 112 | if ((field = nm_locate_field(NM_A_SZ_AUTH_ATTRIBUTE, fields))) { | |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
113 | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
114 | if (field->ptr_value) { |
| 8675 | 115 | user_record->display_id = _get_attribute_value(field); |
| 116 | user_record->auth_attr = TRUE; | |
| 117 | } | |
| 118 | } | |
| 119 | ||
| 120 | if ((field = nm_locate_field(NM_A_SZ_DN, fields))) { | |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
121 | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
122 | if (field->ptr_value) { |
| 8675 | 123 | user_record->dn = _get_attribute_value(field); |
| 124 | } | |
| 125 | } | |
| 126 | ||
| 127 | if ((field = nm_locate_field("CN", fields))) { | |
| 128 | ||
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
129 | if (field->ptr_value) { |
| 8675 | 130 | user_record->cn = _get_attribute_value(field); |
| 131 | } | |
| 132 | } | |
| 133 | ||
| 134 | if ((field = nm_locate_field("Given Name", fields))) { | |
| 135 | ||
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
136 | if (field->ptr_value) { |
| 8675 | 137 | user_record->fname = _get_attribute_value(field); |
| 138 | } | |
| 139 | } | |
| 140 | ||
| 141 | if ((field = nm_locate_field("Surname", fields))) { | |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
142 | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
143 | if (field->ptr_value) { |
| 8675 | 144 | user_record->lname = _get_attribute_value(field); |
| 145 | } | |
| 146 | } | |
| 147 | ||
| 148 | if ((field = nm_locate_field("Full Name", fields))) { | |
| 149 | ||
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
150 | if (field->ptr_value) { |
| 8675 | 151 | user_record->full_name = _get_attribute_value(field); |
| 152 | } | |
| 153 | } | |
| 154 | ||
| 155 | if ((field = nm_locate_field(NM_A_SZ_STATUS, fields))) { | |
| 156 | ||
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
157 | if (field->ptr_value) |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
158 | user_record->status = atoi((char *) field->ptr_value); |
| 8675 | 159 | |
| 160 | } | |
| 161 | ||
| 162 | if ((field = nm_locate_field(NM_A_SZ_MESSAGE_BODY, fields))) { | |
| 163 | ||
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
164 | if (field->ptr_value) |
|
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
165 | user_record->status_text = g_strdup((char *) field->ptr_value); |
| 8675 | 166 | |
| 167 | } | |
| 168 | ||
| 169 | user_record->fields = nm_copy_field_array(fields); | |
| 170 | ||
| 171 | return user_record; | |
| 172 | } | |
| 173 | ||
| 174 | void | |
| 175 | nm_user_record_copy(NMUserRecord * dest, NMUserRecord * src) | |
| 176 | { | |
| 177 | if (dest == NULL || src == NULL) | |
| 178 | return; | |
| 179 | ||
| 180 | dest->status = src->status; | |
| 181 | ||
| 182 | /* Copy status text */ | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
183 | g_free(dest->status_text); |
|
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
184 | dest->status_text = NULL; |
| 8675 | 185 | |
| 186 | if (src->status_text) | |
| 187 | dest->status_text = g_strdup(src->status_text); | |
| 188 | ||
| 189 | /* Copy DN */ | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
190 | g_free(dest->dn); |
|
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
191 | dest->dn = NULL; |
| 8675 | 192 | |
| 193 | if (src->dn) | |
| 194 | dest->dn = g_strdup(src->dn); | |
| 195 | ||
| 196 | /* Copy CN */ | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
197 | g_free(dest->cn); |
|
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
198 | dest->cn = NULL; |
| 8675 | 199 | |
| 200 | if (src->cn) | |
| 201 | dest->cn = g_strdup(src->cn); | |
| 202 | ||
| 203 | /* Copy display id */ | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
204 | g_free(dest->display_id); |
|
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
205 | dest->display_id = NULL; |
| 8675 | 206 | |
| 207 | if (src->display_id) | |
| 208 | dest->display_id = g_strdup(src->display_id); | |
| 209 | ||
| 210 | /* Copy first name */ | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
211 | g_free(dest->fname); |
|
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
212 | dest->fname = NULL; |
| 8675 | 213 | |
| 214 | if (src->fname) | |
| 215 | dest->fname = g_strdup(src->fname); | |
| 216 | ||
| 217 | /* Copy last name */ | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
218 | g_free(dest->lname); |
|
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
219 | dest->lname = NULL; |
| 8675 | 220 | |
| 221 | if (src->lname) | |
| 222 | dest->lname = g_strdup(src->lname); | |
| 223 | ||
| 224 | /* Copy full name */ | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
225 | g_free(dest->full_name); |
|
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
226 | dest->full_name = NULL; |
| 8675 | 227 | |
| 228 | if (src->full_name) | |
| 229 | dest->full_name = g_strdup(src->full_name); | |
| 230 | ||
| 231 | /* Copy fields */ | |
| 232 | if (src->fields) { | |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
233 | |
| 8675 | 234 | if (dest->fields) { |
| 235 | nm_free_fields(&dest->fields); | |
| 236 | } | |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
237 | |
| 8675 | 238 | dest->fields = nm_copy_field_array(src->fields); |
| 239 | } | |
| 240 | ||
| 241 | /* Copy data */ | |
| 242 | dest->data = src->data; | |
| 243 | } | |
| 244 | ||
| 245 | void | |
| 246 | nm_user_record_add_ref(NMUserRecord * user_record) | |
| 247 | { | |
| 248 | if (user_record) | |
| 249 | user_record->ref_count++; | |
| 250 | } | |
| 251 | ||
| 252 | void | |
| 253 | nm_release_user_record(NMUserRecord * user_record) | |
| 254 | { | |
| 255 | if (--(user_record->ref_count) == 0) { | |
|
40765
a5381c20e802
Use specific purple_debug_* functions
Arkadiy Illarionov <qarkai@gmail.com>
parents:
39913
diff
changeset
|
256 | purple_debug_info("novell", "Releasing user_record, total=%d", --count); |
| 8675 | 257 | |
|
37389
7240fd8e3462
free() and g_free() are specified to be NULL-safe. Remove NULL checks.
Michael McConville <mmcconville@mykolab.com>
parents:
19859
diff
changeset
|
258 | g_free(user_record->dn); |
|
7240fd8e3462
free() and g_free() are specified to be NULL-safe. Remove NULL checks.
Michael McConville <mmcconville@mykolab.com>
parents:
19859
diff
changeset
|
259 | g_free(user_record->cn); |
|
7240fd8e3462
free() and g_free() are specified to be NULL-safe. Remove NULL checks.
Michael McConville <mmcconville@mykolab.com>
parents:
19859
diff
changeset
|
260 | g_free(user_record->display_id); |
|
7240fd8e3462
free() and g_free() are specified to be NULL-safe. Remove NULL checks.
Michael McConville <mmcconville@mykolab.com>
parents:
19859
diff
changeset
|
261 | g_free(user_record->fname); |
|
7240fd8e3462
free() and g_free() are specified to be NULL-safe. Remove NULL checks.
Michael McConville <mmcconville@mykolab.com>
parents:
19859
diff
changeset
|
262 | g_free(user_record->lname); |
|
7240fd8e3462
free() and g_free() are specified to be NULL-safe. Remove NULL checks.
Michael McConville <mmcconville@mykolab.com>
parents:
19859
diff
changeset
|
263 | g_free(user_record->full_name); |
|
7240fd8e3462
free() and g_free() are specified to be NULL-safe. Remove NULL checks.
Michael McConville <mmcconville@mykolab.com>
parents:
19859
diff
changeset
|
264 | g_free(user_record->status_text); |
| 8675 | 265 | |
| 266 | nm_free_fields(&user_record->fields); | |
| 267 | ||
| 268 | g_free(user_record); | |
| 269 | } | |
| 270 | } | |
| 271 | ||
| 272 | /* UserRecord API */ | |
| 273 | ||
| 274 | NMSTATUS_T | |
| 275 | nm_user_record_get_status(NMUserRecord * user_record) | |
| 276 | { | |
| 277 | if (user_record == NULL) | |
| 278 | return (NMSTATUS_T) - 1; | |
| 279 | ||
| 280 | return user_record->status; | |
| 281 | ||
| 282 | } | |
| 283 | ||
| 284 | const char * | |
| 285 | nm_user_record_get_status_text(NMUserRecord * user_record) | |
| 286 | { | |
| 287 | if (user_record == NULL) | |
| 288 | return NULL; | |
| 289 | ||
| 290 | return user_record->status_text; | |
| 291 | } | |
| 292 | ||
| 293 | void | |
| 294 | nm_user_record_set_dn(NMUserRecord * user_record, const char *dn) | |
| 295 | { | |
| 296 | if (user_record != NULL && dn != NULL) { | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
297 | g_free(user_record->dn); |
| 8675 | 298 | |
| 299 | user_record->dn = g_strdup(dn); | |
| 300 | } | |
| 301 | } | |
| 302 | ||
| 303 | const char * | |
| 304 | nm_user_record_get_dn(NMUserRecord * user_record) | |
| 305 | { | |
| 306 | if (user_record == NULL) | |
| 307 | return NULL; | |
| 308 | ||
| 309 | return user_record->dn; | |
| 310 | } | |
| 311 | ||
| 312 | void | |
| 313 | nm_user_record_set_userid(NMUserRecord * user_record, const char *userid) | |
| 314 | { | |
| 315 | if (user_record != NULL && userid != NULL) { | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
316 | g_free(user_record->cn); |
| 8675 | 317 | |
| 318 | user_record->cn = g_strdup(userid); | |
| 319 | } | |
| 320 | } | |
| 321 | ||
| 322 | const char * | |
| 323 | nm_user_record_get_userid(NMUserRecord * user_record) | |
| 324 | { | |
| 325 | if (user_record == NULL) | |
| 326 | return NULL; | |
| 327 | ||
| 328 | return user_record->cn; | |
| 329 | } | |
| 330 | ||
| 331 | void | |
| 332 | nm_user_record_set_display_id(NMUserRecord * user_record, const char *display_id) | |
| 333 | { | |
| 334 | if (user_record != NULL && display_id != NULL) { | |
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
335 | g_free(user_record->display_id); |
| 8675 | 336 | |
| 337 | user_record->display_id = g_strdup(display_id); | |
| 338 | } | |
| 339 | } | |
| 340 | ||
| 341 | const char * | |
| 342 | nm_user_record_get_display_id(NMUserRecord * user_record) | |
| 343 | { | |
| 344 | if (user_record == NULL) | |
| 345 | return NULL; | |
| 346 | ||
| 347 | if (user_record->display_id == NULL) { | |
| 348 | user_record->display_id = nm_typed_to_dotted(user_record->dn); | |
| 349 | } | |
| 350 | ||
| 351 | return user_record->display_id; | |
| 352 | } | |
| 353 | ||
| 354 | const char * | |
| 355 | nm_user_record_get_full_name(NMUserRecord * user_record) | |
| 356 | { | |
| 357 | if (user_record == NULL) | |
| 358 | return NULL; | |
| 359 | ||
| 360 | if (user_record->full_name == NULL) { | |
| 361 | if (user_record->fname && user_record->lname) { | |
| 362 | user_record->full_name = g_strdup_printf("%s %s", | |
| 363 | user_record->fname, | |
| 364 | user_record->lname); | |
| 365 | ||
| 366 | } | |
| 367 | } | |
| 368 | ||
| 369 | return user_record->full_name; | |
| 370 | } | |
| 371 | ||
| 372 | const char * | |
| 373 | nm_user_record_get_first_name(NMUserRecord * user_record) | |
| 374 | { | |
| 375 | if (user_record == NULL) | |
| 376 | return NULL; | |
| 377 | ||
| 378 | return user_record->fname; | |
| 379 | ||
| 380 | } | |
| 381 | ||
| 382 | const char * | |
| 383 | nm_user_record_get_last_name(NMUserRecord * user_record) | |
| 384 | { | |
| 385 | if (user_record == NULL) | |
| 386 | return NULL; | |
| 387 | ||
| 388 | return user_record->lname; | |
| 389 | } | |
| 390 | ||
| 391 | gpointer | |
| 392 | nm_user_record_get_data(NMUserRecord * user_record) | |
| 393 | { | |
| 394 | if (user_record == NULL) | |
| 395 | return NULL; | |
| 396 | ||
| 397 | return user_record->data; | |
| 398 | } | |
| 399 | ||
| 400 | void | |
| 401 | nm_user_record_set_data(NMUserRecord * user_record, gpointer data) | |
| 402 | { | |
| 403 | if (user_record == NULL) | |
| 404 | return; | |
| 405 | ||
| 406 | user_record->data = data; | |
| 407 | } | |
| 408 | ||
| 409 | void | |
| 410 | nm_user_record_set_status(NMUserRecord * user_record, | |
| 411 | int status, const char *text) | |
| 412 | { | |
| 413 | if (user_record == NULL) | |
| 414 | return; | |
| 415 | ||
| 416 | user_record->status = status; | |
| 417 | ||
|
37425
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
418 | g_free(user_record->status_text); |
|
5061721fd98f
Remove more NULL-checks before free()
Michael McConville <mmcco@mykolab.com>
parents:
37389
diff
changeset
|
419 | user_record->status_text = NULL; |
|
8684
7ec649752daa
[gaim-migrate @ 9437]
Christian Hammond <chipx86@chipx86.com>
parents:
8675
diff
changeset
|
420 | |
| 8675 | 421 | if (text) |
| 422 | user_record->status_text = g_strdup(text); | |
| 423 | } | |
| 424 | ||
| 425 | gboolean | |
| 426 | nm_user_record_get_auth_attr(NMUserRecord *user_record) | |
| 427 | { | |
| 428 | if (user_record == NULL) | |
| 429 | return FALSE; | |
| 430 | ||
| 431 | return user_record->auth_attr; | |
| 432 | } | |
| 433 | ||
| 434 | int | |
| 435 | nm_user_record_get_property_count(NMUserRecord * user_record) | |
| 436 | { | |
| 437 | NMField *locate, *fields; | |
| 438 | ||
| 439 | int count = 0; | |
| 440 | ||
| 441 | if (user_record && user_record->fields) { | |
| 442 | locate = nm_locate_field(NM_A_FA_INFO_DISPLAY_ARRAY, | |
| 443 | (NMField *) user_record->fields); | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
444 | if (locate && (fields = (NMField *) (locate->ptr_value))) { |
| 8675 | 445 | count = (int) nm_count_fields(fields); |
| 446 | } | |
| 447 | } | |
| 448 | return count; | |
| 449 | } | |
| 450 | ||
|
40780
3c037af432c4
Replace NMProperty with PurpleKeyValuePair
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40765
diff
changeset
|
451 | PurpleKeyValuePair * |
| 8675 | 452 | nm_user_record_get_property(NMUserRecord * user_record, int index) |
| 453 | { | |
|
40780
3c037af432c4
Replace NMProperty with PurpleKeyValuePair
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40765
diff
changeset
|
454 | PurpleKeyValuePair *property = NULL; |
| 8675 | 455 | NMField *field = NULL, *fields, *locate; |
| 456 | ||
| 457 | if (user_record && user_record->fields) { | |
| 458 | locate = nm_locate_field(NM_A_FA_INFO_DISPLAY_ARRAY, | |
| 459 | (NMField *) user_record->fields); | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
460 | if (locate && (fields = (NMField *) (locate->ptr_value))) { |
| 8675 | 461 | int max = nm_count_fields(fields); |
| 462 | ||
| 463 | if (index < max) { | |
| 464 | field = &fields[index]; | |
|
8933
0f1e8160581d
[gaim-migrate @ 9703]
Mike Stoddard <mistoddard@novell.com>
parents:
8684
diff
changeset
|
465 | if (field && field->tag && field->ptr_value) { |
|
40780
3c037af432c4
Replace NMProperty with PurpleKeyValuePair
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40765
diff
changeset
|
466 | property = purple_key_value_pair_new_full( |
|
3c037af432c4
Replace NMProperty with PurpleKeyValuePair
Arkadiy Illarionov <qarkai@gmail.com>
parents:
40765
diff
changeset
|
467 | field->tag, _get_attribute_value(field), g_free); |
| 8675 | 468 | } |
| 469 | } | |
| 470 | } | |
| 471 | } | |
| 472 | ||
| 473 | return property; | |
| 474 | } |