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_datasource.h
Go to the documentation of this file.
1 /*
2  This file is part of libextractor.
3  Copyright (C) 2002, 2003, 2004, 2005, 2006, 2009, 2012 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 3, 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_datasource.h
22  * @brief random access and possibly decompression of data from buffer in memory or file on disk
23  * @author Christian Grothoff
24  */
25 #ifndef EXTRACTOR_DATASOURCE_H
26 #define EXTRACTOR_DATASOURCE_H
27 
28 #include "extractor.h"
29 
30 /**
31  * Handle to a datasource we can use for the plugins.
32  */
34 
35 
36 /**
37  * Create a datasource from a file on disk.
38  *
39  * @param filename name of the file on disk
40  * @param proc metadata callback to call with meta data found upon opening
41  * @param proc_cls callback cls
42  * @return handle to the datasource, NULL on error
43  */
44 struct EXTRACTOR_Datasource *
45 EXTRACTOR_datasource_create_from_file_ (const char *filename,
47  void *proc_cls);
48 
49 
50 /**
51  * Create a datasource from a buffer in memory.
52  *
53  * @param buf data in memory
54  * @param size number of bytes in 'buf'
55  * @param proc metadata callback to call with meta data found upon opening
56  * @param proc_cls callback cls
57  * @return handle to the datasource, NULL on error
58  */
59 struct EXTRACTOR_Datasource *
61  size_t size,
63  void *proc_cls);
64 
65 
66 /**
67  * Destroy a data source.
68  *
69  * @param ds source to destroy
70  */
71 void
73 
74 
75 /**
76  * Make 'size' bytes of data from the data source available at 'data'.
77  *
78  * @param cls must be a 'struct EXTRACTOR_Datasource'
79  * @param data where the data should be copied to
80  * @param size maximum number of bytes requested
81  * @return number of bytes now available in data (can be smaller than 'size'),
82  * -1 on error
83  */
84 ssize_t
86  void *data,
87  size_t size);
88 
89 
90 /**
91  * Seek in the datasource. Use 'SEEK_CUR' for whence and 'pos' of 0 to
92  * obtain the current position in the file.
93  *
94  * @param cls must be a 'struct EXTRACTOR_Datasource'
95  * @param pos position to seek (see 'man lseek')o
96  * @param whence how to see (absolute to start, relative, absolute to end)
97  * @return new absolute position, -1 on error (i.e. desired position
98  * does not exist)
99  */
100 int64_t
101 EXTRACTOR_datasource_seek_ (void *cls,
102  int64_t pos,
103  int whence);
104 
105 
106 /**
107  * Determine the overall size of the data source (after compression).
108  *
109  * @param cls must be a 'struct EXTRACTOR_Datasource'
110  * @param force force computing the size if it is unavailable
111  * @return overall file size, -1 on error or unknown
112  */
113 int64_t
115  int force);
116 
117 
118 #endif
int(* EXTRACTOR_MetaDataProcessor)(void *cls, const char *plugin_name, enum EXTRACTOR_MetaType type, enum EXTRACTOR_MetaFormat format, const char *data_mime_type, const char *data, size_t data_len)
Definition: extractor.h:460
struct EXTRACTOR_Datasource * EXTRACTOR_datasource_create_from_buffer_(const char *buf, size_t size, EXTRACTOR_MetaDataProcessor proc, void *proc_cls)
void EXTRACTOR_datasource_destroy_(struct EXTRACTOR_Datasource *ds)
ssize_t EXTRACTOR_datasource_read_(void *cls, void *data, size_t size)
int64_t EXTRACTOR_datasource_get_size_(void *cls, int force)
int64_t EXTRACTOR_datasource_seek_(void *cls, int64_t pos, int whence)
struct EXTRACTOR_Datasource * EXTRACTOR_datasource_create_from_file_(const char *filename, EXTRACTOR_MetaDataProcessor proc, void *proc_cls)