~yves-pelletier/libecbufr/documentation

« back to all changes in this revision

Viewing changes to API/Sources/bufr_template.c

  • Committer: Vanh Souvanlasy
  • Date: 2009-10-29 18:49:11 UTC
  • Revision ID: afsmvan@atlantis-20091029184911-g64ip1xmslgp4r3m
Fix for bug#389027

Show diffs side-by-side

added added

removed removed

Lines of Context:
116
116
         e = bufr_fetch_tableB( tbls, descs[i].descriptor );
117
117
         if (e == NULL) 
118
118
            {
119
 
            has_error = 1;
120
 
            sprintf( errmsg, "Error: unknown descriptor %d\n", descs[i].descriptor );
 
119
            if ((i > 0) && bufr_is_sig_datawidth(descs[i-1].descriptor))
 
120
               { 
 
121
               /* known bit width, acceptable  */
 
122
               if (bufr_is_debug())
 
123
                  {
 
124
                  sprintf( errmsg, "Descriptor %d has sig data width %d\n", 
 
125
                        descs[i].descriptor, descs[i-1].descriptor );
 
126
                  bufr_print_debug( errmsg );
 
127
                  }
 
128
               }
 
129
            else
 
130
               {
 
131
            sprintf( errmsg, "Descriptor %d ??\n", descs[i].descriptor );
121
132
            bufr_print_debug( errmsg );
 
133
               has_error = 1;
 
134
               sprintf( errmsg, "Error: unknown descriptor %d\n", descs[i].descriptor );
 
135
               bufr_print_debug( errmsg );
 
136
               }
122
137
            }
123
138
         }
124
139
      }
317
332
         e = bufr_fetch_tableB( tmplt->tables, code->descriptor );
318
333
         if (e == NULL)
319
334
            {
320
 
            bufr_print_debug( "Error: template contains errors\n" );
321
 
            bufr_free_sequence( gabarit );
322
 
            return -1;
 
335
            BufrDescValue    *pcode;
 
336
            char             errmsg[256];
 
337
 
 
338
            pcode = (BufrDescValue *)arr_get( tmplt->codets, i-1 );
 
339
            if ((i > 0) && bufr_is_sig_datawidth( pcode->descriptor ))
 
340
               { 
 
341
               /* known bit width, acceptable  */
 
342
               if (bufr_is_debug())
 
343
                  {
 
344
                  sprintf( errmsg, "Descriptor %d has sig data width %d\n", 
 
345
                        code->descriptor, pcode->descriptor );
 
346
                  bufr_print_debug( errmsg );
 
347
                  }
 
348
               }
 
349
            else
 
350
               {
 
351
               bufr_print_debug( "Error: template contains errors\n" );
 
352
               bufr_free_sequence( gabarit );
 
353
               return -1;
 
354
               }
323
355
            }
324
356
         }
325
357
      bc = bufr_create_descriptor ( tmplt->tables, code->descriptor );
625
657
      code.descriptor = icode ;
626
658
      code.values = NULL;
627
659
      code.nbval = 0;
628
 
      if (bufr_is_table_b( icode ))
629
 
         {
630
 
         e = bufr_fetch_tableB( tbls, icode );
631
 
         if (e == NULL)
632
 
            {
633
 
            sprintf( errmsg, "Error: unknown descriptor %d, abort\n", icode );
634
 
            bufr_print_debug( errmsg );
635
 
            error = 1;
636
 
            break;
637
 
            }
638
 
         }
 
660
 
639
661
      tok = strtok_r( NULL, " \t\n,=", &ptr );
640
662
      if (tok)
641
663
         {