]> git.ipfire.org Git - thirdparty/cups-filters.git/commitdiff
libcupsfilters: Renamed internal functions and data types
authorTill Kamppeter <till.kamppeter@gmail.com>
Mon, 11 Apr 2022 11:12:34 +0000 (13:12 +0200)
committerTill Kamppeter <till.kamppeter@gmail.com>
Mon, 11 Apr 2022 11:12:34 +0000 (13:12 +0200)
Renamed the internal functions and data types according to the rules
of the DEVELOPING.md file of the CUPS source code, to extend this
coding style to cups-filters.

1. Renamed source-file-local functions to all-lowercase with "_"
   separators, also declared all these functions static (= valid only
   for the same source file) if not yet done so. These functions do
   not appear in *.h files.

2. Renamed library-local (non-API, but used in several files of the
   library) to camel-case starting with "_cf...".

3. Renamed data types to all-lowercase with "_" separators, ending
   with "..._e" for enumerations, "..._s" for structs, and "..._t" for
   type definitions.

Also moved the content of the files cupsfilters/image-sgi.h and
cupsfilters/image-sgilib.c into cupsfilters/image-sgi.c and removed
unused code for outputting SGI images, and re-arranged the order of
the functions in the cupsfilters/texttopdf.c source file (to not have
the main function in the middle of the file).

cupsfilters/image-sgi.h [deleted file]
cupsfilters/image-sgilib.c [deleted file]

diff --git a/cupsfilters/image-sgi.h b/cupsfilters/image-sgi.h
deleted file mode 100644 (file)
index 3895835..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *   SGI image file format library definitions for CUPS Filters.
- *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1993-2005 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "COPYING"
- *   which should have been included with this file.
- */
-
-#ifndef _CUPS_FILTERS_SGI_H_
-#  define _CUPS_FILTERS_SGI_H_
-
-#  include <stdio.h>
-#  include <stdlib.h>
-#  include <string.h>
-
-#  ifdef __cplusplus
-extern "C" {
-#  endif
-
-
-/*
- * Constants...
- */
-
-#  define CF_SGI_MAGIC         474     /* Magic number in image file */
-
-#  define CF_SGI_READ          0       /* Read from an SGI image file */
-#  define CF_SGI_WRITE         1       /* Write to an SGI image file */
-
-#  define CF_SGI_COMP_NONE     0       /* No compression */
-#  define CF_SGI_COMP_RLE      1       /* Run-length encoding */
-#  define CF_SGI_COMP_ARLE     2       /* Agressive run-length encoding */
-
-
-/*
- * Image structure...
- */
-
-typedef struct
-{
-  FILE                 *file;          /* Image file */
-  int                  mode,           /* File open mode */
-                       bpp,            /* Bytes per pixel/channel */
-                       comp;           /* Compression */
-  unsigned short       xsize,          /* Width in pixels */
-                       ysize,          /* Height in pixels */
-                       zsize;          /* Number of channels */
-  long                 firstrow,       /* File offset for first row */
-                       nextrow,        /* File offset for next row */
-                       **table,        /* Offset table for compression */
-                       **length;       /* Length table for compression */
-  unsigned short       *arle_row;      /* Advanced RLE compression buffer */
-  long                 arle_offset,    /* Advanced RLE buffer offset */
-                       arle_length;    /* Advanced RLE buffer length */
-} cf_sgi_t;
-
-
-/*
- * Prototypes...
- */
-
-extern int     cfSGIClose(cf_sgi_t *sgip);
-extern int     cfSGIGetRow(cf_sgi_t *sgip, unsigned short *row, int y, int z);
-extern cf_sgi_t        *cfSGIOpen(const char *filename, int mode, int comp, int bpp,
-                          int xsize, int ysize, int zsize);
-extern cf_sgi_t        *cfSGIOpenFile(FILE *file, int mode, int comp, int bpp,
-                              int xsize, int ysize, int zsize);
-extern int     cfSGIPutRow(cf_sgi_t *sgip, unsigned short *row, int y, int z);
-
-#  ifdef __cplusplus
-}
-#  endif
-#endif /* !_CUPS_FILTERS_SGI_H_ */
-
diff --git a/cupsfilters/image-sgilib.c b/cupsfilters/image-sgilib.c
deleted file mode 100644 (file)
index 0d04f0f..0000000
+++ /dev/null
@@ -1,884 +0,0 @@
-/*
- *   SGI image file format library routines for CUPS.
- *
- *   Copyright 2007-2011 by Apple Inc.
- *   Copyright 1993-2005 by Easy Software Products.
- *
- *   These coded instructions, statements, and computer programs are the
- *   property of Apple Inc. and are protected by Federal copyright
- *   law.  Distribution and use rights are outlined in the file "COPYING"
- *   which should have been included with this file.
- *
- * Contents:
- *
- *   cfSGIClose()    - Close an SGI image file.
- *   cfSGIGetRow()   - Get a row of image data from a file.
- *   cfSGIOpen()     - Open an SGI image file for reading or writing.
- *   cfSGIOpenFile() - Open an SGI image file for reading or writing.
- *   cfSGIPutRow()   - Put a row of image data to a file.
- *   getlong()     - Get a 32-bit big-endian integer.
- *   getshort()    - Get a 16-bit big-endian integer.
- *   putlong()     - Put a 32-bit big-endian integer.
- *   putshort()    - Put a 16-bit big-endian integer.
- *   read_rle8()   - Read 8-bit RLE data.
- *   read_rle16()  - Read 16-bit RLE data.
- *   write_rle8()  - Write 8-bit RLE data.
- *   write_rle16() - Write 16-bit RLE data.
- */
-
-#include "image-sgi.h"
-#include "image-private.h"
-
-
-/*
- * Local functions...
- */
-
-static int     getlong(FILE *);
-static int     getshort(FILE *);
-static int     putlong(long, FILE *);
-static int     putshort(unsigned short, FILE *);
-static int     read_rle8(FILE *, unsigned short *, int);
-static int     read_rle16(FILE *, unsigned short *, int);
-static int     write_rle8(FILE *, unsigned short *, int);
-static int     write_rle16(FILE *, unsigned short *, int);
-
-
-/*
- * 'cfSGIClose()' - Close an SGI image file.
- */
-
-int                                    /* O - 0 on success, -1 on error */
-cfSGIClose(cf_sgi_t *sgip)                     /* I - SGI image */
-{
-  int  i;                              /* Return status */
-  long *offset;                        /* Looping var for offset table */
-
-
-  if (sgip == NULL)
-    return (-1);
-
-  if (sgip->mode == CF_SGI_WRITE && sgip->comp != CF_SGI_COMP_NONE)
-  {
-   /*
-    * Write the scanline offset table to the file...
-    */
-
-    fseek(sgip->file, 512, SEEK_SET);
-
-    for (i = sgip->ysize * sgip->zsize, offset = sgip->table[0];
-         i > 0;
-         i --, offset ++)
-      if (putlong(offset[0], sgip->file) < 0)
-        return (-1);
-
-    for (i = sgip->ysize * sgip->zsize, offset = sgip->length[0];
-         i > 0;
-         i --, offset ++)
-      if (putlong(offset[0], sgip->file) < 0)
-        return (-1);
-  }
-
-  if (sgip->table != NULL)
-  {
-    free(sgip->table[0]);
-    free(sgip->table);
-  }
-
-  if (sgip->length != NULL)
-  {
-    free(sgip->length[0]);
-    free(sgip->length);
-  }
-
-  if (sgip->comp == CF_SGI_COMP_ARLE)
-    free(sgip->arle_row);
-
-  i = fclose(sgip->file);
-  free(sgip);
-
-  return (i);
-}
-
-
-/*
- * 'cfSGIGetRow()' - Get a row of image data from a file.
- */
-
-int                                    /* O - 0 on success, -1 on error */
-cfSGIGetRow(cf_sgi_t          *sgip,           /* I - SGI image */
-          unsigned short *row,         /* O - Row to read */
-          int            y,            /* I - Line to read */
-          int            z)            /* I - Channel to read */
-{
-  int  x;                              /* X coordinate */
-  long offset;                         /* File offset */
-
-
-  if (sgip == NULL ||
-      row == NULL ||
-      y < 0 || y >= sgip->ysize ||
-      z < 0 || z >= sgip->zsize)
-    return (-1);
-
-  switch (sgip->comp)
-  {
-    case CF_SGI_COMP_NONE :
-       /*
-        * Seek to the image row - optimize buffering by only seeking if
-        * necessary...
-        */
-
-        offset = 512 + (y + z * sgip->ysize) * sgip->xsize * sgip->bpp;
-        if (offset != ftell(sgip->file))
-          fseek(sgip->file, offset, SEEK_SET);
-
-        if (sgip->bpp == 1)
-        {
-          for (x = sgip->xsize; x > 0; x --, row ++)
-            *row = getc(sgip->file);
-        }
-        else
-        {
-          for (x = sgip->xsize; x > 0; x --, row ++)
-            *row = getshort(sgip->file);
-        }
-        break;
-
-    case CF_SGI_COMP_RLE :
-        offset = sgip->table[z][y];
-        if (offset != ftell(sgip->file))
-          fseek(sgip->file, offset, SEEK_SET);
-
-        if (sgip->bpp == 1)
-          return (read_rle8(sgip->file, row, sgip->xsize));
-        else
-          return (read_rle16(sgip->file, row, sgip->xsize));
-  }
-
-  return (0);
-}
-
-
-/*
- * 'cfSGIOpen()' - Open an SGI image file for reading or writing.
- */
-
-cf_sgi_t *                                     /* O - New image */
-cfSGIOpen(const char *filename,                /* I - File to open */
-        int        mode,               /* I - Open mode (CF_SGI_READ or CF_SGI_WRITE) */
-        int        comp,               /* I - Type of compression */
-        int        bpp,                        /* I - Bytes per pixel */
-        int        xsize,              /* I - Width of image in pixels */
-        int        ysize,              /* I - Height of image in pixels */
-        int        zsize)              /* I - Number of channels */
-{
-  cf_sgi_t     *sgip;                          /* New SGI image file */
-  FILE *file;                          /* Image file pointer */
-
-
-  if (mode == CF_SGI_READ)
-    file = fopen(filename, "rb");
-  else
-    file = fopen(filename, "wb+");
-
-  if (file == NULL)
-    return (NULL);
-
-  if ((sgip = cfSGIOpenFile(file, mode, comp, bpp, xsize, ysize, zsize)) == NULL)
-    fclose(file);
-
-  return (sgip);
-}
-
-
-/*
- * 'cfSGIOpenFile()' - Open an SGI image file for reading or writing.
- */
-
-cf_sgi_t *                                     /* O - New image */
-cfSGIOpenFile(FILE *file,                      /* I - File to open */
-            int  mode,                 /* I - Open mode (CF_SGI_READ or CF_SGI_WRITE) */
-            int  comp,                 /* I - Type of compression */
-            int  bpp,                  /* I - Bytes per pixel */
-            int  xsize,                        /* I - Width of image in pixels */
-            int  ysize,                        /* I - Height of image in pixels */
-            int  zsize)                        /* I - Number of channels */
-{
-  int  i, j;                           /* Looping var */
-  char name[80];                       /* Name of file in image header */
-  short        magic;                          /* Magic number */
-  cf_sgi_t     *sgip;                          /* New image pointer */
-
-
-  if ((sgip = calloc(sizeof(cf_sgi_t), 1)) == NULL)
-    return (NULL);
-
-  sgip->file = file;
-
-  switch (mode)
-  {
-    case CF_SGI_READ :
-        sgip->mode = CF_SGI_READ;
-
-        magic = getshort(sgip->file);
-        if (magic != CF_SGI_MAGIC)
-        {
-          free(sgip);
-          return (NULL);
-        }
-
-        sgip->comp  = getc(sgip->file);
-        sgip->bpp   = getc(sgip->file);
-        getshort(sgip->file);          /* Dimensions */
-        sgip->xsize = getshort(sgip->file);
-        sgip->ysize = getshort(sgip->file);
-        sgip->zsize = getshort(sgip->file);
-        getlong(sgip->file);           /* Minimum pixel */
-        getlong(sgip->file);           /* Maximum pixel */
-
-        if (sgip->comp)
-        {
-         /*
-          * This file is compressed; read the scanline tables...
-          */
-
-          fseek(sgip->file, 512, SEEK_SET);
-
-          if ((sgip->table = calloc(sgip->zsize, sizeof(long *))) == NULL)
-         {
-           free(sgip);
-           return (NULL);
-         }
-
-          if ((sgip->table[0] = calloc(sgip->ysize * sgip->zsize,
-                                      sizeof(long))) == NULL)
-          {
-           free(sgip->table);
-           free(sgip);
-           return (NULL);
-         }
-
-          for (i = 1; i < sgip->zsize; i ++)
-            sgip->table[i] = sgip->table[0] + i * sgip->ysize;
-
-          for (i = 0; i < sgip->zsize; i ++)
-            for (j = 0; j < sgip->ysize; j ++)
-              sgip->table[i][j] = getlong(sgip->file);
-        }
-        break;
-
-    case CF_SGI_WRITE :
-       if (xsize < 1 ||
-           ysize < 1 ||
-           zsize < 1 ||
-           bpp < 1 || bpp > 2 ||
-           comp < CF_SGI_COMP_NONE || comp > CF_SGI_COMP_ARLE)
-        {
-          free(sgip);
-          return (NULL);
-        }
-
-        sgip->mode = CF_SGI_WRITE;
-
-        putshort(CF_SGI_MAGIC, sgip->file);
-        putc(((sgip->comp = comp) != 0) ? '1': '0', sgip->file);
-        putc(sgip->bpp = bpp, sgip->file);
-        putshort(3, sgip->file);               /* Dimensions */
-        putshort(sgip->xsize = xsize, sgip->file);
-        putshort(sgip->ysize = ysize, sgip->file);
-        putshort(sgip->zsize = zsize, sgip->file);
-        if (bpp == 1)
-        {
-          putlong(0, sgip->file);      /* Minimum pixel */
-          putlong(255, sgip->file);    /* Maximum pixel */
-        }
-        else
-        {
-          putlong(-32768, sgip->file); /* Minimum pixel */
-          putlong(32767, sgip->file);  /* Maximum pixel */
-        }
-        putlong(0, sgip->file);                /* Reserved */
-
-        memset(name, 0, sizeof(name));
-        fwrite(name, sizeof(name), 1, sgip->file);
-
-        for (i = 0; i < 102; i ++)
-          putlong(0, sgip->file);
-
-        switch (comp)
-        {
-          case CF_SGI_COMP_NONE : /* No compression */
-             /*
-              * This file is uncompressed.  To avoid problems with sparse files,
-              * we need to write blank pixels for the entire image...
-              */
-
-              if (bpp == 1)
-              {
-               for (i = xsize * ysize * zsize; i > 0; i --)
-                 putc(0, sgip->file);
-              }
-              else
-              {
-               for (i = xsize * ysize * zsize; i > 0; i --)
-                 putshort(0, sgip->file);
-              }
-              break;
-
-          case CF_SGI_COMP_ARLE : /* Aggressive RLE */
-              sgip->arle_row    = calloc(xsize, sizeof(unsigned short));
-              sgip->arle_offset = 0;
-
-          case CF_SGI_COMP_RLE : /* Run-Length Encoding */
-             /*
-              * This file is compressed; write the (blank) scanline tables...
-              */
-
-              for (i = 2 * ysize * zsize; i > 0; i --)
-               putlong(0, sgip->file);
-
-              sgip->firstrow = ftell(sgip->file);
-              sgip->nextrow  = ftell(sgip->file);
-              if ((sgip->table = calloc(sgip->zsize, sizeof(long *))) == NULL)
-             {
-               free(sgip);
-               return (NULL);
-             }
-
-              if ((sgip->table[0] = calloc(sgip->ysize * sgip->zsize,
-                                          sizeof(long))) == NULL)
-              {
-               free(sgip->table);
-               free(sgip);
-               return (NULL);
-             }
-
-              for (i = 1; i < sgip->zsize; i ++)
-               sgip->table[i] = sgip->table[0] + i * sgip->ysize;
-
-              if ((sgip->length = calloc(sgip->zsize, sizeof(long *))) == NULL)
-             {
-               free(sgip->table);
-               free(sgip);
-               return (NULL);
-             }
-
-              if ((sgip->length[0] = calloc(sgip->ysize * sgip->zsize,
-                                           sizeof(long))) == NULL)
-              {
-               free(sgip->length);
-               free(sgip->table);
-               free(sgip);
-               return (NULL);
-             }
-
-              for (i = 1; i < sgip->zsize; i ++)
-               sgip->length[i] = sgip->length[0] + i * sgip->ysize;
-              break;
-        }
-        break;
-
-    default :
-        free(sgip);
-        return (NULL);
-  }
-
-  return (sgip);
-}
-
-
-/*
- * 'cfSGIPutRow()' - Put a row of image data to a file.
- */
-
-int                                    /* O - 0 on success, -1 on error */
-cfSGIPutRow(cf_sgi_t          *sgip,           /* I - SGI image */
-          unsigned short *row,         /* I - Row to write */
-          int            y,            /* I - Line to write */
-          int            z)            /* I - Channel to write */
-{
-  int  x;                              /* X coordinate */
-  long offset;                         /* File offset */
-
-
-  if (sgip == NULL ||
-      row == NULL ||
-      y < 0 || y >= sgip->ysize ||
-      z < 0 || z >= sgip->zsize)
-    return (-1);
-
-  switch (sgip->comp)
-  {
-    case CF_SGI_COMP_NONE :
-       /*
-        * Seek to the image row - optimize buffering by only seeking if
-        * necessary...
-        */
-
-        offset = 512 + (y + z * sgip->ysize) * sgip->xsize * sgip->bpp;
-        if (offset != ftell(sgip->file))
-          fseek(sgip->file, offset, SEEK_SET);
-
-        if (sgip->bpp == 1)
-        {
-          for (x = sgip->xsize; x > 0; x --, row ++)
-            putc(*row, sgip->file);
-        }
-        else
-        {
-          for (x = sgip->xsize; x > 0; x --, row ++)
-            putshort(*row, sgip->file);
-        }
-        break;
-
-    case CF_SGI_COMP_ARLE :
-        if (sgip->table[z][y] != 0)
-          return (-1);
-
-       /*
-        * First check the last row written...
-        */
-
-        if (sgip->arle_offset > 0)
-        {
-          for (x = 0; x < sgip->xsize; x ++)
-            if (row[x] != sgip->arle_row[x])
-              break;
-
-          if (x == sgip->xsize)
-          {
-            sgip->table[z][y]  = sgip->arle_offset;
-            sgip->length[z][y] = sgip->arle_length;
-            return (0);
-          }
-        }
-
-       /*
-        * If that didn't match, search all the previous rows...
-        */
-
-        fseek(sgip->file, sgip->firstrow, SEEK_SET);
-
-        if (sgip->bpp == 1)
-        {
-          for (;;)
-          {
-            sgip->arle_offset = ftell(sgip->file);
-            if ((sgip->arle_length = read_rle8(sgip->file, sgip->arle_row, sgip->xsize)) < 0)
-            {
-              x = 0;
-              break;
-            }
-
-            if (memcmp(row, sgip->arle_row, sgip->xsize * sizeof(unsigned short)) == 0)
-           {
-             x = sgip->xsize;
-             break;
-           }
-          }
-        }
-        else
-        {
-          for (;;)
-          {
-            sgip->arle_offset = ftell(sgip->file);
-            if ((sgip->arle_length = read_rle16(sgip->file, sgip->arle_row, sgip->xsize)) < 0)
-            {
-              x = 0;
-              break;
-            }
-
-            if (memcmp(row, sgip->arle_row, sgip->xsize * sizeof(unsigned short)) == 0)
-           {
-             x = sgip->xsize;
-             break;
-           }
-          }
-        }
-
-       if (x == sgip->xsize)
-       {
-          sgip->table[z][y]  = sgip->arle_offset;
-          sgip->length[z][y] = sgip->arle_length;
-          return (0);
-       }
-       else
-         fseek(sgip->file, 0, SEEK_END);       /* Clear EOF */
-
-    case CF_SGI_COMP_RLE :
-        if (sgip->table[z][y] != 0)
-          return (-1);
-
-        offset = sgip->table[z][y] = sgip->nextrow;
-
-        if (offset != ftell(sgip->file))
-          fseek(sgip->file, offset, SEEK_SET);
-
-        if (sgip->bpp == 1)
-          x = write_rle8(sgip->file, row, sgip->xsize);
-        else
-          x = write_rle16(sgip->file, row, sgip->xsize);
-
-        if (sgip->comp == CF_SGI_COMP_ARLE)
-        {
-          sgip->arle_offset = offset;
-          sgip->arle_length = x;
-          memcpy(sgip->arle_row, row, sgip->xsize * sizeof(unsigned short));
-        }
-
-        sgip->nextrow      = ftell(sgip->file);
-        sgip->length[z][y] = x;
-
-        return (x);
-  }
-
-  return (0);
-}
-
-
-/*
- * 'getlong()' - Get a 32-bit big-endian integer.
- */
-
-static int                             /* O - Long value */
-getlong(FILE *fp)                      /* I - File to read from */
-{
-  unsigned char        b[4];                   /* Bytes from file */
-
-
-  if (fread(b, 4, 1, fp) == 0 && ferror(fp))
-    DEBUG_printf(("Error reading file!"));
-  return ((b[0] << 24) | (b[1] << 16) | (b[2] << 8) | b[3]);
-}
-
-
-/*
- * 'getshort()' - Get a 16-bit big-endian integer.
- */
-
-static int                             /* O - Short value */
-getshort(FILE *fp)                     /* I - File to read from */
-{
-  unsigned char        b[2];                   /* Bytes from file */
-
-
-  if (fread(b, 2, 1, fp) == 0 && ferror(fp))
-    DEBUG_printf(("Error reading file!"));
-  return ((b[0] << 8) | b[1]);
-}
-
-
-/*
- * 'putlong()' - Put a 32-bit big-endian integer.
- */
-
-static int                             /* O - 0 on success, -1 on error */
-putlong(long n,                                /* I - Long to write */
-        FILE *fp)                      /* I - File to write to */
-{
-  if (putc(n >> 24, fp) == EOF)
-    return (EOF);
-  if (putc(n >> 16, fp) == EOF)
-    return (EOF);
-  if (putc(n >> 8, fp) == EOF)
-    return (EOF);
-  if (putc(n, fp) == EOF)
-    return (EOF);
-  else
-    return (0);
-}
-
-
-/*
- * 'putshort()' - Put a 16-bit big-endian integer.
- */
-
-static int                             /* O - 0 on success, -1 on error */
-putshort(unsigned short n,             /* I - Short to write */
-         FILE           *fp)           /* I - File to write to */
-{
-  if (putc(n >> 8, fp) == EOF)
-    return (EOF);
-  if (putc(n, fp) == EOF)
-    return (EOF);
-  else
-    return (0);
-}
-
-
-/*
- * 'read_rle8()' - Read 8-bit RLE data.
- */
-
-static int                             /* O - Value on success, -1 on error */
-read_rle8(FILE           *fp,          /* I - File to read from */
-          unsigned short *row,         /* O - Data */
-          int            xsize)                /* I - Width of data in pixels */
-{
-  int  i,                              /* Looping var */
-       ch,                             /* Current character */
-       count,                          /* RLE count */
-       length;                         /* Number of bytes read... */
-
-
-  length = 0;
-
-  while (xsize > 0)
-  {
-    if ((ch = getc(fp)) == EOF)
-      return (-1);
-    length ++;
-
-    count = ch & 127;
-    if (count == 0)
-      break;
-
-    if (ch & 128)
-    {
-      for (i = 0; i < count; i ++, row ++, xsize --, length ++)
-        if (xsize > 0)
-         *row = getc(fp);
-    }
-    else
-    {
-      ch = getc(fp);
-      length ++;
-      for (i = 0; i < count && xsize > 0; i ++, row ++, xsize --)
-        *row = ch;
-    }
-  }
-
-  return (xsize > 0 ? -1 : length);
-}
-
-
-/*
- * 'read_rle16()' - Read 16-bit RLE data.
- */
-
-static int                             /* O - Value on success, -1 on error */
-read_rle16(FILE           *fp,         /* I - File to read from */
-           unsigned short *row,                /* O - Data */
-           int            xsize)       /* I - Width of data in pixels */
-{
-  int  i,                              /* Looping var */
-       ch,                             /* Current character */
-       count,                          /* RLE count */
-       length;                         /* Number of bytes read... */
-
-
-  length = 0;
-
-  while (xsize > 0)
-  {
-    if ((ch = getshort(fp)) == EOF)
-      return (-1);
-    length ++;
-
-    count = ch & 127;
-    if (count == 0)
-      break;
-
-    if (ch & 128)
-    {
-      for (i = 0; i < count; i ++, row ++, xsize --, length ++)
-        if (xsize > 0)
-         *row = getshort(fp);
-    }
-    else
-    {
-      ch = getshort(fp);
-      length ++;
-      for (i = 0; i < count && xsize > 0; i ++, row ++, xsize --)
-       *row = ch;
-    }
-  }
-
-  return (xsize > 0 ? -1 : length * 2);
-}
-
-
-/*
- * 'write_rle8()' - Write 8-bit RLE data.
- */
-
-static int                             /* O - Length on success, -1 on error */
-write_rle8(FILE           *fp,         /* I - File to write to */
-           unsigned short *row,                /* I - Data */
-           int            xsize)       /* I - Width of data in pixels */
-{
-  int                  length,         /* Length in bytes */
-                       count,          /* Number of repeating pixels */
-                       i,              /* Looping var */
-                       x;              /* Current column */
-  unsigned short       *start,         /* Start of current sequence */
-                       repeat;         /* Repeated pixel */
-
-
-  for (x = xsize, length = 0; x > 0;)
-  {
-    start = row;
-    row   += 2;
-    x     -= 2;
-
-    while (x > 0 && (row[-2] != row[-1] || row[-1] != row[0]))
-    {
-      row ++;
-      x --;
-    }
-
-    row -= 2;
-    x   += 2;
-
-    count = row - start;
-    while (count > 0)
-    {
-      i     = count > 126 ? 126 : count;
-      count -= i;
-
-      if (putc(128 | i, fp) == EOF)
-        return (-1);
-      length ++;
-
-      while (i > 0)
-      {
-       if (putc(*start, fp) == EOF)
-          return (-1);
-        start ++;
-        i --;
-        length ++;
-      }
-    }
-
-    if (x <= 0)
-      break;
-
-    start  = row;
-    repeat = row[0];
-
-    row ++;
-    x --;
-
-    while (x > 0 && *row == repeat)
-    {
-      row ++;
-      x --;
-    }
-
-    count = row - start;
-    while (count > 0)
-    {
-      i     = count > 126 ? 126 : count;
-      count -= i;
-
-      if (putc(i, fp) == EOF)
-        return (-1);
-      length ++;
-
-      if (putc(repeat, fp) == EOF)
-        return (-1);
-      length ++;
-    }
-  }
-
-  length ++;
-
-  if (putc(0, fp) == EOF)
-    return (-1);
-  else
-    return (length);
-}
-
-
-/*
- * 'write_rle16()' - Write 16-bit RLE data.
- */
-
-static int                             /* O - Length in words */
-write_rle16(FILE           *fp,                /* I - File to write to */
-            unsigned short *row,       /* I - Data */
-            int            xsize)      /* I - Width of data in pixels */
-{
-  int                  length,         /* Length in words */
-                       count,          /* Number of repeating pixels */
-                       i,              /* Looping var */
-                       x;              /* Current column */
-  unsigned short       *start,         /* Start of current sequence */
-                       repeat;         /* Repeated pixel */
-
-
-  for (x = xsize, length = 0; x > 0;)
-  {
-    start = row;
-    row   += 2;
-    x     -= 2;
-
-    while (x > 0 && (row[-2] != row[-1] || row[-1] != row[0]))
-    {
-      row ++;
-      x --;
-    }
-
-    row -= 2;
-    x   += 2;
-
-    count = row - start;
-    while (count > 0)
-    {
-      i     = count > 126 ? 126 : count;
-      count -= i;
-
-      if (putshort(128 | i, fp) == EOF)
-        return (-1);
-      length ++;
-
-      while (i > 0)
-      {
-       if (putshort(*start, fp) == EOF)
-          return (-1);
-        start ++;
-        i --;
-        length ++;
-      }
-    }
-
-    if (x <= 0)
-      break;
-
-    start  = row;
-    repeat = row[0];
-
-    row ++;
-    x --;
-
-    while (x > 0 && *row == repeat)
-    {
-      row ++;
-      x --;
-    }
-
-    count = row - start;
-    while (count > 0)
-    {
-      i     = count > 126 ? 126 : count;
-      count -= i;
-
-      if (putshort(i, fp) == EOF)
-        return (-1);
-      length ++;
-
-      if (putshort(repeat, fp) == EOF)
-        return (-1);
-      length ++;
-    }
-  }
-
-  length ++;
-
-  if (putshort(0, fp) == EOF)
-    return (-1);
-  else
-    return (2 * length);
-}
-