1 /* Copyright (c) 1998, 1999 Thai Open Source Software Center Ltd
2 See the file COPYING for copying permission.
17 #define S_IFREG _S_IFREG
20 #define S_IFMT _S_IFMT
22 #define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
23 #endif /* not S_ISREG */
27 #define O_BINARY _O_BINARY
36 filemap(const char *name
,
37 void (*processor
)(const void *, size_t, const char *, void *arg
),
46 fd
= open(name
, O_RDONLY
|O_BINARY
);
51 if (fstat(fd
, &sb
) < 0) {
55 if (!S_ISREG(sb
.st_mode
)) {
56 fprintf(stderr
, "%s: not a regular file\n", name
);
62 fprintf(stderr
, "%s: out of memory\n", name
);
65 n
= read(fd
, p
, nbytes
);
73 fprintf(stderr
, "%s: read unexpected number of bytes\n", name
);
78 processor(p
, nbytes
, name
, arg
);