/* * Copyright 2008 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ #pragma ident "%Z%%M% %I% %E% SMI" #include #include static const struct { char *se_name; /* error name */ char *se_msg; /* error message */ } _ses_errstr[] = { { "ESES_NONE", "no error" }, { "ESES_NOMEM", "no memory" }, { "ESES_ZERO_LENGTH","zero-length allocation requested" }, { "ESES_VERSION", "library version mismatch" }, { "ESES_NVL", "nvlist manipulation error" }, { "ESES_BAD_NODE", "bad node" }, { "ESES_INVALID_OP","invalid operation" }, { "ESES_RANGE", "value out of range" }, { "ESES_INVALID_PROP","nonexistent or immutable property" }, { "ESES_BAD_TYPE", "incorrect property type" }, { "ESES_BAD_PAGE", "bad page number" }, { "ESES_BAD_RESPONSE","bad response from target" }, { "ESES_BUSY", "target busy" }, { "ESES_TOOMUCHCHANGE","target configuration changing too rapidly" }, { "ESES_LIBSCSI", "SCSI error" }, { "ESES_NOTSUP", "operation not supported" }, { "ESES_UNKNOWN", "error of unknown type" }, { "ESES_CHANGED", "generation count has changed" }, { "ESES_PLUGIN", "invalid or missing plugin" }, { "ESES_MAX", "maximum libses errno value" }, }; static int _ses_nerrno = sizeof (_ses_errstr) / sizeof (_ses_errstr[0]); const char * ses_strerror(ses_errno_t err) { return (err < 0 || err >= _ses_nerrno ? "unknown error" : _ses_errstr[err].se_msg); } const char * ses_errname(ses_errno_t err) { return (err < 0 || err >= _ses_nerrno ? NULL : _ses_errstr[err].se_name); } ses_errno_t ses_errcode(const char *name) { ses_errno_t err; for (err = 0; err < _ses_nerrno; err++) { if (strcmp(name, _ses_errstr[err].se_name) == 0) return (err); } return (ESES_UNKNOWN); }