Forráskódok

Segédállományok, amelyekre a dokumentumban hivatkozunk


 

  hdr.h

  err.c

  err_sys

  err_ret

  err_quit

  err_msg

  err_dump

 


 

  hdr.h

#ifndef __hdr_h
#define __hdr_h

#include <sys/types.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#define MAXLINE 1024
#define ever (;;)

typedef void sigfunc( int);

void print_exit( int);
void print_mask(const char*);

sigfunc *signal_intr(int, sigfunc *);

void err_sys(const char *, ...);
void err_quit(const char *, ...);
void err_dump(const char *, ...);
void err_ret(const char *, ...);
void err_msg(const char *, ...);

#endif

  err.c

#include <errno.h>
#include <stdarg.h>
#include "hdr.h"

static void err_do(int, const char *, va_list);

char *pname=NULL;

/* Végzetes hiba egy rendszerhívás során. Kiírja a hibaüzenetet és befejezi a folyamatot. */

void err_sys(const char *frmt, ...)
{
  va_list ap;
  va_start(ap, frmt);
  err_do(1, frmt, ap);
  va_end(ap);
  exit(1);
}

/* Nem végzetes hiba egy rendszerhívás során. Kiírja a hibaüzenetet és visszatér. */

void err_ret(const char *frmt, ...)
{
  va_list ap;
  va_start(ap, frmt);
  err_do(1, frmt, ap);
  va_end(ap);
  return;
}

/* Rendszerhívástól független, végzetes hiba. Kiírja a hibaüzenetet és befejezi a folyamatot. */

void err_quit(const char *frmt, ...)
{
  va_list ap;
  va_start(ap, frmt);
  err_do(0, frmt, ap);
  va_end(ap);
  exit(1);
}

/* Rendszerhívástól független, nem végzetes hiba. Kiírja a hibaüzenetet és visszatér. */

void err_msg(const char *frmt, ...)
{
  va_list ap;
  va_start(ap, frmt);
  err_do(0, frmt, ap);
  va_end(ap);
  return;
}

/* Rendszerhívásra relatív, végzetes hiba. Kiírja a hibaüzenetet, dump core és befejezi a folyamatot. */

void err_dump(const char *frmt, ...)
{
  va_list ap;
  va_start(ap, frmt);
  err_do(1, frmt, ap);
  va_end(ap);
  abort();
  exit(1);
}

static void err_do(int errfan, const char *frmt, va_list ap)
{
  int errno_save;
  char buf[MAXLINE];

  errno_save=errno;
  vsprintf(buf, frmt, ap);
  if (errfan)
    sprintf(buf + strlen(buf), ": %s", strerror(errno_save));
  strcat(buf, "/n");
  fflush(stdout);
  fputs(buf, stderr);
  fflush( NULL);
  return;
}

 


Copyright (C) Buzogány László, 2002

About