2004-01-08 Lutz Mueller <lutz@users.sourceforge.net>
[platform/upstream/libexif.git] / test / test-mnote.c
1 #include <config.h>
2
3 #include <stdio.h>
4 #include <stdlib.h>
5
6 #include <libexif/exif-data.h>
7
8 static int
9 test_exif_data (ExifData *d)
10 {
11         unsigned int i, c;
12         char v[1024], *p;
13         ExifMnoteData *md;
14
15         fprintf (stdout, "Byte order: %s\n",
16                 exif_byte_order_get_name (exif_data_get_byte_order (d)));
17
18         fprintf (stdout, "Parsing maker note...\n");
19         md = exif_data_get_mnote_data (d);
20         if (!md) {
21                 fprintf (stderr, "Could not parse maker note!\n");
22                 exif_data_unref (d);
23                 return 1;
24         }
25
26         fprintf (stdout, "Increasing ref-count...\n");
27         exif_mnote_data_ref (md);
28
29         fprintf (stdout, "Decreasing ref-count...\n");
30         exif_mnote_data_unref (md);
31
32         fprintf (stdout, "Counting entries...\n");
33         c = exif_mnote_data_count (md);
34         fprintf (stdout, "Found %i entries.\n", c);
35         for (i = 0; i < c; i++) {
36                 fprintf (stdout, "Dumping entry number %i...\n", i);
37                 fprintf (stdout, "  Name: '%s'\n",
38                                 exif_mnote_data_get_name (md, i));
39                 fprintf (stdout, "  Title: '%s'\n",
40                                 exif_mnote_data_get_title (md, i));
41                 fprintf (stdout, "  Description: '%s'\n",
42                                 exif_mnote_data_get_description (md, i));
43                 p = exif_mnote_data_get_value (md, i, v, sizeof (v));
44                 if (p) { fprintf (stdout, "  Value: '%s'\n", v); }
45         }
46
47         return 0;
48 }
49
50 int
51 main (int argc, char **argv)
52 {
53         ExifData *d;
54         unsigned int buf_size;
55         unsigned char *buf;
56         int r;
57
58         if (argc <= 1) {
59                 fprintf (stderr, "You need to supply a filename!\n");
60                 return 1;
61         }
62
63         fprintf (stdout, "Loading '%s'...\n", argv[1]);
64         d = exif_data_new_from_file (argv[1]);
65         if (!d) {
66                 fprintf (stderr, "Could not load data from '%s'!\n", argv[1]);
67                 return 1;
68         }
69         fprintf (stdout, "Loaded '%s'.\n", argv[1]);
70
71         fprintf (stdout, "######### Test 1 #########\n");
72         r = test_exif_data (d);
73         if (r) return r;
74
75         exif_data_save_data (d, &buf, &buf_size);
76         exif_data_unref (d);
77         d = exif_data_new_from_data (buf, buf_size);
78         free (buf);
79
80         fprintf (stdout, "######### Test 2 #########\n");
81         r = test_exif_data (d);
82         if (r) return r;
83
84         fprintf (stdout, "Test successful!\n");
85
86         return 1;
87 }