Download | Plain Text | No Line Numbers


  1. #include <stdarg.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <stdio.h>
  5. #include <errno.h>
  6. #include "global.h"
  7.  
  8. /* global variables */
  9. volatile sig_atomic_t error = 0; /* error flag */
  10. char *me = NULL; /* name of myself (argv[0]) */
  11.  
  12. char* charmap[128] =
  13. {
  14. NULL,
  15. NULL,
  16. NULL,
  17. NULL,
  18. NULL,
  19. NULL,
  20. NULL,
  21. NULL,
  22. NULL, /* backspace */
  23. NULL, /* space */
  24. NULL, /* linefeed */
  25. NULL,
  26. NULL,
  27. NULL, /* carrige return */
  28. NULL,
  29. NULL,
  30. NULL,
  31. NULL,
  32. NULL,
  33. NULL,
  34. NULL,
  35. NULL,
  36. NULL,
  37. NULL,
  38. NULL,
  39. NULL,
  40. NULL,
  41. NULL,
  42. NULL,
  43. NULL,
  44. NULL,
  45. NULL,
  46. "bla", /* space */
  47. NULL, /* ! */
  48. NULL, /* " */
  49. NULL, /* # */
  50. NULL, /* $ */
  51. NULL, /* % */
  52. NULL, /* & */
  53. NULL, /* ' */
  54. NULL, /* ( */
  55. NULL, /* ) */
  56. NULL, /* * */
  57. NULL, /* + */
  58. NULL, /* , */
  59. NULL, /* - */
  60. "la", /* . */
  61. NULL, /* / */
  62. NULL, /* 0 */
  63. NULL, /* 1 */
  64. NULL, /* 2 */
  65. NULL, /* 3 */
  66. NULL, /* 4 */
  67. NULL, /* 5 */
  68. NULL, /* 6 */
  69. NULL, /* 7 */
  70. NULL, /* 8 */
  71. NULL, /* 9 */
  72. NULL, /* : */
  73. NULL, /* ; */
  74. NULL, /* < */
  75. NULL, /* = */
  76. NULL, /* > */
  77. NULL, /* ? */
  78. NULL, /* @ */
  79. "risikolos", /* A */
  80. "neue", /* B */
  81. "Wege", /* C */
  82. "gehen", /* D */
  83. "geeignet", /* E */
  84. "Baum", /* F */
  85. "anklage", /* G */
  86. "die", /* H */
  87. "Revolution", /* I */
  88. "kugeln", /* J */
  89. "Lust", /* K */
  90. "lecker", /* L */
  91. "Kreuter", /* M */
  92. "Auge", /* N */
  93. "ausstellen", /* O */
  94. "benutzt", /* P */
  95. "werden", /* Q */
  96. "Ecke", /* R */
  97. "Blut", /* S */
  98. "Arche", /* T */
  99. "Katze", /* U */
  100. "Abfall", /* V */
  101. "Clown", /* W */
  102. "Stadtmuseum", /* X */
  103. "Beiwagen", /* Y */
  104. "Radio", /* Z */
  105. NULL, /* [ */
  106. NULL, /* \ */
  107. NULL, /* ] */
  108. NULL, /* ^ */
  109. NULL, /* _ */
  110. NULL, /* ` */
  111. "Schilderung", /* a */
  112. "Garten", /* b */
  113. "ist", /* c */
  114. "helfen", /* d */
  115. "Publizist", /* e */
  116. "Feigling", /* f */
  117. "Kartoffelschnitzel", /* g */
  118. "heute", /* h */
  119. "dilettantisch", /* i */
  120. "Design", /* j */
  121. "Zuschauer", /* k */
  122. "Ansicht", /* l */
  123. "umspringen", /* m */
  124. "mit", /* n */
  125. "Antrieb", /* o */
  126. "der", /* p */
  127. "tue", /* q */
  128. "das", /* r */
  129. "Himmel", /* s */
  130. "klar", /* t */
  131. "Weib", /* u */
  132. "von", /* v */
  133. "drohen", /* w */
  134. "nutzen", /* x */
  135. "Zuschuss", /* y */
  136. "denken", /* z */
  137. NULL, /* { */
  138. NULL, /* | */
  139. NULL, /* } */
  140. NULL, /* ~ */
  141. NULL, /* DEL */
  142. };
  143.  
  144. void vprintferr(const char *fmt, va_list ap)
  145. {
  146. (void) fprintf(stderr, "%s: ", me);
  147. (void) vfprintf(stderr, fmt, ap);
  148. if (errno)
  149. (void) fprintf(stderr, ": %s.", strerror(errno));
  150. (void) fprintf(stderr, "\n");
  151. error = 1;
  152. }
  153.  
  154. void printferr(const char *fmt, ...)
  155. {
  156. va_list ap;
  157.  
  158. (void) va_start(ap, fmt);
  159. (void) vprintferr(fmt, ap);
  160. (void) va_end(ap);
  161. }
  162.  
  163. void bailout(const char *fmt, ...)
  164. {
  165. va_list ap;
  166.  
  167. if (fmt != NULL)
  168. {
  169. (void) va_start(ap, fmt);
  170. (void) vprintferr(fmt, ap);
  171. (void) va_end(ap);
  172. }
  173. (void) exit(EXIT_FAILURE);
  174. }
  175.