Fixes taken from netpbm

--- lib/rle_global.c
+++ lib/rle_global.c
@@ -76,7 +76,7 @@ rle_hdr rle_dflt_hdr = {
     8,				/* cmaplen (log2 of length of color map) */
     NULL,			/* pointer to color map */
     NULL,			/* pointer to comment strings */
-    stdout,			/* output file */
+    NULL,			/* output file -- must be set dynamically */
     { 7 },			/* RGB channels only */
     0L,				/* Can't free name and file fields. */
     "Urt",			/* Default "program name". */
--- lib/rle_hdr.c
+++ lib/rle_hdr.c
@@ -269,6 +273,9 @@
 {
     rle_hdr *ret_hdr;
 
+    rle_dflt_hdr.rle_file = stdout;
+    /* The rest of rle_dflt_hdr is set by the loader's data initialization */
+
     if ( the_hdr == &rle_dflt_hdr )
 	return the_hdr;
 
--- lib/dither.c
+++ lib/dither.c
@@ -38,10 +38,10 @@ void	make_square();
 #endif
 
 static int magic4x4[4][4] =  {
- 	 0, 14,  3, 13,
-	11,  5,  8,  6,
-	12,  2, 15,  1,
-	 7,  9,  4, 10
+{	 0, 14,  3, 13},
+{	11,  5,  8,  6},
+{	12,  2, 15,  1},
+{	 7,  9,  4, 10}
 };
 
 /* basic dithering macro */
--- lib/rle_open_f.c
+++ lib/rle_open_f.c
@@ -9,7 +9,11 @@
  */
 
 #include "rle_config.h"
+#define _XOPEN_SOURCE  /* Make sure fdopen() is in stdio.h */
+
 #include <stdio.h>
+#include <unistd.h>
+#include <fcntl.h>
 
 #ifndef NO_OPEN_PIPES
 /* Need to have a SIGCLD signal catcher. */
@@ -260,7 +260,6 @@
     int pipefd[2];
     int i;
     char *argv[4];
-    extern int errno;
 
     /* Check args. */
     if ( *mode != 'r' && *mode != 'w' )
--- lib/rle_getcom.c
+++ lib/rle_getcom.c
@@ -53,11 +53,12 @@
 {
     for ( ; *n != '\0' && *n != '=' && *n == *v; n++, v++ )
 	;
-    if (*n == '\0' || *n == '=')
+    if (*n == '\0' || *n == '=') {
 	if ( *v == '\0' )
 	    return v;
 	else if ( *v == '=' )
 	    return ++v;
+    }
 
     return NULL;
 }
--- lib/scanargs.c
+++ lib/scanargs.c
@@ -128,10 +130,10 @@
 va_list argl;
 {
 
-    register    check;			/* check counter to be sure all argvs
+    int    check;			/* check counter to be sure all argvs
 					   are processed */
     register CONST_DECL char  *cp;
-    register    cnt;
+    int    cnt;
     int	    optarg = 0;			/* where optional args start */
     int	    nopt = 0;
     char    tmpflg,			/* temp flag */
@@ -375,11 +377,12 @@
 				if ( optarg > 0 ) /* end optional args? */
 				{
 				    /* Eat the arg, too, if necessary */
-				    if ( list_cnt == 0 )
+				    if ( list_cnt == 0 ) {
 					if ( typchr == 's' )
 					    (void)va_arg( argl, char * );
 					else
 					    (void)va_arg( argl, ptr );
+                    }
 				    break;
 				}
 				else
@@ -567,7 +570,7 @@
 				     * Do conversion for n and N types
 				     */
 				    tmpflg = typchr;
-				    if (typchr == 'n' || typchr == 'N' )
+				    if (typchr == 'n' || typchr == 'N' ) {
 					if (*argp != '0')
 					    tmpflg = 'd';
 					else if (*(argp+1) == 'x' ||
@@ -578,6 +581,7 @@
 					}
 					else
 					    tmpflg = 'o';
+                    }
 				    if (typchr == 'N')
 					tmpflg = toupper( tmpflg );
 
--- lib/inv_cmap.c
+++ lib/inv_cmap.c
@@ -42,7 +42,7 @@
 static long cbinc, cginc, crinc;
 static unsigned long *gdp, *rdp, *cdp;
 static unsigned char *grgbp, *rrgbp, *crgbp;
-static gstride, rstride;
+static long gstride, rstride;
 static long x, xsqr, colormax;
 static int cindex;
 #ifdef INSTRUMENT_IT
--- lib/rle_getrow.c
+++ lib/rle_getrow.c
@@ -351,7 +351,7 @@
 	    bzero( (char *)scanline[-1] + the_hdr->xmin,
 		   the_hdr->xmax - the_hdr->xmin + 1 );
 	for ( nc = 0; nc < the_hdr->ncolors; nc++ )
-	    if ( RLE_BIT( *the_hdr, nc ) )
+	    if ( RLE_BIT( *the_hdr, nc ) ) {
 		/* Unless bg color given explicitly, use 0. */
 		if ( the_hdr->background != 2 || the_hdr->bg_color[nc] == 0 )
 		    bzero( (char *)scanline[nc] + the_hdr->xmin,
@@ -360,6 +360,7 @@
 		    bfill( (char *)scanline[nc] + the_hdr->xmin,
 			   the_hdr->xmax - the_hdr->xmin + 1,
 			   the_hdr->bg_color[nc] );
+	    }
     }
 
     /* If skipping, then just return */
@@ -367,7 +368,7 @@
     {
 	the_hdr->priv.get.vert_skip--;
 	the_hdr->priv.get.scan_y++;
-	if ( the_hdr->priv.get.vert_skip > 0 )
+	if ( the_hdr->priv.get.vert_skip > 0 ) {
 	    if ( the_hdr->priv.get.scan_y >= the_hdr->ymax )
 	    {
 		int y = the_hdr->priv.get.scan_y;
@@ -377,6 +378,7 @@
 	    }
 	    else
 		return the_hdr->priv.get.scan_y;
+	}
     }
 
     /* If EOF has been encountered, return also */
@@ -457,11 +459,12 @@
 	    else
 		nc = DATUM(inst);
 	    nc++;
-	    if ( debug_f )
+	    if ( debug_f ) {
 		if ( RLE_BIT( *the_hdr, channel ) )
 		    fprintf( stderr, "Pixel data %d (to %d):", nc, scan_x+nc );
 		else
 		    fprintf( stderr, "Pixel data %d (to %d)\n", nc, scan_x+nc);
+	    }
 	    if ( RLE_BIT( *the_hdr, channel ) )
 	    {
 		/* Don't fill past end of scanline! */
--- lib/rle_putcom.c
+++ lib/rle_putcom.c
@@ -53,11 +53,12 @@
 {
     for ( ; *n != '\0' && *n != '=' && *n == *v; n++, v++ )
 	;
-    if (*n == '\0' || *n == '=')
+    if (*n == '\0' || *n == '=') {
 	if ( *v == '\0' )
 	    return v;
 	else if ( *v == '=' )
 	    return ++v;
+    }
 
     return NULL;
 }
