diff options
author | Andre Heinecke <[email protected]> | 2020-11-20 09:09:06 +0000 |
---|---|---|
committer | Andre Heinecke <[email protected]> | 2020-11-20 09:10:32 +0000 |
commit | a5c4b030258714dd72a2e276114183309cad3ec3 (patch) | |
tree | 026cccea8d61f680c4f4905dade205cde0bee691 /lang/cpp/src | |
parent | m4: Update with newer autoconf constructs. (diff) | |
download | gpgme-a5c4b030258714dd72a2e276114183309cad3ec3.tar.gz gpgme-a5c4b030258714dd72a2e276114183309cad3ec3.zip |
Revert "cpp: Use portable off_t size_t"
This reverts commit 88294023c196497cfa6737be262c8b0c09d2a3ce.
--
This commit was too early and i needed to test more
this is breaking more then it helps so for now
revert it before we can do a proper solution.
Diffstat (limited to 'lang/cpp/src')
-rw-r--r-- | lang/cpp/src/Makefile.am | 8 | ||||
-rw-r--r-- | lang/cpp/src/data.cpp | 6 | ||||
-rw-r--r-- | lang/cpp/src/data.h | 140 |
3 files changed, 147 insertions, 7 deletions
diff --git a/lang/cpp/src/Makefile.am b/lang/cpp/src/Makefile.am index d97c714e..32e3045c 100644 --- a/lang/cpp/src/Makefile.am +++ b/lang/cpp/src/Makefile.am @@ -20,7 +20,7 @@ # 02111-1307, USA EXTRA_DIST = GpgmeppConfig.cmake.in.in GpgmeppConfigVersion.cmake.in \ - gpgmepp_version.h.in data.h.in GpgmeppConfig-w32.cmake.in.in + gpgmepp_version.h.in GpgmeppConfig-w32.cmake.in.in lib_LTLIBRARIES = libgpgmepp.la @@ -39,7 +39,7 @@ main_sources = \ vfsmountresult.cpp configuration.cpp tofuinfo.cpp swdbresult.cpp gpgmepp_headers = \ - configuration.h context.h decryptionresult.h \ + configuration.h context.h data.h decryptionresult.h \ defaultassuantransaction.h editinteractor.h encryptionresult.h \ engineinfo.h error.h eventloopinteractor.h exception.h global.h \ gpgadduserideditinteractor.h gpgagentgetinfoassuantransaction.h \ @@ -63,7 +63,7 @@ interface_headers= \ gpgmeppincludedir = $(includedir)/gpgme++ gpgmeppinclude_HEADERS = $(gpgmepp_headers) nobase_gpgmeppinclude_HEADERS = $(interface_headers) -nodist_gpgmeppinclude_HEADERS = gpgmepp_version.h data.h +nodist_gpgmeppinclude_HEADERS = gpgmepp_version.h libgpgmepp_la_SOURCES = $(main_sources) $(gpgmepp_headers) context_vanilla.cpp \ $(interface_headers) $(private_gpgmepp_headers) @@ -110,4 +110,4 @@ install-data-local: install-cmake-files uninstall-local: uninstall-cmake-files CLEANFILES = GpgmeppConfig.cmake GpgmeppConfigVersion.cmake \ - gpgmepp_version.h data.h GpgmeppConfig.cmake.in + gpgmepp_version.h GpgmeppConfig.cmake.in diff --git a/lang/cpp/src/data.cpp b/lang/cpp/src/data.cpp index 356bbed6..7a93cbc2 100644 --- a/lang/cpp/src/data.cpp +++ b/lang/cpp/src/data.cpp @@ -217,17 +217,17 @@ GpgME::Error GpgME::Data::setFileName(const char *name) return Error(gpgme_data_set_file_name(d->data, name)); } -gpgme_ssize_t GpgME::Data::read(void *buffer, size_t length) +ssize_t GpgME::Data::read(void *buffer, size_t length) { return gpgme_data_read(d->data, buffer, length); } -gpgme_ssize_t GpgME::Data::write(const void *buffer, size_t length) +ssize_t GpgME::Data::write(const void *buffer, size_t length) { return gpgme_data_write(d->data, buffer, length); } -gpgme_off_t GpgME::Data::seek(gpgme_off_t offset, int whence) +off_t GpgME::Data::seek(off_t offset, int whence) { return gpgme_data_seek(d->data, offset, whence); } diff --git a/lang/cpp/src/data.h b/lang/cpp/src/data.h new file mode 100644 index 00000000..df8607e7 --- /dev/null +++ b/lang/cpp/src/data.h @@ -0,0 +1,140 @@ +/* + data.h - wraps a gpgme data object + Copyright (C) 2003,2004 Klarälvdalens Datakonsult AB + + This file is part of GPGME++. + + GPGME++ is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 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 Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with GPGME++; see the file COPYING.LIB. If not, write to the + Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ + +#ifndef __GPGMEPP_DATA_H__ +#define __GPGMEPP_DATA_H__ + +#include "global.h" +#include "key.h" + +#include <sys/types.h> // for size_t, off_t +#include <cstdio> // FILE +#include <algorithm> +#include <memory> + +namespace GpgME +{ + +class DataProvider; +class Error; + +class GPGMEPP_EXPORT Data +{ + struct Null { + Null() {} + }; +public: + /* implicit */ Data(const Null &); + Data(); + explicit Data(gpgme_data_t data); + + // Memory-Based Data Buffers: + Data(const char *buffer, size_t size, bool copy = true); + explicit Data(const char *filename); + Data(const char *filename, off_t offset, size_t length); + Data(std::FILE *fp, off_t offset, size_t length); + // File-Based Data Buffers: + explicit Data(std::FILE *fp); + explicit Data(int fd); + // Callback-Based Data Buffers: + explicit Data(DataProvider *provider); + + static const Null null; + + const Data &operator=(Data other) + { + swap(other); + return *this; + } + + void swap(Data &other) + { + using std::swap; + swap(this->d, other.d); + } + + bool isNull() const; + + enum Encoding { + AutoEncoding, + BinaryEncoding, + Base64Encoding, + ArmorEncoding, + MimeEncoding, + UrlEncoding, + UrlEscEncoding, + Url0Encoding, + }; + Encoding encoding() const; + Error setEncoding(Encoding encoding); + + enum Type { + Invalid, + Unknown, + PGPSigned, + PGPOther, + PGPKey, + CMSSigned, + CMSEncrypted, + CMSOther, + X509Cert, + PKCS12, + PGPEncrypted, + PGPSignature, + }; + Type type() const; + + char *fileName() const; + Error setFileName(const char *name); + + ssize_t read(void *buffer, size_t length); + ssize_t write(const void *buffer, size_t length); + off_t seek(off_t offset, int whence); + + /* Convenience function to do a seek (0, SEEK_SET). */ + Error rewind(); + + /** Try to parse the data to a key object using the + * Protocol proto. Returns an empty list on error.*/ + std::vector<Key> toKeys(const Protocol proto = Protocol::OpenPGP) const; + + /** Return a copy of the data as std::string. Sets seek pos to 0 */ + std::string toString(); + + class Private; + Private *impl() + { + return d.get(); + } + const Private *impl() const + { + return d.get(); + } +private: + std::shared_ptr<Private> d; +}; + +} + +GPGMEPP_MAKE_STD_SWAP_SPECIALIZATION(Data) + +#endif // __GPGMEPP_DATA_H__ |