summary refs log tree commit diff
path: root/pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch')
-rw-r--r--pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch203
1 files changed, 203 insertions, 0 deletions
diff --git a/pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch b/pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch
new file mode 100644
index 0000000000000..3720806960fe8
--- /dev/null
+++ b/pkgs/development/libraries/urt/urt-3.1b-rle-fixes.patch
@@ -0,0 +1,203 @@
+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;
+ }