From: Brandon Casey <drafnel@gmail.com>
To: git@vger.kernel.org
Cc: pah@qo.cx, Brandon Casey <drafnel@gmail.com>
Subject: [PATCH 14/15] contrib/git-credential-gnome-keyring.c: support ancient gnome-keyring
Date: Sun, 22 Sep 2013 22:08:10 -0700 [thread overview]
Message-ID: <1379912891-12277-15-git-send-email-drafnel@gmail.com> (raw)
In-Reply-To: <1379912891-12277-1-git-send-email-drafnel@gmail.com>
The gnome-keyring lib distributed with RHEL 5.X is ancient and does
not provide a few of the functions/defines that more recent versions
do, but mostly the API is the same. Let's provide the missing bits
via macro definitions and function implementation.
Signed-off-by: Brandon Casey <drafnel@gmail.com>
---
.../gnome-keyring/git-credential-gnome-keyring.c | 58 ++++++++++++++++++++++
1 file changed, 58 insertions(+)
diff --git a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
index 6fa1278..f8f4df9 100644
--- a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
+++ b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
@@ -28,8 +28,66 @@
#include <stdlib.h>
#include <glib.h>
#include <gnome-keyring.h>
+
+#ifdef GNOME_KEYRING_DEFAULT
+
+ /* Modern gnome-keyring */
+
#include <gnome-keyring-memory.h>
+#else
+
+ /*
+ * Support ancient gnome-keyring, circ. RHEL 5.X.
+ * GNOME_KEYRING_DEFAULT seems to have been introduced with Gnome 2.22,
+ * and the other features roughly around Gnome 2.20, 6 months before.
+ * Ubuntu 8.04 used Gnome 2.22 (I think). Not sure any distro used 2.20.
+ * So the existence/non-existence of GNOME_KEYRING_DEFAULT seems like
+ * a decent thing to use as an indicator.
+ */
+
+#define GNOME_KEYRING_DEFAULT NULL
+
+/*
+ * ancient gnome-keyring returns DENIED when an entry is not found.
+ * Setting NO_MATCH to DENIED will prevent us from reporting denied
+ * errors during get and erase operations, but we will still report
+ * DENIED errors during a store.
+ */
+#define GNOME_KEYRING_RESULT_NO_MATCH GNOME_KEYRING_RESULT_DENIED
+
+#define gnome_keyring_memory_alloc g_malloc
+#define gnome_keyring_memory_free gnome_keyring_free_password
+#define gnome_keyring_memory_strdup g_strdup
+
+static const char* gnome_keyring_result_to_message(GnomeKeyringResult result)
+{
+ switch (result) {
+ case GNOME_KEYRING_RESULT_OK:
+ return "OK";
+ case GNOME_KEYRING_RESULT_DENIED:
+ return "Denied";
+ case GNOME_KEYRING_RESULT_NO_KEYRING_DAEMON:
+ return "No Keyring Daemon";
+ case GNOME_KEYRING_RESULT_ALREADY_UNLOCKED:
+ return "Already UnLocked";
+ case GNOME_KEYRING_RESULT_NO_SUCH_KEYRING:
+ return "No Such Keyring";
+ case GNOME_KEYRING_RESULT_BAD_ARGUMENTS:
+ return "Bad Arguments";
+ case GNOME_KEYRING_RESULT_IO_ERROR:
+ return "IO Error";
+ case GNOME_KEYRING_RESULT_CANCELLED:
+ return "Cancelled";
+ case GNOME_KEYRING_RESULT_ALREADY_EXISTS:
+ return "Already Exists";
+ default:
+ return "Unknown Error";
+ }
+}
+
+#endif
+
/*
* This credential struct and API is simplified from git's credential.{h,c}
*/
--
1.8.4.489.g545bc72
next prev parent reply other threads:[~2013-09-23 5:09 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-09-23 5:07 [PATCH 00/15] Make Gnome Credential helper more Gnome-y and support ancient distros Brandon Casey
2013-09-23 5:07 ` [PATCH 01/15] contrib/git-credential-gnome-keyring.c: remove unnecessary pre-declarations Brandon Casey
2013-09-23 5:07 ` [PATCH 02/15] contrib/git-credential-gnome-keyring.c: remove unused die() function Brandon Casey
2013-09-23 5:07 ` [PATCH 03/15] contrib/git-credential-gnome-keyring.c: add static where applicable Brandon Casey
2013-09-23 5:08 ` [PATCH 04/15] contrib/git-credential-gnome-keyring.c: exit non-zero when called incorrectly Brandon Casey
2013-09-23 5:08 ` [PATCH 05/15] contrib/git-credential-gnome-keyring.c: set Gnome application name Brandon Casey
2013-09-23 5:08 ` [PATCH 06/15] contrib/git-credential-gnome-keyring.c: strlen() returns size_t, not ssize_t Brandon Casey
2013-09-23 5:08 ` [PATCH 07/15] contrib/git-credential-gnome-keyring.c: ensure buffer is non-empty before accessing Brandon Casey
2013-09-23 5:43 ` Felipe Contreras
2013-09-23 17:21 ` Brandon Casey
2013-09-23 5:08 ` [PATCH 08/15] contrib/git-credential-gnome-keyring.c: use gnome helpers in keyring_object() Brandon Casey
2013-09-23 5:08 ` [PATCH 09/15] contrib/git-credential-gnome-keyring.c: use secure memory functions for passwds Brandon Casey
2013-09-23 5:08 ` [PATCH 10/15] contrib/git-credential-gnome-keyring.c: use secure memory for reading passwords Brandon Casey
2013-09-23 5:08 ` [PATCH 11/15] contrib/git-credential-gnome-keyring.c: use glib memory allocation functions Brandon Casey
2013-09-23 5:08 ` [PATCH 12/15] contrib/git-credential-gnome-keyring.c: use glib messaging functions Brandon Casey
2013-09-23 5:08 ` [PATCH 13/15] contrib/git-credential-gnome-keyring.c: report failure to store password Brandon Casey
2013-09-23 5:08 ` Brandon Casey [this message]
2013-09-23 5:08 ` [PATCH 15/15] contrib/git-credential-gnome-keyring.c: support really ancient gnome-keyring Brandon Casey
2013-09-23 10:20 ` [PATCH 00/15] Make Gnome Credential helper more Gnome-y and support ancient distros John Szakmeister
2013-09-23 17:21 ` Brandon Casey
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1379912891-12277-15-git-send-email-drafnel@gmail.com \
--to=drafnel@gmail.com \
--cc=git@vger.kernel.org \
--cc=pah@qo.cx \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.