com_err.h revision 2540bb79b728cbfb88ed80e8ca2c2d8c0edc129b
13839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o/* 23839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Header file for common error description library. 33839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * 43839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Copyright 1988, Student Information Processing Board of the 53839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * Massachusetts Institute of Technology. 63839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * 73839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * For copyright and distribution info, see the documentation supplied 83839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o * with this package. 93839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o */ 103839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 1158f9d9e679152742f1352adc0c072176d128a4d4Theodore Ts'o#if !defined(__COM_ERR_H) && !defined(__COM_ERR_H__) 123839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 132540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o#ifdef __GNUC__ 142540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o#define COM_ERR_ATTR(x) __attribute__(x) 152540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o#else 162540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o#define COM_ERR_ATTR(x) 172540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o#endif 182540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o 1991835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'o#include <stdarg.h> 2091835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'o 213839e65723771b85975f4263102dd3ceec4523cTheodore Ts'otypedef long errcode_t; 223839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 2300aba96743c1b76eb9c242368f582c65ecdbe47cTheodore Ts'ostruct error_table { 2400aba96743c1b76eb9c242368f582c65ecdbe47cTheodore Ts'o char const * const * msgs; 2591835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'o long base; 268ce230959ce99e02da84f1d1fba76c78eafce3f3Theodore Ts'o int n_msgs; 2700aba96743c1b76eb9c242368f582c65ecdbe47cTheodore Ts'o}; 2891835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'ostruct et_list; 29f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'o 302540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'oextern void com_err (const char *, long, const char *, ...) 312540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o COM_ERR_ATTR((format(printf, 3, 4))); 322540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o 3391835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'oextern void com_err_va (const char *whoami, errcode_t code, const char *fmt, 342540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o va_list args) 352540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o COM_ERR_ATTR((format(printf, 3, 0))); 362540bb79b728cbfb88ed80e8ca2c2d8c0edc129bTheodore Ts'o 3791835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'oextern char const *error_message (long); 38f3db3566b5e1342e49dffc5ec3f418a838584194Theodore Ts'oextern void (*com_err_hook) (const char *, long, const char *, va_list); 3991835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'oextern void (*set_com_err_hook (void (*) (const char *, long, 4091835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'o const char *, va_list))) 4191835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'o (const char *, long, const char *, va_list); 4291835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'oextern void (*reset_com_err_hook (void)) (const char *, long, 4391835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'o const char *, va_list); 4458f9d9e679152742f1352adc0c072176d128a4d4Theodore Ts'oextern int init_error_table(const char * const *msgs, long base, int count); 4591835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'o 4691835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'oextern errcode_t add_error_table(const struct error_table * et); 4791835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'oextern errcode_t remove_error_table(const struct error_table * et); 4891835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'oextern void add_to_error_table(struct et_list *new_table); 4991835c151fd48fd03bfe74133b8214486af18c12Theodore Ts'o 50d03550970c57100dbafd8941f34acafd208ec52eTheodore Ts'o/* Provided for Heimdall compatibility */ 51d03550970c57100dbafd8941f34acafd208ec52eTheodore Ts'oextern const char *com_right(struct et_list *list, long code); 52d03550970c57100dbafd8941f34acafd208ec52eTheodore Ts'oextern void initialize_error_table_r(struct et_list **list, 53d03550970c57100dbafd8941f34acafd208ec52eTheodore Ts'o const char **messages, 54d03550970c57100dbafd8941f34acafd208ec52eTheodore Ts'o int num_errors, 55d03550970c57100dbafd8941f34acafd208ec52eTheodore Ts'o long base); 56d03550970c57100dbafd8941f34acafd208ec52eTheodore Ts'oextern void free_error_table(struct et_list *et); 573839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o 583839e65723771b85975f4263102dd3ceec4523cTheodore Ts'o#define __COM_ERR_H 5958f9d9e679152742f1352adc0c072176d128a4d4Theodore Ts'o#define __COM_ERR_H__ 6058f9d9e679152742f1352adc0c072176d128a4d4Theodore Ts'o#endif /* !defined(__COM_ERR_H) && !defined(__COM_ERR_H__)*/ 61