"Fossies" - the Fresh Open Source Software Archive

Member "libextractor-1.11/src/main/extractor_datasource.h" (30 Jan 2021, 3791 Bytes) of package /linux/privat/libextractor-1.11.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "extractor_datasource.h" see the Fossies "Dox" file reference documentation.

    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  */
   33 struct EXTRACTOR_Datasource;
   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,
   46                                         EXTRACTOR_MetaDataProcessor proc,
   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 *
   60 EXTRACTOR_datasource_create_from_buffer_ (const char *buf,
   61                                           size_t size,
   62                                           EXTRACTOR_MetaDataProcessor proc,
   63                                           void *proc_cls);
   64 
   65 
   66 /**
   67  * Destroy a data source.
   68  *
   69  * @param ds source to destroy
   70  */
   71 void
   72 EXTRACTOR_datasource_destroy_ (struct EXTRACTOR_Datasource *ds);
   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
   85 EXTRACTOR_datasource_read_ (void *cls,
   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
  114 EXTRACTOR_datasource_get_size_ (void *cls,
  115                                 int force);
  116 
  117 
  118 #endif