/** * iptc_dataset_dump: * @dataset: dataset to print * @indent: indentation level of the printout * * A debugging aid that prints out the contents of a dataset to * standard output. */ void iptc_dataset_dump (IptcDataSet *e, unsigned int indent) { char value[1024]; const char *name; if (!e) return; name = iptc_tag_get_name (e->record, e->tag); printf ("%*sTag: %d:%d ('%s')\n", 2*indent, "", e->record, e->tag, name ? name : ""); /* printf ("%s Format: %i ('%s')\n", buf, e->format, iptc_format_get_name (e->format)); */ printf ("%*s Size: %i\n", 2*indent, "", e->size); printf ("%*s Value: %s\n", 2*indent, "", iptc_dataset_get_as_str (e, value, sizeof(value))); }
static void foreach_dataset (IptcDataSet *dataset, void *user_data) { TrackerIptcData *data = user_data; gchar mbuffer[1024]; /* The meaning of dataset->tag DEPENDS on the value of dataset->record. * See iptc-tag.h for the relationship. * * Now, We only want record-2 tags, otherwise we'll end up mixing * for example IPTC_TAG_CITY and IPTC_TAG_CHARACTER_SET, which BOTH * have a value of 90. */ if (dataset->record != IPTC_RECORD_APP_2) return; switch (dataset->tag) { case IPTC_TAG_KEYWORDS: if (!data->keywords) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->keywords = g_strdup (mbuffer); } else { gchar *tmp = data->keywords; iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->keywords = g_strdup_printf ("%s, %s", data->keywords, mbuffer); g_free (tmp); } break; case IPTC_TAG_DATE_CREATED: if (!data->date_created) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); /* From: ex; date "2007 04 15" * To : ex. "2007-04-15T00:00:00+0200 where +0200 is offset w.r.t gmt */ data->date_created = tracker_date_format_to_iso8601 (mbuffer, IPTC_DATE_FORMAT); } break; case IPTC_TAG_BYLINE: if (!data->byline) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->byline = g_strdup (mbuffer); } break; case IPTC_TAG_CREDIT: if (!data->credit) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->credit = g_strdup (mbuffer); } break; case IPTC_TAG_COPYRIGHT_NOTICE: if (!data->copyright_notice) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->copyright_notice = g_strdup (mbuffer); } break; case IPTC_TAG_IMAGE_ORIENTATION: if (!data->image_orientation) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->image_orientation = g_strdup (fix_iptc_orientation (mbuffer)); } break; case IPTC_TAG_BYLINE_TITLE: if (!data->byline_title) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->byline_title = g_strdup (mbuffer); } break; case IPTC_TAG_CITY: if (!data->city) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->city = g_strdup (mbuffer); } break; case IPTC_TAG_STATE: if (!data->state) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->state = g_strdup (mbuffer); } break; case IPTC_TAG_SUBLOCATION: if (!data->sublocation) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->sublocation = g_strdup (mbuffer); } break; case IPTC_TAG_COUNTRY_NAME: if (!data->country_name) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->country_name = g_strdup (mbuffer); } break; case IPTC_TAG_CONTACT: if (!data->contact) { iptc_dataset_get_as_str (dataset, mbuffer, 1024); data->contact = g_strdup (mbuffer); } break; default: break; } }