error.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. /* $Id: error.c,v 1.2 2001/04/29 17:35:17 kilobug Exp $ */
  2. #include "net_private.h"
  3. static net_error_hdlr_t *gl_net_error_handler = net_error_abort;
  4. static void *gl_net_error_data = NULL;
  5. const char *net_type_name(net_type_t t)
  6. {
  7. switch (t)
  8. {
  9. case net_type_str:
  10. return "string";
  11. case net_type_int:
  12. return "integer";
  13. case net_type_float:
  14. return "float";
  15. case net_type_char:
  16. return "char";
  17. case net_type_none:
  18. return "(none)";
  19. default:
  20. return "(unkown)";
  21. }
  22. }
  23. void net_set_error_handler(net_error_hdlr_t *hdlr, void *data)
  24. {
  25. if (hdlr != NULL)
  26. gl_net_error_handler = hdlr;
  27. else
  28. gl_net_error_handler = net_error_ignore;
  29. gl_net_error_data = data;
  30. }
  31. void net_error_abort(net_type_t get, net_type_t wanted, void *data)
  32. {
  33. fprintf(stderr,
  34. "Fatal protocol error (was %s, excepted %s). Aborting.\n",
  35. net_type_name(get), net_type_name(wanted));
  36. exit(2);
  37. }
  38. void net_error_ignore(net_type_t get, net_type_t wanted, void *data)
  39. {
  40. }
  41. void net_error(net_type_t get, net_type_t wanted)
  42. {
  43. #ifdef __DEBUG_NETLIB__
  44. fprintf(stderr, "Type error: got %#.2x (%s), wanted %#.2x (%s)\n",
  45. get, net_type_name(get), wanted, net_type_name(wanted));
  46. #endif
  47. gl_net_error_handler(get, wanted, gl_net_error_data);
  48. }