OpenSolaris_b135/lib/libnwam/common/libnwam_error.c

/*
 * CDDL HEADER START
 *
 * The contents of this file are subject to the terms of the
 * Common Development and Distribution License (the "License").
 * You may not use this file except in compliance with the License.
 *
 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
 * or http://www.opensolaris.org/os/licensing.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information: Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
 */

/*
 * Copyright 2010 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

#include <libnwam.h>
#include <libintl.h>

static struct nwam_error_info {
	nwam_error_t error_code;
	const char *error_desc;
} nwam_errors[] = {
	{NWAM_SUCCESS,			"no error"},
	{NWAM_LIST_END,			"end of list reached"},
	{NWAM_INVALID_HANDLE,		"entity handle is invalid"},
	{NWAM_HANDLE_UNBOUND,		"handle not bound to entity"},
	{NWAM_INVALID_ARG,		"argument is invalid"},
	{NWAM_PERMISSION_DENIED,	"Insufficient permissions for action"},
	{NWAM_NO_MEMORY,		"out of memory"},
	{NWAM_ENTITY_EXISTS,		"entity exists"},
	{NWAM_ENTITY_IN_USE,		"entity in use"},
	{NWAM_ENTITY_COMMITTED,		"entity already committed"},
	{NWAM_ENTITY_NOT_FOUND,		"entity not found"},
	{NWAM_ENTITY_TYPE_MISMATCH,	"entity type mismatch"},
	{NWAM_ENTITY_INVALID,		"validation of entity failed"},
	{NWAM_ENTITY_INVALID_MEMBER,	"entity has invalid member"},
	{NWAM_ENTITY_INVALID_STATE,	"entity is in incorrect state"},
	{NWAM_ENTITY_INVALID_VALUE,	"validation of entity value failed"},
	{NWAM_ENTITY_MISSING_MEMBER,	"entity is missing required member"},
	{NWAM_ENTITY_NO_VALUE,		"no value associated with entity"},
	{NWAM_ENTITY_MULTIPLE_VALUES,	"multiple values for entity"},
	{NWAM_ENTITY_READ_ONLY,		"entity is read only"},
	{NWAM_ENTITY_NOT_DESTROYABLE,	"entity cannot be destroyed"},
	{NWAM_ENTITY_NOT_MANUAL, "entity cannot be manually enabled/disabled"},
	{NWAM_WALK_HALTED,		"callback function returned nonzero"},
	{NWAM_ERROR_BIND,		"could not bind to backend server"},
	{NWAM_ERROR_BACKEND_INIT,	"could not initialize backend"},
	{NWAM_ERROR_INTERNAL,		"internal error"}
};

#define	NWAM_NUM_ERRORS	(sizeof (nwam_errors) / sizeof (*nwam_errors))

const char *
nwam_strerror(nwam_error_t code)
{
	struct nwam_error_info *cur, *end;

	cur = nwam_errors;
	end = cur + NWAM_NUM_ERRORS;

	for (; cur < end; cur++) {
		if (code == cur->error_code)
			return (dgettext(TEXT_DOMAIN, cur->error_desc));
	}

	return (dgettext(TEXT_DOMAIN, "unknown error"));
}