1b8bc0d8aSopenharmony_ci/* test-mem.c 2b8bc0d8aSopenharmony_ci * 3b8bc0d8aSopenharmony_ci * Copyright (c) 2002 Lutz Mueller <lutz@users.sourceforge.net> 4b8bc0d8aSopenharmony_ci * 5b8bc0d8aSopenharmony_ci * This library is free software; you can redistribute it and/or 6b8bc0d8aSopenharmony_ci * modify it under the terms of the GNU Lesser General Public 7b8bc0d8aSopenharmony_ci * License as published by the Free Software Foundation; either 8b8bc0d8aSopenharmony_ci * version 2 of the License, or (at your option) any later version. 9b8bc0d8aSopenharmony_ci * 10b8bc0d8aSopenharmony_ci * This library is distributed in the hope that it will be useful, 11b8bc0d8aSopenharmony_ci * but WITHOUT ANY WARRANTY; without even the implied warranty of 12b8bc0d8aSopenharmony_ci * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13b8bc0d8aSopenharmony_ci * Lesser General Public License for more details. 14b8bc0d8aSopenharmony_ci * 15b8bc0d8aSopenharmony_ci * You should have received a copy of the GNU Lesser General Public 16b8bc0d8aSopenharmony_ci * License along with this library; if not, write to the 17b8bc0d8aSopenharmony_ci * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 18b8bc0d8aSopenharmony_ci * Boston, MA 02110-1301 USA. 19b8bc0d8aSopenharmony_ci */ 20b8bc0d8aSopenharmony_ci 21b8bc0d8aSopenharmony_ci#include <config.h> 22b8bc0d8aSopenharmony_ci 23b8bc0d8aSopenharmony_ci#include <libexif/exif-data.h> 24b8bc0d8aSopenharmony_ci#include <libexif/exif-ifd.h> 25b8bc0d8aSopenharmony_ci#include <libexif/exif-loader.h> 26b8bc0d8aSopenharmony_ci 27b8bc0d8aSopenharmony_ci#include <stdio.h> 28b8bc0d8aSopenharmony_ci#include <stdlib.h> 29b8bc0d8aSopenharmony_ci 30b8bc0d8aSopenharmony_ciint 31b8bc0d8aSopenharmony_cimain () 32b8bc0d8aSopenharmony_ci{ 33b8bc0d8aSopenharmony_ci ExifData *ed; 34b8bc0d8aSopenharmony_ci /* ExifEntry *e; */ 35b8bc0d8aSopenharmony_ci unsigned char *eb, size[2]; 36b8bc0d8aSopenharmony_ci unsigned int ebs; 37b8bc0d8aSopenharmony_ci ExifLoader *loader; 38b8bc0d8aSopenharmony_ci unsigned int i; 39b8bc0d8aSopenharmony_ci 40b8bc0d8aSopenharmony_ci printf ("Creating EXIF data...\n"); 41b8bc0d8aSopenharmony_ci ed = exif_data_new (); 42b8bc0d8aSopenharmony_ci if (!ed) { 43b8bc0d8aSopenharmony_ci fprintf(stderr, "Out of memory\n"); 44b8bc0d8aSopenharmony_ci exit(13); 45b8bc0d8aSopenharmony_ci } 46b8bc0d8aSopenharmony_ci 47b8bc0d8aSopenharmony_ci exif_data_set_data_type (ed, EXIF_DATA_TYPE_UNCOMPRESSED_CHUNKY); 48b8bc0d8aSopenharmony_ci 49b8bc0d8aSopenharmony_ci printf ("Fill EXIF data with all necessary entries to follow specs...\n"); 50b8bc0d8aSopenharmony_ci exif_data_fix (ed); 51b8bc0d8aSopenharmony_ci 52b8bc0d8aSopenharmony_ci /* Add a dummy thumbnail */ 53b8bc0d8aSopenharmony_ci ed->size = 4; 54b8bc0d8aSopenharmony_ci ed->data = calloc(1, ed->size); 55b8bc0d8aSopenharmony_ci if (!ed->data) { 56b8bc0d8aSopenharmony_ci fprintf(stderr, "Out of memory\n"); 57b8bc0d8aSopenharmony_ci exif_data_unref (ed); 58b8bc0d8aSopenharmony_ci exit(13); 59b8bc0d8aSopenharmony_ci } 60b8bc0d8aSopenharmony_ci 61b8bc0d8aSopenharmony_ci exif_data_dump (ed); 62b8bc0d8aSopenharmony_ci 63b8bc0d8aSopenharmony_ci printf ("Saving EXIF data to memory...\n"); 64b8bc0d8aSopenharmony_ci exif_data_save_data (ed, &eb, &ebs); 65b8bc0d8aSopenharmony_ci exif_data_unref (ed); 66b8bc0d8aSopenharmony_ci 67b8bc0d8aSopenharmony_ci printf ("Writing %i byte(s) EXIF data to loader...\n", ebs); 68b8bc0d8aSopenharmony_ci loader = exif_loader_new (); 69b8bc0d8aSopenharmony_ci if (!loader) { 70b8bc0d8aSopenharmony_ci fprintf(stderr, "Out of memory\n"); 71b8bc0d8aSopenharmony_ci free (eb); 72b8bc0d8aSopenharmony_ci exit(13); 73b8bc0d8aSopenharmony_ci } 74b8bc0d8aSopenharmony_ci size[0] = (unsigned char) ebs; 75b8bc0d8aSopenharmony_ci size[1] = (unsigned char) (ebs >> 8); 76b8bc0d8aSopenharmony_ci exif_loader_write (loader, size, 2); 77b8bc0d8aSopenharmony_ci for (i = 0; i < ebs && exif_loader_write (loader, eb + i, 1); i++); 78b8bc0d8aSopenharmony_ci printf ("Wrote %i byte(s).\n", i); 79b8bc0d8aSopenharmony_ci free (eb); 80b8bc0d8aSopenharmony_ci ed = exif_loader_get_data (loader); 81b8bc0d8aSopenharmony_ci if (!ed) { 82b8bc0d8aSopenharmony_ci fprintf(stderr, "Out of memory\n"); 83b8bc0d8aSopenharmony_ci exit(13); 84b8bc0d8aSopenharmony_ci } 85b8bc0d8aSopenharmony_ci exif_loader_unref (loader); 86b8bc0d8aSopenharmony_ci exif_data_dump (ed); 87b8bc0d8aSopenharmony_ci exif_data_unref (ed); 88b8bc0d8aSopenharmony_ci 89b8bc0d8aSopenharmony_ci return 0; 90b8bc0d8aSopenharmony_ci} 91