json: Remove the -noinstall flag used during development.
[gpgme.git] / src / data.h
index 370751d..0a15b61 100644 (file)
@@ -1,18 +1,18 @@
 /* data.h - Internal data object abstraction interface.
    Copyright (C) 2002, 2004, 2005 g10 Code GmbH
+
    This file is part of GPGME.
+
    GPGME is free software; you can redistribute it and/or modify it
    under the terms of the GNU Lesser General Public License as
    published by the Free Software Foundation; either version 2.1 of
    the License, or (at your option) any later version.
-   
+
    GPGME is distributed in the hope that it will be useful, but
    WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.
-   
+
    You should have received a copy of the GNU Lesser General Public
    License along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
@@ -25,7 +25,9 @@
 #include <config.h>
 #endif
 
-#include <sys/types.h>
+#ifdef HAVE_SYS_TYPES_H
+# include <sys/types.h>
+#endif
 #include <limits.h>
 
 #include "gpgme.h"
 /* Read up to SIZE bytes into buffer BUFFER from the data object with
    the handle DH.  Return the number of characters read, 0 on EOF and
    -1 on error.  If an error occurs, errno is set.  */
-typedef ssize_t (*gpgme_data_read_cb) (gpgme_data_t dh, void *buffer,
-                                      size_t size);
+typedef gpgme_ssize_t (*gpgme_data_read_cb) (gpgme_data_t dh,
+                                             void *buffer,
+                                             size_t size);
 
 /* Write up to SIZE bytes from buffer BUFFER to the data object with
    the handle DH.  Return the number of characters written, or -1 on
    error.  If an error occurs, errno is set.  */
-typedef ssize_t (*gpgme_data_write_cb) (gpgme_data_t dh, const void *buffer,
-                                       size_t size);
+typedef gpgme_ssize_t (*gpgme_data_write_cb) (gpgme_data_t dh,
+                                              const void *buffer,
+                                              size_t size);
 
 /* Set the current position from where the next read or write starts
    in the data object with the handle DH to OFFSET, relativ to
    WHENCE.  */
-typedef off_t (*gpgme_data_seek_cb) (gpgme_data_t dh, off_t offset,
-                                    int whence);
+typedef gpgme_off_t (*gpgme_data_seek_cb) (gpgme_data_t dh,
+                                            gpgme_off_t offset,
+                                            int whence);
 
 /* Release the data object with the handle DH.  */
 typedef void (*gpgme_data_release_cb) (gpgme_data_t dh);
@@ -84,6 +89,9 @@ struct gpgme_data
   /* File name of the data object.  */
   char *file_name;
 
+  /* Hint on the to be expected toatl size of the data.  */
+  gpgme_off_t size_hint;
+
   union
   {
     /* For gpgme_data_new_from_fd.  */
@@ -107,7 +115,7 @@ struct gpgme_data
       /* Allocated size of BUFFER.  */
       size_t size;
       size_t length;
-      off_t offset;
+      gpgme_off_t offset;
     } mem;
 
     /* For gpgme_data_new_from_read_cb.  */
@@ -129,4 +137,7 @@ void _gpgme_data_release (gpgme_data_t dh);
    return -1.  */
 int _gpgme_data_get_fd (gpgme_data_t dh);
 
+/* Get the size-hint value for DH or 0 if not available.  */
+gpgme_off_t _gpgme_data_get_size_hint (gpgme_data_t dh);
+
 #endif /* DATA_H */