libextractor  1.11
About: GNU libextractor is a library used to extract meta-data from files of arbitrary type.
  Fossies Dox: libextractor-1.11.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

extractor_print.c
Go to the documentation of this file.
1 /*
2  This file is part of libextractor.
3  Copyright (C) 2002, 2003, 2004, 2005, 2006, 2009 Vidyut Samanta and Christian Grothoff
4 
5  libextractor is free software; you can redistribute it and/or modify
6  it under the terms of the GNU General Public License as published
7  by the Free Software Foundation; either version 2, or (at your
8  option) any later version.
9 
10  libextractor is distributed in the hope that it will be useful, but
11  WITHOUT ANY WARRANTY; without even the implied warranty of
12  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  General Public License for more details.
14 
15  You should have received a copy of the GNU General Public License
16  along with libextractor; see the file COPYING. If not, write to the
17  Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18  Boston, MA 02110-1301, USA.
19  */
20 /**
21  * @file main/extractor_print.c
22  * @brief convenience functions for printing meta data
23  * @author Christian Grothoff
24  */
25 #include "platform.h"
26 #include "extractor.h"
27 #include "extractor_logging.h"
28 #if HAVE_ICONV
29 #include "iconv.c"
30 #endif
31 
32 /**
33  * Simple EXTRACTOR_MetaDataProcessor implementation that simply
34  * prints the extracted meta data to the given file. Only prints
35  * those keywords that are in UTF-8 format.
36  *
37  * @param handle the file to write to (stdout, stderr), must NOT be NULL,
38  * must be of type "FILE *".
39  * @param plugin_name name of the plugin that produced this value
40  * @param type libextractor-type describing the meta data
41  * @param format basic format information about data
42  * @param data_mime_type mime-type of data (not of the original file);
43  * can be NULL (if mime-type is not known)
44  * @param data actual meta-data found
45  * @param data_len number of bytes in data
46  * @return non-zero if printing failed, otherwise 0.
47  */
48 int
50  const char *plugin_name,
52  enum EXTRACTOR_MetaFormat format,
53  const char *data_mime_type,
54  const char *data,
55  size_t data_len)
56 {
57 #if HAVE_ICONV
58  iconv_t cd;
59 #endif
60  char *buf;
61  int ret;
62  const char *mt;
63 
64  if (EXTRACTOR_METAFORMAT_UTF8 != format)
65  return 0;
66 #if HAVE_ICONV
67  cd = iconv_open (nl_langinfo (CODESET),
68  "UTF-8");
69  if (((iconv_t) -1) == cd)
70  {
71  LOG_STRERROR ("iconv_open");
72  return 1;
73  }
74  buf = iconv_helper (cd, data, data_len);
75  if (NULL == buf)
76  {
77  LOG_STRERROR ("iconv_helper");
78  ret = -1;
79  }
80  else
81  {
83  ret = fprintf (handle,
84  "%s - %s\n",
85  (NULL == mt)
86  ? dgettext ("libextractor", gettext_noop ("unknown"))
87  : dgettext ("libextractor", mt),
88  buf);
89  free (buf);
90  }
91  iconv_close (cd);
92 #else
93  ret = fprintf (handle,
94  "%s - %.*s\n",
95  (NULL == mt)
96  ? dgettext ("libextractor", gettext_noop ("unknown"))
97  : dgettext ("libextractor", mt),
98  (int) data_len,
99  data);
100 #endif
101  return (ret < 0) ? 1 : 0;
102 }
103 
104 
105 /* end of extractor_print.c */
EXTRACTOR_MetaFormat
Definition: extractor.h:92
@ EXTRACTOR_METAFORMAT_UTF8
Definition: extractor.h:102
logging API for GNU libextractor
#define LOG_STRERROR(syscall)
int EXTRACTOR_meta_data_print(void *handle, const char *plugin_name, enum EXTRACTOR_MetaType type, enum EXTRACTOR_MetaFormat format, const char *data_mime_type, const char *data, size_t data_len)
#define NULL
Definition: getopt1.c:60
#define gettext_noop(String)
Definition: gettext.h:69
#define dgettext(Domainname, Msgid)
Definition: gettext.h:46
const char * EXTRACTOR_metatype_to_string(enum EXTRACTOR_MetaType type)
EXTRACTOR_MetaType
Definition: extractor.h:126
enum EXTRACTOR_MetaType type
convenience functions for character conversion
static char * iconv_helper(iconv_t cd, const char *in, size_t inSize)
Definition: iconv.c:37
plaform specifics