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