diff -ur transcode-1.0.0/import/tcxpm2rgb.c transcode-1.0.0.fg/import/tcxpm2rgb.c --- transcode-1.0.0/import/tcxpm2rgb.c 2005-07-04 09:32:57.000000000 +0200 +++ transcode-1.0.0.fg/import/tcxpm2rgb.c 2005-08-08 15:05:04.000000000 +0200 @@ -207,6 +207,16 @@ } +typedef struct colorindex +{ + char key[16]; + int index; +} colorindex; + +int colorcompar(const void *a, const void *b) +{ + return strcmp(((colorindex *)a)->key,((colorindex *)b)->key); +} int main (int argc, char *argv[]) { @@ -219,6 +229,8 @@ char *outfile = NULL, *infile=NULL; color_t *colormap; long sret; + colorindex *cindex; + while ((ch = getopt(argc, argv, "i:o:vh?")) != -1) { @@ -291,8 +303,8 @@ fgets(linebuf, MAX_BUF, f); n = sscanf(linebuf+1, "%d %d %d %d", &width, &height, &colors, &bwidth); - if (n != 4 || (bwidth > 2) || (width == 0) || (height == 0) || (colors == 0)) { - fprintf(stderr, "Error reading header\n"); + if (n != 4 || (bwidth > 4) || (width == 0) || (height == 0) || (colors == 0)) { + fprintf(stderr, "Error reading header : %s\n",linebuf); return 1; } //fprintf(stderr, "XPM Image: %dx%d; %d colors, %d byte wide\n", width, height, colors, bwidth); @@ -323,6 +335,7 @@ } keys = (char **)malloc(colors*sizeof(char *)); + cindex = (colorindex *)malloc(colors*sizeof(colorindex)); for (j=0; jindex; + // can anything be slower? + /* + if (strcmp(key,keys[j]) != 0) + for (j=0; j < colors; j++) + if (strcmp(key,keys[j]) == 0) + break; + */ + } *d++ = colormap[j].red&0xff; *d++ = colormap[j].green&0xff;