cpp: Add gpgme_data_rewind to cpp API
authorAndre Heinecke <aheinecke@intevation.de>
Tue, 29 May 2018 07:16:22 +0000 (09:16 +0200)
committerAndre Heinecke <aheinecke@intevation.de>
Tue, 29 May 2018 07:19:50 +0000 (09:19 +0200)
* lang/cpp/src/data.h, lang/cpp/src/data.cpp (Data::rewind): New.
* lang/qt/tests/t-various.cpp (testDataRewind): Test it.

--
The advantage of this convieniance function in GPGME is that
it avoids the messiness that are declarations with off_t.

GnuPG-Bug-Id: T3996

NEWS
lang/cpp/src/data.cpp
lang/cpp/src/data.h
lang/qt/tests/t-various.cpp

diff --git a/NEWS b/NEWS
index e0adb35..848f4e9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -8,6 +8,7 @@ Noteworthy changes in version 1.11.2 (unreleased)
  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  cpp: DecryptionResult::sessionKey    NEW.
  cpp: DecryptionResult::symkeyAlgo    NEW.
+ cpp: Data::rewind                    NEW.
 
 Noteworthy changes in version 1.11.1 (2018-04-20)
 -------------------------------------------------
index 52b8da2..2782aa7 100644 (file)
@@ -232,6 +232,11 @@ off_t GpgME::Data::seek(off_t offset, int whence)
     return gpgme_data_seek(d->data, offset, whence);
 }
 
+GpgME::Error GpgME::Data::rewind()
+{
+    return Error(gpgme_data_rewind(d->data));
+}
+
 std::vector<GpgME::Key> GpgME::Data::toKeys(Protocol proto) const
 {
     std::vector<GpgME::Key> ret;
index 446f6fa..df8607e 100644 (file)
@@ -110,6 +110,9 @@ public:
     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;
index 7545628..76e6806 100644 (file)
@@ -98,6 +98,25 @@ private Q_SLOTS:
         QVERIFY(key.primaryFingerprint() == QStringLiteral("7A0904B6950DA998020A1AD4BE41C0C3A5FF1F3C"));
     }
 
+    void testDataRewind()
+    {
+        if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.14") {
+            return;
+        }
+        QGpgME::QByteArrayDataProvider dp(aKey);
+        Data data(&dp);
+        char buf[20];
+        data.read(buf, 20);
+
+        auto keys = data.toKeys();
+        QVERIFY(keys.size() == 0);
+
+        data.rewind();
+
+        keys = data.toKeys();
+        QVERIFY(keys.size() == 1);
+    }
+
     void testQuickUid()
     {
         if (GpgME::engineInfo(GpgME::GpgEngine).engineVersion() < "2.1.13") {