/* test-mem.c
*
- * Copyright (C) 2002 Lutz Müller <lutz@users.sourceforge.net>
+ * Copyright (c) 2002 Lutz Mueller <lutz@users.sourceforge.net>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the
- * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
- * Boston, MA 02111-1307, USA.
+ * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+ * Boston, MA 02110-1301 USA.
*/
#include <config.h>
-#include <stdio.h>
-
#include <libexif/exif-data.h>
+#include <libexif/exif-ifd.h>
+#include <libexif/exif-loader.h>
+
+#include <stdio.h>
+#include <stdlib.h>
int
-main (int argc, char **argv)
+main ()
{
ExifData *ed;
- ExifEntry *e;
- unsigned char *eb;
+ /* ExifEntry *e; */
+ unsigned char *eb, size[2];
unsigned int ebs;
+ ExifLoader *loader;
+ unsigned int i;
printf ("Creating EXIF data...\n");
ed = exif_data_new ();
+ if (!ed) {
+ fprintf(stderr, "Out of memory\n");
+ exit(13);
+ }
- printf ("Creating EXIF entry...\n");
- e = exif_entry_new ();
- exif_content_add_entry (ed->ifd0, e);
- exif_entry_initialize (e, EXIF_TAG_EXIF_VERSION);
+ exif_data_set_data_type (ed, EXIF_DATA_TYPE_UNCOMPRESSED_CHUNKY);
- printf ("Creating another EXIF entry...\n");
- e = exif_entry_new ();
- exif_content_add_entry (ed->ifd0, e);
- exif_entry_initialize (e, EXIF_TAG_DATE_TIME);
+ printf ("Fill EXIF data with all necessary entries to follow specs...\n");
+ exif_data_fix (ed);
- printf ("Creating an EXIF entry in the EXIF IFD...\n");
- e = exif_entry_new ();
- exif_content_add_entry (ed->ifd_exif, e);
- exif_entry_initialize (e, EXIF_TAG_FLASH_PIX_VERSION);
+ /* Add a dummy thumbnail */
+ ed->size = 4;
+ ed->data = calloc(1, ed->size);
+ if (!ed->data) {
+ fprintf(stderr, "Out of memory\n");
+ exif_data_unref (ed);
+ exit(13);
+ }
exif_data_dump (ed);
exif_data_save_data (ed, &eb, &ebs);
exif_data_unref (ed);
- printf ("Loading EXIF data from memory...\n");
- ed = exif_data_new_from_data (eb, ebs);
+ printf ("Writing %i byte(s) EXIF data to loader...\n", ebs);
+ loader = exif_loader_new ();
+ if (!loader) {
+ fprintf(stderr, "Out of memory\n");
+ free (eb);
+ exit(13);
+ }
+ size[0] = (unsigned char) ebs;
+ size[1] = (unsigned char) (ebs >> 8);
+ exif_loader_write (loader, size, 2);
+ for (i = 0; i < ebs && exif_loader_write (loader, eb + i, 1); i++);
+ printf ("Wrote %i byte(s).\n", i);
+ free (eb);
+ ed = exif_loader_get_data (loader);
+ if (!ed) {
+ fprintf(stderr, "Out of memory\n");
+ exit(13);
+ }
+ exif_loader_unref (loader);
exif_data_dump (ed);
exif_data_unref (ed);