`
frenchmay
  • 浏览: 228852 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ourhdr.c /gcc -c ourhdr.c编译得到ourhdr.o

阅读更多
#include <errno.h>              /* for definition of errno */
#include <stdarg.h>             /* ANSI C header file */
#include "ourhdr.h"

static void err_doit(int, const char *, va_list);
char *pname = NULL;             /* caller can set this from argv[0] */

/* Nonfatal error related to a system call.
   Print a message and return */

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

/* Fatal error related to a system call.
Print a message and terminate. */

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

/* Fatal error related to a system call.
   Print a message and terminate. */

void
err_dump(const char *fmt, ...)
{
  va_list ap;

  va_start(ap, fmt);
  err_doit(1, fmt, ap);
  va_end(ap);
  abort();                      /* dump core and terminate */
  exit(1);                      /* shouldn't get here */
}

/* Nonfatal error unrelated to a system call.
   Print a message and return. */

void
err_msg(const char *fmt, ...)
{
  va_list ap;

  va_start(ap, fmt);
  err_doit(0, fmt, ap);
  va_end(ap);
  return;
}

/* Fatal error unrelated to a system call.
   Print a message and terminate. */

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

/* Print a message and return to caller.
   Caller specifies "errnoflag". */

static void
err_doit(int errnoflag, const char *fmt, va_list ap)
{
  int errno_save;
  char buf[MAXLINE];

  errno_save = errno;           /* value caller might want printed */
  vsprintf(buf, fmt, ap);
  if (errnoflag)
    sprintf (buf+strlen(buf), ": %s", strerror (errno_save));
  strcat (buf, "\n");
  fflush(stdout);               /* in case stdout and stderr are the same */
  fputs(buf, stderr);
  fflush(NULL);                 /* flushes all stdio output streams */
  return;
}
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics