]> granicus.if.org Git - openjpeg/commitdiff
fixed a problem in convert.c when multiple comments
authorAntonin Descampe <antonin@gmail.com>
Wed, 25 Jan 2006 15:45:01 +0000 (15:45 +0000)
committerAntonin Descampe <antonin@gmail.com>
Wed, 25 Jan 2006 15:45:01 +0000 (15:45 +0000)
ChangeLog
codec/convert.c

index 7cf688830d8c9d8efe0fa30fc545e5b4acd5e5ca..02dd7de852fa16188dafd19225880c7ed8ddebc0 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -6,6 +6,7 @@ What's New for OpenJPEG
 + : added
 
 January 25, 2006
+* [Antonin Descampe] fixed a problem in convert.c when multiple comments
 + [Antonin Descampe] added cmake files to the project
 ! [Antonin Descampe] fix.c : replaced "WIN32" by "_MSC_VER" for int64
 + [Antonin Descampe] added "OPJ_EXPORT" in openjpeg.h to generate shared lib with win32
index 82e1da6744d0735f76cacb01e8002e49f333a48b..ae46390f09c46239e147b414ea398da9085d89be 100644 (file)
@@ -844,8 +844,7 @@ opj_image_t* pnmtoimage(char *filename, opj_cparameters_t *parameters) {
        opj_image_cmptparm_t cmptparm[3];       /* maximum of 3 components */
        opj_image_t * image = NULL;
        char value;
-       char comment[256];
-
+       
        f = fopen(filename, "rb");
        if (!f) {
                fprintf(stderr, "\033[0;33mFailed to open %s for reading !!\033[0;39m\n", filename);
@@ -856,74 +855,33 @@ opj_image_t* pnmtoimage(char *filename, opj_cparameters_t *parameters) {
                return 0;
        value = fgetc(f);
 
-       switch(value) {
-               case '2':       /* greyscale image type */
-               case '5':
-               {
-                       numcomps = 1;
-                       color_space = CLRSPC_GRAY;
-
-                       fgetc(f);
-
-                       if (fgetc(f) == '#') {
-                               /* skip comments */
-                               fseek(f, 0, SEEK_SET);
-                               if (value == '2') {
-                                       fscanf(f, "P2\n");
-                               } else if (value == '5') {
-                                       fscanf(f, "P5\n");
-                               }
-                               fgets(comment, 256, f);
-                               fscanf(f, "%d %d\n255", &w, &h);
-                       } else {
-                               fseek(f, 0, SEEK_SET);
-                               if (value == '2') {
-                                       fscanf(f, "P2\n%d %d\n255", &w, &h);
-                               } else if (value == '5') {
-                                       fscanf(f, "P5\n%d %d\n255", &w, &h);
-                               }
-                       }
-                       
-                       fgetc(f);       /* <cr><lf> */
-               }
-               break;
-
-               case '3':       /* RGB image type */
-               case '6':
-               {
-                       numcomps = 3;
-                       color_space = CLRSPC_SRGB;
-
-                       fgetc(f);
-
-                       if (fgetc(f) == '#') {
-                               /* skip comments */
-                               fseek(f, 0, SEEK_SET);
-                               if (value == '3') {
-                                       fscanf(f, "P3\n");
-                               } else if (value == '6') {
-                                       fscanf(f, "P6\n");
-                               }
-                               fgets(comment, 256, f);
-                               fscanf(f, "%d %d\n255", &w, &h);
-                       } else {
-                               fseek(f, 0, SEEK_SET);
-                               if (value == '3') {
-                                       fscanf(f, "P3\n%d %d\n255", &w, &h);
-                               } else if (value == '6') {
-                                       fscanf(f, "P6\n%d %d\n255", &w, &h);
-                               }
-                       }
-                       
-                       fgetc(f);       /* <cr><lf> */
+               switch(value) {
+                       case '2':       /* greyscale image type */
+                       case '5':
+                               numcomps = 1;
+                               color_space = CLRSPC_GRAY;
+                               break;
+                               
+                       case '3':       /* RGB image type */
+                       case '6':
+                               numcomps = 3;
+                               color_space = CLRSPC_SRGB;
+                               break;
+                               
+                       default:
+                               fclose(f);
+                               return NULL;
                }
-               break;
-
-               default:
-                       fclose(f);
-                       return NULL;
-       }
-
+               
+               fgetc(f);
+               
+               /* skip comments */
+               while(fgetc(f) == '#') while(fgetc(f) != '\n');
+               
+               fseek(f, -1, SEEK_CUR);
+               fscanf(f, "%d %d\n255", &w, &h);                        
+               fgetc(f);       /* <cr><lf> */
+               
        /* initialize image components */
        memset(&cmptparm[0], 0, 3 * sizeof(opj_image_cmptparm_t));
        for(i = 0; i < numcomps; i++) {