Forráskódok
Segédállományok, amelyekre a dokumentumban hivatkozunk
#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
#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