--- rw/libpnmrw.c.orig	Mon Oct  2 14:53:30 2000
+++ rw/libpnmrw.c	Wed Feb 20 15:51:29 2002
@@ -46,7 +46,7 @@
 
 void *malloc(int);
 void free(void *);
-#if defined(__EMX__) || defined(__CYGWIN__)
+#if defined(__EMX__) || defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__NetBSD__)
 #include <errno.h>
 #endif
 
@@ -131,6 +131,7 @@ pm_freearray(char **its, int rows)
 static void
 pm_perror(char *reason)
 {
+#if !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__NetBSD__)
 #if defined(BSD4_4)
     __const extern char *__const sys_errlist[];
 #else
@@ -147,6 +148,7 @@ pm_perror(char *reason)
 #if !defined(__EMX__) || defined(__CYGWIN__)
     extern int errno;
 #endif
+#endif
     char *e;
 
     e = sys_errlist[errno];
@@ -286,7 +288,7 @@ pbm_readmagicnumber(FILE * file)
 static int
 pbm_getint(FILE * file)
 {
-    register char ich;
+    register int ich;
     register int i;
 
     do {
