* print.c - debugging printout routines
* Copyright (c) Ian F. Darwin, 1987.
* Written by Ian F. Darwin.
* This software is not subject to any license of the American Telephone
* and Telegraph Company or of the Regents of the University of California.
* Permission is granted to anyone to use this software for any purpose on
* any computer system, and to alter it and redistribute it freely, subject
* to the following restrictions:
* 1. The author is not responsible for the consequences of use of this
* software, no matter how awful, even if they arise from flaws in it.
* 2. The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Since few users ever read sources,
* credits must appear in the documentation.
* 3. Altered versions must be plainly marked as such, and must not be
* misrepresented as being the original software. Since few users
* ever read sources, credits must appear in the documentation.
* 4. This notice may not be removed or altered.
"@(#)print.c,v 1.2 1993/06/10 00:38:17 jtc Exp";
static char *offs
[] = { "absolute", "offset",
"indirect", "indirect-offset" };
static char *typ
[] = { "invalid", "byte", "short", "invalid",
"long", "string", "date", "beshort",
"belong", "bedate", "leshort", "lelong",
(void) fprintf(stderr
, "[%s,%d,%s,%s%c,",
(m
->flag
>= 0 && m
->flag
< 4 ? offs
[m
->flag
]: "*bad*"),
(m
->type
>= 0 && m
->type
< 13 ?
typ
[(unsigned char) m
->type
] : "*bad*"),
m
->reln
& MASK
? "&" : "",
(void) fprintf(stderr
, "(%s,%d)",
m
->in
.type
< 6 ? typ
[(unsigned char) m
->in
.type
] : "*bad*"),
(void) fprintf(stderr
, "%d",m
->value
.l
);
(void) fprintf(stderr
, ",%s", m
->desc
);
(void) fputs("]\n", stderr
);
* ckfputs - futs, but with error checking
* ckfprintf - fprintf, but with error checking
if (fputs(str
,fil
) == EOF
)
error("write failed.\n");
ckfprintf(FILE *f
, const char *fmt
, ...)
fmt
= va_arg(va
, const char *);
(void) vfprintf(f
, fmt
, va
);
error("write failed.\n");
* error - print best error message possible and exit
error(const char *f
, ...)
f
= va_arg(va
, const char *);
/* cuz we use stdout for most, stderr here */
(void) fprintf(stderr
, "%s: ", progname
);
(void) vfprintf(stderr
, f
, va
);
magwarn(const char *f
, ...)
f
= va_arg(va
, const char *);
/* cuz we use stdout for most, stderr here */
(void) fprintf(stderr
, "%s: %s, %d: ",
progname
, magicfile
, lineno
);
(void) vfprintf(stderr
, f
, va
);