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)