[Pkg-owncloud-commits] [qtkeychain] 12/115: add entryExists()

Sandro Knauß hefee-guest at moszumanska.debian.org
Sat Mar 15 19:25:42 UTC 2014


This is an automated email from the git hooks/post-receive script.

hefee-guest pushed a commit to branch master
in repository qtkeychain.

commit 067c3c65777e1869a0ee1fc5c5820a38fb87ad2e
Author: Frank Osterfeld <frank.osterfeld at kdab.com>
Date:   Fri Oct 28 09:38:02 2011 +0200

    add entryExists()
---
 keychain.cpp     |  9 +++++++++
 keychain.h       | 12 ++++++++++--
 keychain_mac.cpp | 22 ++++++++++++++++++++++
 keychain_p.h     |  4 +++-
 keychain_win.cpp | 39 +++++++++++++++++++++++++++++++++++----
 lib.pro          |  8 ++++++--
 testclient.pro   |  3 ++-
 7 files changed, 87 insertions(+), 10 deletions(-)

diff --git a/keychain.cpp b/keychain.cpp
index caf3e37..2026470 100644
--- a/keychain.cpp
+++ b/keychain.cpp
@@ -60,6 +60,15 @@ QByteArray Keychain::readEntry( const QString& key ) {
         return pw;
 }
 
+bool Keychain::entryExists( const QString& key ) {
+    QString err;
+    bool exists = false;
+    const Error ret = d->entryExistsImpl( &exists, key, &err );
+    d->error = ret;
+    d->errorString = err;
+    return exists;
+}
+
 void Keychain::deleteEntry( const QString& key ) {
     QString err;
     const Error ret = d->deleteEntryImpl( key, &err );
diff --git a/keychain.h b/keychain.h
index 70d071c..7d368c9 100644
--- a/keychain.h
+++ b/keychain.h
@@ -91,7 +91,7 @@ public:
      * Reads the password for a given @p key from the keychain.
      * error() and errorString() hold the result of the read operation.
      *
-     * @param key the key ot read the password for
+     * @param key the key to read the password for
      */
     QString readPassword( const QString& key );
 
@@ -99,11 +99,19 @@ public:
      * Reads data for a given @p key from the keychain.
      * error() and errorString() hold the result of the read operation.
      *
-     * @param key the key ot read the password for
+     * @param key the key to read the password for
      */
     QByteArray readEntry( const QString& key );
 
     /**
+     * Returns whether the keychain has an entry with key @p key
+     * error() and errorString() hold the result of the read operation.
+     *
+     * @param key the key to check for
+     */
+    bool entryExists( const QString& key );
+
+    /**
      * Deletes the data for a @p key from the keychain.
      * error() and errorString() hold the result of the delete operation.
      *
diff --git a/keychain_mac.cpp b/keychain_mac.cpp
index e1c1fc5..b835f13 100644
--- a/keychain_mac.cpp
+++ b/keychain_mac.cpp
@@ -138,3 +138,25 @@ Keychain::Error Keychain::Private::deleteEntryImpl( const QString& account,
     return CouldNotDeleteEntry;
 }
 
+
+Keychain::Error Keychain::Private::entryExistsImpl( bool* exists,
+                                                    const QString& account,
+                                                    QString* err ) {
+    Q_ASSERT( exists );
+    *exists = false;
+    SecKeychainItemRef ref;
+    QByteArray pw;
+    const OSStatus ret1 = readPw( &pw, service, account, &ref );
+    if ( ret1 == errSecItemNotFound ) {
+        return NoError;
+    }
+    if ( ret1 != noErr ) {
+        *err = strForStatus( ret1 );
+        //TODO map error code, set errstr
+        return OtherError;
+    }
+
+    CFRelease( ref );
+    *exists = true;
+    return NoError;
+}
diff --git a/keychain_p.h b/keychain_p.h
index 4abb0a1..fe4c8bb 100644
--- a/keychain_p.h
+++ b/keychain_p.h
@@ -27,7 +27,9 @@ public:
     Keychain::Error readEntryImpl( QByteArray* password,
                                    const QString& account,
                                    QString* errorString );
-
+    Keychain::Error entryExistsImpl( bool* exists,
+                                     const QString& key,
+                                     QString* errorString );
     const QString service;
     Keychain::Error error;
     QString errorString;
diff --git a/keychain_win.cpp b/keychain_win.cpp
index fc781d3..1f8fd5b 100644
--- a/keychain_win.cpp
+++ b/keychain_win.cpp
@@ -8,11 +8,42 @@
  *****************************************************************************/
 #include "keychain_p.h"
 
-QString Keychain::Private::readPasswordImpl( const QString& account ) const {
-    throw KeychainException( QLatin1String("not implemented") );
+using namespace QKeychain;
+
+Keychain::Error Keychain::Private::readEntryImpl( QByteArray* pw,
+                                                  const QString& account,
+                                                  QString* err ) {
+    Q_ASSERT( pw );
+    Q_ASSERT( err );
+    err->clear();
+    *err = tr("Not implemented");
+    return OtherError;
+}
+
+Keychain::Error Keychain::Private::writeEntryImpl( const QString& account,
+                                                   const QByteArray& data,
+                                                   QString* err ) {
+    Q_ASSERT( err );
+    err->clear();
+    *err = tr("Not implemented");
+    return OtherError;
 }
 
-void Keychain::Private::writePasswordImpl( const QString& account, const QString& password ) {
-    throw KeychainException( QLatin1String("not implemented") );
+Keychain::Error Keychain::Private::deleteEntryImpl( const QString& account,
+                                                    QString* err ) {
+    Q_ASSERT( err );
+    err->clear();
+    *err = tr("Not implemented");
+    return OtherError;
 }
 
+
+Keychain::Error Keychain::Private::entryExistsImpl( bool* exists,
+                                                    const QString& account,
+                                                    QString* err ) {
+    Q_ASSERT( exists );
+    Q_ASSERT( err );
+    err->clear();
+    *err = tr("Not implemented");
+    return OtherError;
+}
diff --git a/lib.pro b/lib.pro
index 3a6ffdf..b631a7b 100644
--- a/lib.pro
+++ b/lib.pro
@@ -7,9 +7,13 @@ HEADERS += keychain.h \
            keychain_p.h
 SOURCES += keychain.cpp
 
+
 macx {
     LIBS += -framework Security -framework CoreFoundation
     SOURCES += keychain_mac.cpp
 }
-win32:SOURCES += keychain_win.cpp
-
+win32 {
+    DESTDIR = lib
+    DLLDESTDIR = lib
+    SOURCES += keychain_win.cpp
+}
diff --git a/testclient.pro b/testclient.pro
index 912fdb1..ce8cebf 100644
--- a/testclient.pro
+++ b/testclient.pro
@@ -7,5 +7,6 @@ QT -= gui
 CONFIG += console
 macx:CONFIG -= app_bundle
 
-LIBS += -L$$OUT_PWD -lqtkeychain
+win32:LIBS += -Llib -lqtkeychain
+unix:LIBS += -L$$OUT_PWD -lqtkeychain
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/qtkeychain.git



More information about the Pkg-owncloud-commits mailing list