com_err.h revision 4259052093da329907e255b11bf3e799872828c7
158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)/* 258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Header file for common error description library. 358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Copyright 1988, Student Information Processing Board of the 558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * Massachusetts Institute of Technology. 658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * 758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * For copyright and distribution info, see the documentation supplied 858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) * with this package. 958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) */ 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#if !defined(__COM_ERR_H) && !defined(__COM_ERR_H__) 1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifdef __GNUC__ 1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define COM_ERR_ATTR(x) __attribute__(x) 1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#else 1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define COM_ERR_ATTR(x) 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <stddef.h> 2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include <stdarg.h> 2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 2258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)typedef long errcode_t; 2358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct error_table { 25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) char const * const * msgs; 26cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) long base; 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) int n_msgs; 28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)}; 29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)struct et_list; 30cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)extern void com_err (const char *, long, const char *, ...) 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) COM_ERR_ATTR((format(printf, 3, 4))); 33cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 34cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)extern void com_err_va (const char *whoami, errcode_t code, const char *fmt, 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) va_list args) 36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) COM_ERR_ATTR((format(printf, 3, 0))); 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) 38cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)extern char const *error_message (long); 39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)extern void (*com_err_hook) (const char *, long, const char *, va_list); 40cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)extern void (*set_com_err_hook (void (*) (const char *, long, 4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const char *, va_list))) 4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) (const char *, long, const char *, va_list); 4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern void (*reset_com_err_hook (void)) (const char *, long, 4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const char *, va_list); 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern int init_error_table(const char * const *msgs, long base, int count); 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern char *(*set_com_err_gettext (char *(*) (const char *))) 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) (const char *); 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern errcode_t add_error_table(const struct error_table * et); 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern errcode_t remove_error_table(const struct error_table * et); 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern void add_to_error_table(struct et_list *new_table); 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)/* Provided for Heimdall compatibility */ 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern const char *com_right(struct et_list *list, long code); 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern const char *com_right_r(struct et_list *list, long code, char *str, size_t len); 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern void initialize_error_table_r(struct et_list **list, 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) const char **messages, 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) int num_errors, 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) long base); 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern void free_error_table(struct et_list *et); 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)/* Provided for compatibility with other com_err libraries */ 6358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern int et_list_lock(void); 6458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)extern int et_list_unlock(void); 6558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define __COM_ERR_H 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define __COM_ERR_H__ 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif /* !defined(__COM_ERR_H) && !defined(__COM_ERR_H__)*/ 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)