]>
git.saurik.com Git - apple/security.git/blob - cdsa/cdsa_utilities/cssmerrno.cpp
2 * Copyright (c) 2000-2001 Apple Computer, Inc. All Rights Reserved.
4 * The contents of this file constitute Original Code as defined in and are
5 * subject to the Apple Public Source License Version 1.2 (the 'License').
6 * You may not use this file except in compliance with the License. Please obtain
7 * a copy of the License at http://www.apple.com/publicsource and read it before
10 * This Original Code and all software distributed under the License are
11 * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS
12 * OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, INCLUDING WITHOUT
13 * LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14 * PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. Please see the License for the
15 * specific language governing rights and limitations under the License.
20 // cssmerrno - number-to-string translation for CSSM error codes
23 #define _CPP_CSSMERRNO
25 #include <Security/cssmerrno.h>
26 #include <Security/globalizer.h>
35 // The compiled database of error codes
37 struct ErrorMap
: public map
<CSSM_RETURN
, const char *> {
40 static ModuleNexus
<ErrorMap
> errorMap
;
47 #include "errorcodes.gen" // include generated error tables
51 // Create the error map (the first time)
55 for (unsigned n
= 0; n
< sizeof(errorList
) / sizeof(errorList
[0]); n
++)
56 (*this)[errorList
[n
].error
] = errorList
[n
].name
;
61 // A perror-like form usable from C (and C++)
64 void cssmPerror(const char *how
, CSSM_RETURN error
)
67 fprintf(stderr
, "%s: %s\n", how
, cssmErrorString(error
).c_str());
69 fprintf(stderr
, "%s\n", cssmErrorString(error
).c_str());
74 // Produce a diagnostic string from a CSSM error number or exception
76 string
cssmErrorString(CSSM_RETURN error
)
78 if (error
== CSSM_OK
) {
80 } else if (error
> 0 &&
81 int(error
) < int(sizeof(convErrorList
) / sizeof(convErrorList
[0]))) {
82 return string("COMMON[") + convErrorList
[error
] + "]";
84 ErrorMap::const_iterator it
= errorMap().find(error
);
85 if (it
== errorMap().end())
92 string
cssmErrorString(const CssmCommonError
&error
)
93 { return cssmErrorString(error
.cssmError()); }
95 } // end namespace Security