comparison src/format_raw.c @ 673:fbebf5cf4a55

Do not use printf() directly but use new wrapper function log_printf() instead.
author zas_
date Fri, 16 May 2008 12:16:49 +0000
parents 8268cbe682f1
children f606e8962329
comparison
equal deleted inserted replaced
672:913eb0ba99a6 673:fbebf5cf4a55
341 341
342 if (!entry || !entry->func_parse) return FALSE; 342 if (!entry || !entry->func_parse) return FALSE;
343 343
344 if (fstat(fd, &st) == -1) 344 if (fstat(fd, &st) == -1)
345 { 345 {
346 printf("Failed to stat file %d\n", fd); 346 log_printf("Failed to stat file %d\n", fd);
347 return FALSE; 347 return FALSE;
348 } 348 }
349 map_len = st.st_size; 349 map_len = st.st_size;
350 map_data = mmap(0, map_len, PROT_READ, MAP_PRIVATE, fd, 0); 350 map_data = mmap(0, map_len, PROT_READ, MAP_PRIVATE, fd, 0);
351 if (map_data == MAP_FAILED) 351 if (map_data == MAP_FAILED)
352 { 352 {
353 printf("Failed to mmap file %d\n", fd); 353 log_printf("Failed to mmap file %d\n", fd);
354 return FALSE; 354 return FALSE;
355 } 355 }
356 356
357 success = format_raw_parse(entry, map_data, map_len, image_offset, exif_offset); 357 success = format_raw_parse(entry, map_data, map_len, image_offset, exif_offset);
358 358
359 if (munmap(map_data, map_len) == -1) 359 if (munmap(map_data, map_len) == -1)
360 { 360 {
361 printf("Failed to unmap file %d\n", fd); 361 log_printf("Failed to unmap file %d\n", fd);
362 } 362 }
363 363
364 if (success && image_offset) 364 if (success && image_offset)
365 { 365 {
366 if (lseek(fd, *image_offset, SEEK_SET) != *image_offset) 366 if (lseek(fd, *image_offset, SEEK_SET) != *image_offset)
367 { 367 {
368 printf("Failed to seek to embedded image\n"); 368 log_printf("Failed to seek to embedded image\n");
369 369
370 *image_offset = 0; 370 *image_offset = 0;
371 if (*exif_offset) *exif_offset = 0; 371 if (*exif_offset) *exif_offset = 0;
372 success = FALSE; 372 success = FALSE;
373 } 373 }
460 else 460 else
461 { 461 {
462 segment = offset + EXIF_TIFD_OFFSET_DATA; 462 segment = offset + EXIF_TIFD_OFFSET_DATA;
463 } 463 }
464 464
465 printf("%*stag:0x%04X (%05d), type:%2d %9s, len:%6d [%02X %02X %02X %02X] @ offset:%d\n", 465 log_printf("%*stag:0x%04X (%05d), type:%2d %9s, len:%6d [%02X %02X %02X %02X] @ offset:%d\n",
466 level, "", tag, tag, type, 466 level, "", tag, tag, type,
467 (type < EXIF_FORMAT_COUNT) ? ExifFormatList[type].short_name : "???", count, 467 (type < EXIF_FORMAT_COUNT) ? ExifFormatList[type].short_name : "???", count,
468 data[segment], data[segment + 1], data[segment + 2], data[segment + 3], segment); 468 data[segment], data[segment + 1], data[segment + 2], data[segment + 3], segment);
469 469
470 if (tag == 0x8769 || tag == 0x14a) 470 if (tag == 0x8769 || tag == 0x14a)
471 { 471 {
472 gint i; 472 gint i;
473 473
474 printf("%*s~~~ found %s table\n", level, "", (tag == 0x14a) ? "subIFD" : "EXIF" ); 474 log_printf("%*s~~~ found %s table\n", level, "", (tag == 0x14a) ? "subIFD" : "EXIF" );
475 475
476 for (i = 0; i < count; i++) 476 for (i = 0; i < count; i++)
477 { 477 {
478 guint subset; 478 guint subset;
479 479
481 format_debug_tiff_table(data, len, subset, bo, level + 1); 481 format_debug_tiff_table(data, len, subset, bo, level + 1);
482 } 482 }
483 } 483 }
484 else if (tag == 0x8773 && type == EXIF_FORMAT_UNDEFINED) 484 else if (tag == 0x8773 && type == EXIF_FORMAT_UNDEFINED)
485 { 485 {
486 printf("%*s~~~ found ICC color profile at offset %d, length %d\n", level, "", segment, seg_len); 486 log_printf("%*s~~~ found ICC color profile at offset %d, length %d\n", level, "", segment, seg_len);
487 } 487 }
488 else if (tag == 0x201 && (type == EXIF_FORMAT_LONG_UNSIGNED || type == EXIF_FORMAT_LONG)) 488 else if (tag == 0x201 && (type == EXIF_FORMAT_LONG_UNSIGNED || type == EXIF_FORMAT_LONG))
489 { 489 {
490 guint subset = exif_byte_get_int32(data + segment, bo); 490 guint subset = exif_byte_get_int32(data + segment, bo);
491 printf("%*s~~~ found jpeg data at offset %d\n", level, "", subset); 491 log_printf("%*s~~~ found jpeg data at offset %d\n", level, "", subset);
492 } 492 }
493 else if (tag == 0x202 && (type == EXIF_FORMAT_LONG_UNSIGNED || type == EXIF_FORMAT_LONG)) 493 else if (tag == 0x202 && (type == EXIF_FORMAT_LONG_UNSIGNED || type == EXIF_FORMAT_LONG))
494 { 494 {
495 guint subset = exif_byte_get_int32(data + segment, bo); 495 guint subset = exif_byte_get_int32(data + segment, bo);
496 printf("%*s~~~ found jpeg data length of %d\n", level, "", subset); 496 log_printf("%*s~~~ found jpeg data length of %d\n", level, "", subset);
497 } 497 }
498 } 498 }
499 499
500 static guint format_debug_tiff_table(unsigned char *data, const guint len, guint offset, 500 static guint format_debug_tiff_table(unsigned char *data, const guint len, guint offset,
501 ExifByteOrder bo, gint level) 501 ExifByteOrder bo, gint level)
509 509
510 count = exif_byte_get_int16(data + offset, bo); 510 count = exif_byte_get_int16(data + offset, bo);
511 offset += 2; 511 offset += 2;
512 if (len < offset + count * EXIF_TIFD_SIZE + 4) return 0; 512 if (len < offset + count * EXIF_TIFD_SIZE + 4) return 0;
513 513
514 printf("%*s== tiff table #%d has %d entries ==\n", level, "", level, count); 514 log_printf("%*s== tiff table #%d has %d entries ==\n", level, "", level, count);
515 515
516 for (i = 0; i < count; i++) 516 for (i = 0; i < count; i++)
517 { 517 {
518 format_debug_tiff_entry(data, len, offset + i * EXIF_TIFD_SIZE, bo, level); 518 format_debug_tiff_entry(data, len, offset + i * EXIF_TIFD_SIZE, bo, level);
519 } 519 }
520 520
521 printf("%*s----------- end of #%d ------------\n", level, "", level); 521 log_printf("%*s----------- end of #%d ------------\n", level, "", level);
522 522
523 return exif_byte_get_int32(data + offset + count * EXIF_TIFD_SIZE, bo); 523 return exif_byte_get_int32(data + offset + count * EXIF_TIFD_SIZE, bo);
524 } 524 }
525 525
526 gint format_debug_tiff_raw(unsigned char *data, const guint len, 526 gint format_debug_tiff_raw(unsigned char *data, const guint len,
544 else 544 else
545 { 545 {
546 return FALSE; 546 return FALSE;
547 } 547 }
548 548
549 printf("*** debug parsing tiff\n"); 549 log_printf("*** debug parsing tiff\n");
550 550
551 offset = exif_byte_get_int32(data + 4, bo); 551 offset = exif_byte_get_int32(data + 4, bo);
552 level = 0; 552 level = 0;
553 while (offset && level < EXIF_TIFF_MAX_LEVELS) 553 while (offset && level < EXIF_TIFF_MAX_LEVELS)
554 { 554 {
555 offset = format_debug_tiff_table(data, len, offset, bo, 0); 555 offset = format_debug_tiff_table(data, len, offset, bo, 0);
556 level++; 556 level++;
557 } 557 }
558 558
559 printf("*** end\n"); 559 log_printf("*** end\n");
560 560
561 /* we are debugging, not trying to return any data */ 561 /* we are debugging, not trying to return any data */
562 return FALSE; 562 return FALSE;
563 } 563 }
564 #endif 564 #endif