1 /*-
2 * Copyright (c) 1992, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * %sccs.include.redist.c%
6 */
7
8 #ifndef lint
9 static char sccsid[] = "@(#)misc.c 8.1 (Berkeley) 06/04/93";
10 #endif /* not lint */
11
12 #include <sys/types.h>
13
14 #include <unistd.h>
15 #include <errno.h>
16 #include <stdlib.h>
17 #include <stdio.h>
18 #include <string.h>
19
20 extern char *special;
21
22 #if __STDC__
23 #include <stdarg.h>
24 #else
25 #include <varargs.h>
26 #endif
27
28 void
29 #if __STDC__
err(const int fatal,const char * fmt,...)30 err(const int fatal, const char *fmt, ...)
31 #else
32 err(fmt, va_alist)
33 char *fmt;
34 va_dcl
35 #endif
36 {
37 va_list ap;
38 #if __STDC__
39 va_start(ap, fmt);
40 #else
41 va_start(ap);
42 #endif
43 (void)fprintf(stderr, "%s: ", special);
44 (void)vfprintf(stderr, fmt, ap);
45 va_end(ap);
46 if (errno)
47 (void)fprintf(stderr, " %s", strerror(errno));
48 (void)fprintf(stderr, "\n");
49 if (fatal)
50 exit(1);
51 }
52
53 void
get(fd,off,p,len)54 get(fd, off, p, len)
55 int fd;
56 off_t off;
57 void *p;
58 size_t len;
59 {
60 int rbytes;
61
62 if (lseek(fd, off, SEEK_SET) < 0)
63 err(1, "%s: %s", special, strerror(errno));
64 if ((rbytes = read(fd, p, len)) < 0)
65 err(1, "%s: %s", special, strerror(errno));
66 if (rbytes != len)
67 err(1, "%s: short read (%d, not %d)", special, rbytes, len);
68 }
69