From: Lutz M?l. <lu...@us...> - 2003-09-30 22:43:07
|
Update of /cvsroot/libexif/exif/exif In directory sc8-pr-cvs1:/tmp/cvs-serv18626/exif Modified Files: actions.c actions.h main.c Log Message: 2003-10-01 Lutz Mueller <lu...@us...> * exif/actions.[c,h]: * exif/main.c: Add option --machine-readable. Patch by Greg Baker (#761641). Index: actions.h =================================================================== RCS file: /cvsroot/libexif/exif/exif/actions.h,v retrieving revision 1.4 retrieving revision 1.5 diff -u -d -r1.4 -r1.5 --- actions.h 15 Dec 2002 11:39:13 -0000 1.4 +++ actions.h 30 Sep 2003 22:43:00 -0000 1.5 @@ -27,8 +27,11 @@ #include <libmnote/mnote-data.h> #endif -void action_tag_table (const char *filename, ExifData *ed); -void action_tag_list (const char *filename, ExifData *ed, unsigned char ids); +void action_tag_table (const char *filename, ExifData *); +void action_tag_list (const char *filename, ExifData *, + unsigned char ids); +void action_tag_list_machine (const char *filename, ExifData *, + unsigned char ids); #ifdef HAVE_MNOTE void action_ntag_table (const char *filename, MNoteData *en); Index: actions.c =================================================================== RCS file: /cvsroot/libexif/exif/exif/actions.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- actions.c 5 May 2003 21:13:44 -0000 1.13 +++ actions.c 30 Sep 2003 22:43:00 -0000 1.14 @@ -179,6 +179,35 @@ } } +static void +show_entry_machine (ExifEntry *entry, void *data) +{ + unsigned char *ids = data; + + if (*ids) fprintf (stdout, "0x%04x", entry->tag); + else fprintf (stdout, "%s", exif_tag_get_title (entry->tag)); + printf ("\t"); + if (*ids) fprintf (stdout, "%s", exif_entry_get_value (entry)); + else fprintf (stdout, "%s", exif_entry_get_value (entry)); + fputc ('\n', stdout); +} + +static void +show_ifd_machine (ExifContent *content, void *data) +{ + exif_content_foreach_entry (content, show_entry_machine, data); +} + +void +action_tag_list_machine (const char *filename, ExifData *ed, unsigned char ids) +{ + if (!ed) return; + + exif_data_foreach_content (ed, show_ifd_machine, &ids); + if (ed->size) + fprintf (stdout, _("ThumbnailSize\t%i\n"), ed->size); +} + #ifdef HAVE_MNOTE void Index: main.c =================================================================== RCS file: /cvsroot/libexif/exif/exif/main.c,v retrieving revision 1.36 retrieving revision 1.37 diff -u -d -r1.36 -r1.37 --- main.c 21 Aug 2003 20:55:52 -0000 1.36 +++ main.c 30 Sep 2003 22:43:00 -0000 1.37 @@ -225,7 +225,7 @@ * with the "SGI MIPSpro C compiler". I don't understand and still think * these variables belong into main (). */ -static unsigned int list_tags = 0, show_description = 0; +static unsigned int list_tags = 0, show_description = 0, machine_readable = 0; static unsigned int extract_thumbnail = 0, remove_thumbnail = 0; static unsigned int remove_tag = 0; #ifdef HAVE_MNOTE @@ -283,6 +283,9 @@ N_("Write data to FILE"), N_("FILE")}, {"set-value", '\0', POPT_ARG_STRING, &set_value, 0, N_("Value"), NULL}, + {"machine-readable", 'm', POPT_ARG_NONE, &machine_readable, 0, + N_("Output in a machine-readable (tab delimited) format"), + NULL}, POPT_TABLEEND}; ExifData *ed; ExifEntry *e; @@ -625,6 +628,8 @@ /* Save modified data. */ save_exif_data_to_file (ed, *args, fname); + } else if (machine_readable) { + action_tag_list_machine (*args, ed, eo.use_ids); } else action_tag_list (*args, ed, eo.use_ids); exif_data_unref (ed); |