-/* $Id: preconv.c,v 1.3 2011/05/26 14:43:07 kristaps Exp $ */
+/* $Id: preconv.c,v 1.5 2011/07/24 18:15:14 kristaps Exp $ */
/*
* Copyright (c) 2011 Kristaps Dzonsons <kristaps@bsd.lv>
*
#include "config.h"
#endif
+#ifdef HAVE_MMAP
#include <sys/stat.h>
#include <sys/mman.h>
+#endif
#include <assert.h>
#include <fcntl.h>
/* Quick test for big-endian value. */
- if ( ! (*((char *)(&one))))
+ if ( ! (*((const char *)(&one))))
be = 1;
for (i = b->offs; i < b->sz; i++) {
read_whole_file(const char *f, int fd,
struct buf *fb, int *with_mmap)
{
- struct stat st;
size_t off;
ssize_t ssz;
+#ifdef HAVE_MMAP
+ struct stat st;
if (-1 == fstat(fd, &st)) {
perror(f);
return(0);
if (fb->buf != MAP_FAILED)
return(1);
}
+#endif
/*
* If this isn't a regular file (like, say, stdin), then we must
/* Check us against known encodings. */
- for (i = 0; i < ENC__MAX; i++) {
+ for (i = 0; i < (int)ENC__MAX; i++) {
nsz = strlen(encs[i].name);
if (phsz < nsz)
continue;
struct buf b;
const char *fn;
enum enc enc, def;
- const char bom[3] = { 0xEF, 0xBB, 0xBF };
+ unsigned char bom[3] = { 0xEF, 0xBB, 0xBF };
size_t offs;
extern int optind;
extern char *optarg;
case ('D'):
/* FALLTHROUGH */
case ('e'):
- for (i = 0; i < ENC__MAX; i++) {
+ for (i = 0; i < (int)ENC__MAX; i++) {
if (strcasecmp(optarg, encs[i].name))
continue;
break;
}
- if (i < ENC__MAX) {
+ if (i < (int)ENC__MAX) {
if ('D' == ch)
def = (enum enc)i;
else
rc = EXIT_SUCCESS;
out:
+#ifdef HAVE_MMAP
if (map)
munmap(b.buf, b.sz);
else
+#endif
free(b.buf);
if (fd > STDIN_FILENO)