/* error.c -- error handler for noninteractive utilities
Copyright (C) 1990, 1991, 1992 Free Software Foundation, Inc.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */
/* Written by David MacKenzie. */
#define VA_START(args, lastarg) va_start(args, lastarg)
#define VA_START(args, lastarg) va_start(args)
#else /* !HAVE_VPRINTF */
#define va_alist a1, a2, a3, a4, a5, a6, a7, a8
#define va_dcl char *a1, *a2, *a3, *a4, *a5, *a6, *a7, *a8;
#endif /* !HAVE_DOPRNT */
#endif /* !HAVE_VPRINTF */
#else /* !STDC_HEADERS */
#endif /* !STDC_HEADERS */
extern char *program_name
;
private_strerror (errnum
)
extern char *sys_errlist
[];
if (errnum
> 0 && errnum
<= sys_nerr
)
return sys_errlist
[errnum
];
return "Unknown system error";
#define strerror private_strerror
#endif /* !HAVE_STRERROR */
/* Print the program name and error message MESSAGE, which is a printf-style
format string with optional args.
If ERRNUM is nonzero, print its corresponding system error message.
Exit with status STATUS if it is nonzero. */
#if defined (HAVE_VPRINTF) && __STDC__
error (int status
, int errnum
, char *message
, ...)
#else /* !HAVE_VPRINTF or !__STDC__ */
error (status
, errnum
, message
, va_alist
)
#endif /* !HAVE_VPRINTF or !__STDC__ */
#endif /* HAVE_VPRINTF */
fprintf (stderr
, "%s: ", program_name
);
VA_START (args
, message
);
vfprintf (stderr
, message
, args
);
#else /* !HAVE_VPRINTF */
_doprnt (message
, &args
, stderr
);
fprintf (stderr
, message
, a1
, a2
, a3
, a4
, a5
, a6
, a7
, a8
);
#endif /* !HAVE_DOPRNT */
#endif /* !HAVE_VPRINTF */
fprintf (stderr
, ": %s", strerror (errnum
));