src/protocols/novell/nmuserrecord.c

changeset 14253
b63ebf84c42b
parent 14252
d10dda2777a9
child 14254
77edc7a6191a
--- a/src/protocols/novell/nmuserrecord.c	Sat Aug 19 00:24:14 2006 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,561 +0,0 @@
-/*
- * nmuserrecord.c
- *
- * Copyright (c) 2004 Novell, Inc. All Rights Reserved.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA	02111-1307	USA
- *
- */
-
-#include <glib.h>
-#include <string.h>
-#include "nmuserrecord.h"
-#include "nmfield.h"
-#include "nmuser.h"
-
-struct _NMUserRecord
-{
-	NMSTATUS_T status;
-	char *status_text;
-	char *dn;
-	char *cn;
-	char *display_id;
-	char *fname;
-	char *lname;
-	char *full_name;
-	NMField *fields;
-	gboolean auth_attr;
-	gpointer data;
-	int ref_count;
-};
-
-struct _NMProperty
-{
-	char *tag;
-	char *value;
-};
-
-static int count = 0;
-
-/* API functions */
-
-NMUserRecord *
-nm_create_user_record()
-{
-	NMUserRecord *user_record = g_new0(NMUserRecord, 1);
-
-	user_record->ref_count = 1;
-
-	gaim_debug(GAIM_DEBUG_INFO, "novell", "Creating user_record, total=%d\n",
-			   count++);
-
-	return user_record;
-}
-
-static char *
-_get_attribute_value(NMField *field)
-{
-	char *value = NULL;
-
-	if (field->ptr_value == NULL)
-		return NULL;
-
-	if (field->type == NMFIELD_TYPE_UTF8 || field->type == NMFIELD_TYPE_DN) {
-
-		value = (char *)field->ptr_value;
-
-	} else if (field->type == NMFIELD_TYPE_MV) {
-
-		/* Need to handle multi-valued returns, for now
-		 * just pick the first value and return it
-		 */
-		NMField *tmp = (NMField *)field->ptr_value;
-		if ((tmp != NULL) &&
-			((tmp->type == NMFIELD_TYPE_UTF8) ||
-			(tmp->type == NMFIELD_TYPE_DN))) {
-
-			value = (char *)tmp->ptr_value;
-
-		} else {
-			return NULL;
-		}
-
-	} else {
-		return NULL;
-	}
-
-	return g_strdup(value);
-}
-/*
- * This creates a user_record for the reference list the
- * field array that is passed in should be a
- * NM_A_FA_USER_DETAILS array.
- */
-NMUserRecord *
-nm_create_user_record_from_fields(NMField * details)
-{
-	NMUserRecord *user_record;
-	NMField *field, *fields = details;
-
-	if (details == NULL) {
-		return NULL;
-	}
-
-	if (details->type == NMFIELD_TYPE_ARRAY) {
-		if (details->ptr_value == NULL)
-			return NULL;
-		fields = (NMField *) details->ptr_value;
-	}
-
-	user_record = nm_create_user_record();
-
-	if ((field = nm_locate_field(NM_A_SZ_AUTH_ATTRIBUTE, fields))) {
-
-		if (field->ptr_value) {
-			user_record->display_id = _get_attribute_value(field);
-			user_record->auth_attr = TRUE;
-		}
-	}
-
-	if ((field = nm_locate_field(NM_A_SZ_DN, fields))) {
-
-		if (field->ptr_value) {
-			user_record->dn = _get_attribute_value(field);
-		}
-	}
-
-	if ((field = nm_locate_field("CN", fields))) {
-
-		if (field->ptr_value) {
-			user_record->cn = _get_attribute_value(field);
-		}
-	}
-
-	if ((field = nm_locate_field("Given Name", fields))) {
-
-		if (field->ptr_value) {
-			user_record->fname = _get_attribute_value(field);
-		}
-	}
-
-	if ((field = nm_locate_field("Surname", fields))) {
-
-		if (field->ptr_value) {
-			user_record->lname = _get_attribute_value(field);
-		}
-	}
-
-	if ((field = nm_locate_field("Full Name", fields))) {
-
-		if (field->ptr_value) {
-			user_record->full_name = _get_attribute_value(field);
-		}
-	}
-
-	if ((field = nm_locate_field(NM_A_SZ_STATUS, fields))) {
-
-		if (field->ptr_value)
-			user_record->status = atoi((char *) field->ptr_value);
-
-	}
-
-	if ((field = nm_locate_field(NM_A_SZ_MESSAGE_BODY, fields))) {
-
-		if (field->ptr_value)
-			user_record->status_text = g_strdup((char *) field->ptr_value);
-
-	}
-
-	user_record->fields = nm_copy_field_array(fields);
-
-	return user_record;
-}
-
-void
-nm_user_record_copy(NMUserRecord * dest, NMUserRecord * src)
-{
-	if (dest == NULL || src == NULL)
-		return;
-
-	dest->status = src->status;
-
-	/* Copy status text */
-	if (dest->status_text) {
-		g_free(dest->status_text);
-		dest->status_text = NULL;
-	}
-
-	if (src->status_text)
-		dest->status_text = g_strdup(src->status_text);
-
-	/* Copy DN */
-	if (dest->dn) {
-		g_free(dest->dn);
-		dest->dn = NULL;
-	}
-
-	if (src->dn)
-		dest->dn = g_strdup(src->dn);
-
-	/* Copy CN */
-	if (dest->cn) {
-		g_free(dest->cn);
-		dest->cn = NULL;
-	}
-
-	if (src->cn)
-		dest->cn = g_strdup(src->cn);
-
-	/* Copy display id */
-	if (dest->display_id) {
-		g_free(dest->display_id);
-		dest->display_id = NULL;
-	}
-
-	if (src->display_id)
-		dest->display_id = g_strdup(src->display_id);
-
-	/* Copy first name */
-	if (dest->fname) {
-		g_free(dest->fname);
-		dest->fname = NULL;
-	}
-
-	if (src->fname)
-		dest->fname = g_strdup(src->fname);
-
-	/* Copy last name */
-	if (dest->lname) {
-		g_free(dest->lname);
-		dest->lname = NULL;
-	}
-
-	if (src->lname)
-		dest->lname = g_strdup(src->lname);
-
-	/* Copy full name */
-	if (dest->full_name) {
-		g_free(dest->full_name);
-		dest->full_name = NULL;
-	}
-
-	if (src->full_name)
-		dest->full_name = g_strdup(src->full_name);
-
-	/* Copy fields */
-	if (src->fields) {
-
-		if (dest->fields) {
-			nm_free_fields(&dest->fields);
-		}
-
-		dest->fields = nm_copy_field_array(src->fields);
-	}
-
-	/* Copy data */
-	dest->data = src->data;
-}
-
-void
-nm_user_record_add_ref(NMUserRecord * user_record)
-{
-	if (user_record)
-		user_record->ref_count++;
-}
-
-void
-nm_release_user_record(NMUserRecord * user_record)
-{
-	if (--(user_record->ref_count) == 0) {
-
-		gaim_debug(GAIM_DEBUG_INFO, "novell",
-				   "Releasing user_record, total=%d\n", --count);
-
-		if (user_record->dn) {
-			g_free(user_record->dn);
-		}
-
-		if (user_record->cn) {
-			g_free(user_record->cn);
-		}
-
-		if (user_record->display_id) {
-			g_free(user_record->display_id);
-		}
-
-		if (user_record->fname) {
-			g_free(user_record->fname);
-		}
-
-		if (user_record->lname) {
-			g_free(user_record->lname);
-		}
-
-		if (user_record->full_name) {
-			g_free(user_record->full_name);
-		}
-
-		if (user_record->status_text) {
-			g_free(user_record->status_text);
-		}
-
-		nm_free_fields(&user_record->fields);
-
-		g_free(user_record);
-	}
-}
-
-/* UserRecord API */
-
-NMSTATUS_T
-nm_user_record_get_status(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return (NMSTATUS_T) - 1;
-
-	return user_record->status;
-
-}
-
-const char *
-nm_user_record_get_status_text(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return NULL;
-
-	return user_record->status_text;
-}
-
-void
-nm_user_record_set_dn(NMUserRecord * user_record, const char *dn)
-{
-	if (user_record != NULL && dn != NULL) {
-		if (user_record->dn)
-			g_free(user_record->dn);
-
-		user_record->dn = g_strdup(dn);
-	}
-}
-
-const char *
-nm_user_record_get_dn(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return NULL;
-
-	return user_record->dn;
-}
-
-void
-nm_user_record_set_userid(NMUserRecord * user_record, const char *userid)
-{
-	if (user_record != NULL && userid != NULL) {
-		if (user_record->cn)
-			g_free(user_record->cn);
-
-		user_record->cn = g_strdup(userid);
-	}
-}
-
-const char *
-nm_user_record_get_userid(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return NULL;
-
-	return user_record->cn;
-}
-
-void
-nm_user_record_set_display_id(NMUserRecord * user_record, const char *display_id)
-{
-	if (user_record != NULL && display_id != NULL) {
-		if (user_record->display_id)
-			g_free(user_record->display_id);
-
-		user_record->display_id = g_strdup(display_id);
-	}
-}
-
-const char *
-nm_user_record_get_display_id(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return NULL;
-
-	if (user_record->display_id == NULL) {
-		user_record->display_id = nm_typed_to_dotted(user_record->dn);
-	}
-
-	return user_record->display_id;
-}
-
-const char *
-nm_user_record_get_full_name(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return NULL;
-
-	if (user_record->full_name == NULL) {
-		if (user_record->fname && user_record->lname) {
-			user_record->full_name = g_strdup_printf("%s %s",
-													 user_record->fname,
-													 user_record->lname);
-
-		}
-	}
-
-	return user_record->full_name;
-}
-
-const char *
-nm_user_record_get_first_name(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return NULL;
-
-	return user_record->fname;
-
-}
-
-const char *
-nm_user_record_get_last_name(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return NULL;
-
-	return user_record->lname;
-}
-
-gpointer
-nm_user_record_get_data(NMUserRecord * user_record)
-{
-	if (user_record == NULL)
-		return NULL;
-
-	return user_record->data;
-}
-
-void
-nm_user_record_set_data(NMUserRecord * user_record, gpointer data)
-{
-	if (user_record == NULL)
-		return;
-
-	user_record->data = data;
-}
-
-void
-nm_user_record_set_status(NMUserRecord * user_record,
-						  int status, const char *text)
-{
-	if (user_record == NULL)
-		return;
-
-	user_record->status = status;
-
-	if (user_record->status_text) {
-		g_free(user_record->status_text);
-		user_record->status_text = NULL;
-	}
-
-	if (text)
-		user_record->status_text = g_strdup(text);
-}
-
-gboolean
-nm_user_record_get_auth_attr(NMUserRecord *user_record)
-{
-	if (user_record == NULL)
-		return FALSE;
-
-	return user_record->auth_attr;
-}
-
-int
-nm_user_record_get_property_count(NMUserRecord * user_record)
-{
-	NMField *locate, *fields;
-
-	int count = 0;
-
-	if (user_record && user_record->fields) {
-		locate = nm_locate_field(NM_A_FA_INFO_DISPLAY_ARRAY,
-								 (NMField *) user_record->fields);
-		if (locate && (fields = (NMField *) (locate->ptr_value))) {
-			count = (int) nm_count_fields(fields);
-		}
-	}
-	return count;
-}
-
-NMProperty *
-nm_user_record_get_property(NMUserRecord * user_record, int index)
-{
-	NMProperty *property = NULL;
-	NMField *field = NULL, *fields, *locate;
-
-	if (user_record && user_record->fields) {
-		locate = nm_locate_field(NM_A_FA_INFO_DISPLAY_ARRAY,
-								 (NMField *) user_record->fields);
-		if (locate && (fields = (NMField *) (locate->ptr_value))) {
-			int max = nm_count_fields(fields);
-
-			if (index < max) {
-				if (user_record) {
-					field = &fields[index];
-					if (field && field->tag && field->ptr_value) {
-						property = g_new0(NMProperty, 1);
-						property->tag = g_strdup(field->tag);
-						property->value = _get_attribute_value(field);
-					}
-				}
-			}
-		}
-	}
-
-	return property;
-}
-
-void
-nm_release_property(NMProperty * property)
-{
-	if (property) {
-		if (property->tag)
-			g_free(property->tag);
-
-		if (property->value)
-			g_free(property->value);
-
-		g_free(property);
-	}
-}
-
-const char *
-nm_property_get_tag(NMProperty * property)
-{
-	if (property)
-		return property->tag;
-	else
-		return NULL;
-}
-
-const char *
-nm_property_get_value(NMProperty * property)
-{
-	if (property)
-		return property->value;
-	else
-		return NULL;
-}

mercurial