Mercurial > geeqie
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 |