"Fossies" - the Fresh Open Source Software Archive

Member "libextractor-1.11/src/main/extractor_common.c" (30 Jan 2021, 2470 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_common.c" see the Fossies "Dox" file reference documentation.

    1 /*
    2      This file is part of libextractor.
    3      Copyright (C) 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_common.c
   22  * @brief commonly used functions within the library
   23  * @author Christian Grothoff
   24  */
   25 #include "platform.h"
   26 #include "extractor_common.h"
   27 #include "extractor_logging.h"
   28 #include "extractor.h"
   29 #include <sys/types.h>
   30 #include <signal.h>
   31 
   32 
   33 /**
   34  * Writes 'size' bytes from 'buf' to 'fd', returns only when
   35  * writing is not possible, or when all 'size' bytes were written
   36  * (never does partial writes).
   37  *
   38  * @param fd fd to write into
   39  * @param buf buffer to read from
   40  * @param size number of bytes to write
   41  * @return number of bytes written (that is 'size'), or -1 on error
   42  */
   43 ssize_t
   44 EXTRACTOR_write_all_ (int fd,
   45                       const void *buf,
   46                       size_t size)
   47 {
   48   const char *data = buf;
   49   size_t off = 0;
   50   ssize_t ret;
   51 
   52   while (off < size)
   53   {
   54     ret = write (fd, &data[off], size - off);
   55     if (ret <= 0)
   56     {
   57       if (-1 == ret)
   58         LOG_STRERROR ("write");
   59       return -1;
   60     }
   61     off += ret;
   62   }
   63   return size;
   64 }
   65 
   66 
   67 /**
   68  * Read a buffer from a given descriptor.
   69  *
   70  * @param fd descriptor to read from
   71  * @param buf buffer to fill
   72  * @param size number of bytes to read into 'buf'
   73  * @return -1 on error, size on success
   74  */
   75 ssize_t
   76 EXTRACTOR_read_all_ (int fd,
   77                      void *buf,
   78                      size_t size)
   79 {
   80   char *data = buf;
   81   size_t off = 0;
   82   ssize_t ret;
   83 
   84   while (off < size)
   85   {
   86     ret = read (fd, &data[off], size - off);
   87     if (ret <= 0)
   88     {
   89       if (-1 == ret)
   90         LOG_STRERROR ("write");
   91       return -1;
   92     }
   93     off += ret;
   94   }
   95   return size;
   96 
   97 }
   98 
   99 
  100 /* end of extractor_common.c */