data.h
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef DATA_H
00021 #define DATA_H
00022
00023 #if HAVE_CONFIG_H
00024 #include <config.h>
00025 #endif
00026
00027 #include <sys/types.h>
00028 #include <limits.h>
00029
00030 #include "gpgme.h"
00031
00032
00033
00034
00035
00036 typedef ssize_t (*gpgme_data_read_cb) (gpgme_data_t dh, void *buffer,
00037 size_t size);
00038
00039
00040
00041
00042 typedef ssize_t (*gpgme_data_write_cb) (gpgme_data_t dh, const void *buffer,
00043 size_t size);
00044
00045
00046
00047
00048 typedef off_t (*gpgme_data_seek_cb) (gpgme_data_t dh, off_t offset,
00049 int whence);
00050
00051
00052 typedef void (*gpgme_data_release_cb) (gpgme_data_t dh);
00053
00054 struct _gpgme_data_cbs
00055 {
00056 gpgme_data_read_cb read;
00057 gpgme_data_write_cb write;
00058 gpgme_data_seek_cb seek;
00059 gpgme_data_release_cb release;
00060 };
00061
00062 struct gpgme_data
00063 {
00064 struct _gpgme_data_cbs *cbs;
00065 gpgme_data_encoding_t encoding;
00066
00067 #ifdef PIPE_BUF
00068 #define BUFFER_SIZE PIPE_BUF
00069 #else
00070 #ifdef _POSIX_PIPE_BUF
00071 #define BUFFER_SIZE _POSIX_PIPE_BUF
00072 #else
00073 #define BUFFER_SIZE 512
00074 #endif
00075 #endif
00076 char pending[BUFFER_SIZE];
00077 int pending_len;
00078
00079 union
00080 {
00081
00082 int fd;
00083
00084
00085 FILE *stream;
00086
00087
00088 struct
00089 {
00090 gpgme_data_cbs_t cbs;
00091 void *handle;
00092 } user;
00093
00094
00095 struct
00096 {
00097 char *buffer;
00098 const char *orig_buffer;
00099
00100 size_t size;
00101 size_t length;
00102 size_t offset;
00103 } mem;
00104
00105
00106 struct
00107 {
00108 int (*cb) (void *, char *, size_t, size_t *);
00109 void *handle;
00110 } old_user;
00111 } data;
00112 };
00113
00114
00115 gpgme_error_t _gpgme_data_new (gpgme_data_t *r_dh,
00116 struct _gpgme_data_cbs *cbs);
00117
00118 void _gpgme_data_release (gpgme_data_t dh);
00119
00120 #endif
This file is part of the documentation for libkdenetwork Library Version 3.3.0.