From: Lutz M?l. <lu...@us...> - 2004-05-20 10:50:47
|
Update of /cvsroot/libexif/libexif/libexif/olympus In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13633/libexif/olympus Modified Files: exif-mnote-data-olympus.c Log Message: 2004-05-15 Lutz Mueller <lu...@us...> * libexif/exif-log.[c,h]: New. Proposal for handling of debugging messages. Index: exif-mnote-data-olympus.c =================================================================== RCS file: /cvsroot/libexif/libexif/libexif/olympus/exif-mnote-data-olympus.c,v retrieving revision 1.12 retrieving revision 1.13 diff -u -d -r1.12 -r1.13 --- exif-mnote-data-olympus.c 11 May 2004 15:11:17 -0000 1.12 +++ exif-mnote-data-olympus.c 20 May 2004 10:50:36 -0000 1.13 @@ -73,7 +73,7 @@ { ExifMnoteDataOlympus *n = (ExifMnoteDataOlympus *) ne; unsigned int i, o, s, doff, base = 0, o2 = 6; - int datao; + int datao = 0; if (!n || !buf || !buf_size) return; @@ -82,42 +82,43 @@ */ *buf_size = 6 + 2 + 2 + n->count * 12; switch (n->version) { - case 0: /* Olympus */ - *buf = malloc (*buf_size); - if (!*buf) return; - memset (*buf, 0, *buf_size); + case 0: /* Olympus */ + *buf = malloc (*buf_size); + if (!*buf) return; + memset (*buf, 0, *buf_size); - /* Write the header and the number of entries. */ - strcpy (*buf, "OLYMP"); - o2 += 2; - datao = n->offset; - break; - case 1: /* Nikon v1 */ - base = MNOTE_NIKON1_TAG_BASE; - *buf_size -= 8; - /* Fall through */ - case 2: /* Nikon v2 */ - *buf_size += 8; - *buf = malloc (*buf_size); - if (!*buf) return; - memset (*buf, 0, *buf_size); + /* Write the header and the number of entries. */ + strcpy (*buf, "OLYMP"); + o2 += 2; + datao = n->offset; + break; + case 1: /* Nikon v1 */ + base = MNOTE_NIKON1_TAG_BASE; + *buf_size -= 8; + /* Fall through */ + case 2: /* Nikon v2 */ + *buf_size += 8; + *buf = malloc (*buf_size); + if (!*buf) return; + memset (*buf, 0, *buf_size); - /* Write the header and the number of entries. */ - strcpy (*buf, "Nikon"); - (*buf)[6] = n->version; - o2 += 2; *buf_size += 2; - if (n->version == 2) { - exif_set_short (*buf + 10, n->order, (ExifShort) ((n->order == EXIF_BYTE_ORDER_INTEL) ? 'II' : 'MM')); - exif_set_short (*buf + 12, n->order, (ExifShort) 0x2A); - exif_set_long (*buf + 14, n->order, (ExifShort) 8); - o2 += 2 + 8; - } - datao = -10; - break; + /* Write the header and the number of entries. */ + strcpy (*buf, "Nikon"); + (*buf)[6] = n->version; + o2 += 2; *buf_size += 2; + if (n->version == 2) { + exif_set_short (*buf + 10, n->order, (ExifShort) ((n->order == EXIF_BYTE_ORDER_INTEL) ? 'II' : 'MM')); + exif_set_short (*buf + 12, n->order, (ExifShort) 0x2A); + exif_set_long (*buf + 14, n->order, (ExifShort) 8); + o2 += 2 + 8; + } + datao = -10; + break; } exif_set_short (*buf + o2, n->order, (ExifShort) n->count); - o2 += 2; + o2 += 2; + /* Save each entry */ for (i = 0; i < n->count; i++) { o = o2 + i * 12; @@ -159,6 +160,9 @@ if (!n || !buf) return; + exif_log (en->log, EXIF_LOG_CODE_DEBUG, "ExifMnoteOlympus", + "Trying to parse Olympus/Nikon maker note..."); + /* * Olympus headers start with "OLYMP" and need to have at least * a size of 22 bytes (6 for 'OLYMP', 2 other bytes, 2 for the @@ -212,8 +216,8 @@ /* Parse the entries */ for (i = 0; i < c; i++) { - o = o2 + 12 * i; - if (o + 12 > buf_size) return; + o = o2 + 12 * i; + if (o + 12 > buf_size) return; n->count = i + 1; n->entries[i].tag = exif_get_short (buf + o, n->order) + base; @@ -221,6 +225,10 @@ n->entries[i].components = exif_get_long (buf + o + 4, n->order); n->entries[i].order = n->order; + exif_log (en->log, EXIF_LOG_CODE_DEBUG, "ExifMnoteOlympus", + "Loading entry 0x%x ('%s')...", n->entries[i].tag, + mnote_olympus_tag_get_name (n->entries[i].tag)); + /* * Size? If bigger than 4 bytes, the actual data is not * in the entry but somewhere else (offset). |