Download | Plain Text | Line Numbers


#include <stdarg.h>
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <errno.h>
#include "global.h"
 
/* global variables */
volatile sig_atomic_t error = 0;  /* error flag */
char *me = NULL;                  /* name of myself (argv[0]) */
 
char* charmap[128] =
{
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL, /* backspace */
  NULL, /* space */
  NULL, /* linefeed */
  NULL,
  NULL,
  NULL, /* carrige return */
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  NULL,
  "bla", /* space */
  NULL, /* ! */
  NULL, /* " */
  NULL, /* # */
  NULL, /* $ */
  NULL, /* % */
  NULL, /* & */
  NULL, /* ' */
  NULL, /* ( */
  NULL, /* ) */
  NULL, /* * */
  NULL, /* + */
  NULL, /* , */
  NULL, /* - */
  "la", /* . */
  NULL, /* / */
  NULL, /* 0 */
  NULL, /* 1 */
  NULL, /* 2 */
  NULL, /* 3 */
  NULL, /* 4 */
  NULL, /* 5 */
  NULL, /* 6 */
  NULL, /* 7 */
  NULL, /* 8 */
  NULL, /* 9 */
  NULL, /* : */
  NULL, /* ; */
  NULL, /* < */
  NULL, /* = */
  NULL, /* > */
  NULL, /* ? */
  NULL, /* @ */
  "risikolos", /* A */
  "neue", /* B */
  "Wege", /* C */
  "gehen", /* D */
  "geeignet", /* E */
  "Baum", /* F */
  "anklage", /* G */
  "die", /* H */
  "Revolution", /* I */
  "kugeln", /* J */
  "Lust", /* K */
  "lecker", /* L */
  "Kreuter", /* M */
  "Auge", /* N */
  "ausstellen", /* O */
  "benutzt", /* P */
  "werden", /* Q */
  "Ecke", /* R */
  "Blut", /* S */
  "Arche", /* T */
  "Katze", /* U */
  "Abfall", /* V */
  "Clown", /* W */
  "Stadtmuseum", /* X */
  "Beiwagen", /* Y */
  "Radio", /* Z */
  NULL, /* [ */
  NULL, /* \ */
  NULL, /* ] */
  NULL, /* ^ */
  NULL, /* _ */
  NULL, /* ` */
  "Schilderung", /* a */
  "Garten", /* b */
  "ist", /* c */
  "helfen", /* d */
  "Publizist", /* e */
  "Feigling", /* f */
  "Kartoffelschnitzel", /* g */
  "heute", /* h */
  "dilettantisch", /* i */
  "Design", /* j */
  "Zuschauer", /* k */
  "Ansicht", /* l */
  "umspringen", /* m */
  "mit", /* n */
  "Antrieb", /* o */
  "der", /* p */
  "tue", /* q */
  "das", /* r */
  "Himmel", /* s */
  "klar", /* t */
  "Weib", /* u */
  "von", /* v */
  "drohen", /* w */
  "nutzen", /* x */
  "Zuschuss", /* y */
  "denken", /* z */
  NULL, /* { */
  NULL, /* | */
  NULL, /* } */
  NULL, /* ~ */
  NULL, /* DEL */
};
 
void vprintferr(const char *fmt, va_list ap)
{
  (void) fprintf(stderr, "%s: ", me);
  (void) vfprintf(stderr, fmt, ap);
  if (errno)
    (void) fprintf(stderr, ": %s.", strerror(errno));
  (void) fprintf(stderr, "\n");
  error = 1;
}
 
void printferr(const char *fmt, ...)
{
  va_list ap;
 
  (void) va_start(ap, fmt);
  (void) vprintferr(fmt, ap);
  (void) va_end(ap);
}
 
void bailout(const char *fmt, ...)
{
  va_list ap;
 
  if (fmt != NULL)
  {
    (void) va_start(ap, fmt);
    (void) vprintferr(fmt, ap);
    (void) va_end(ap);
  }
  (void) exit(EXIT_FAILURE);
}