Imported Upstream version 1.17
[platform/upstream/krb5.git] / src / include / k5-err.h
1 /* -*- mode: c; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2 /* include/k5-err.h */
3 /*
4  * Copyright 2006, 2007 Massachusetts Institute of Technology.
5  * All Rights Reserved.
6  *
7  * Export of this software from the United States of America may
8  *   require a specific license from the United States Government.
9  *   It is the responsibility of any person or organization contemplating
10  *   export to obtain such a license before exporting.
11  *
12  * WITHIN THAT CONSTRAINT, permission to use, copy, modify, and
13  * distribute this software and its documentation for any purpose and
14  * without fee is hereby granted, provided that the above copyright
15  * notice appear in all copies and that both that copyright notice and
16  * this permission notice appear in supporting documentation, and that
17  * the name of M.I.T. not be used in advertising or publicity pertaining
18  * to distribution of the software without specific, written prior
19  * permission.  Furthermore if you modify this software you must label
20  * your software as modified software and not distribute it in such a
21  * fashion that it might be confused with the original M.I.T. software.
22  * M.I.T. makes no representations about the suitability of
23  * this software for any purpose.  It is provided "as is" without express
24  * or implied warranty.
25  */
26
27 /*
28  *
29  * Error-message handling
30  */
31
32 #ifndef K5_ERR_H
33 #define K5_ERR_H
34
35 #if defined(_MSDOS) || defined(_WIN32)
36 #include <win-mac.h>
37 #endif
38 #ifndef KRB5_CALLCONV
39 #define KRB5_CALLCONV
40 #define KRB5_CALLCONV_C
41 #endif
42
43 #include <stdarg.h>
44
45 struct errinfo {
46     long code;
47     char *msg;
48 };
49 #define EMPTY_ERRINFO { 0, NULL }
50
51 void k5_set_error(struct errinfo *ep, long code, const char *fmt, ...)
52 #if !defined(__cplusplus) && (__GNUC__ > 2)
53     __attribute__((__format__(__printf__, 3, 4)))
54 #endif
55     ;
56
57 void k5_vset_error(struct errinfo *ep, long code, const char *fmt,
58                    va_list args)
59 #if !defined(__cplusplus) && (__GNUC__ > 2)
60     __attribute__((__format__(__printf__, 3, 0)))
61 #endif
62     ;
63
64 const char *k5_get_error(struct errinfo *ep, long code);
65 void k5_free_error(struct errinfo *ep, const char *msg);
66 void k5_clear_error(struct errinfo *ep);
67 void k5_set_error_info_callout_fn(const char *(KRB5_CALLCONV *f)(long));
68
69 #endif /* K5_ERR_H */