git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Brandon Casey <bcasey@nvidia.com>
To: <git@vger.kernel.org>
Cc: <john@szakmeister.net>, <pah@qo.cx>, <felipe.contreras@gmail.com>,
	Brandon Casey <drafnel@gmail.com>
Subject: [PATCH v2 16/16] contrib/git-credential-gnome-keyring.c: support really ancient gnome-keyring
Date: Mon, 23 Sep 2013 11:49:17 -0700	[thread overview]
Message-ID: <1379962157-1338-17-git-send-email-bcasey@nvidia.com> (raw)
In-Reply-To: <1379962157-1338-1-git-send-email-bcasey@nvidia.com>

From: Brandon Casey <drafnel@gmail.com>

The gnome-keyring lib (0.4) distributed with RHEL 4.X is really ancient
and does not provide most of the synchronous functions that even ancient
releases do.  Thankfully, we're only using one function that is missing.
Let's emulate gnome_keyring_item_delete_sync() by calling the asynchronous
function and then triggering the event loop processing until our
callback is called.

Signed-off-by: Brandon Casey <drafnel@gmail.com>
---

Clarified the comment about RHEL 4.X support.

 .../gnome-keyring/git-credential-gnome-keyring.c   | 39 ++++++++++++++++++++++
 1 file changed, 39 insertions(+)

diff --git a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
index e1bc3fa..635c96b 100644
--- a/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
+++ b/contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
@@ -86,6 +86,45 @@ static const char* gnome_keyring_result_to_message(GnomeKeyringResult result)
 	}
 }
 
+/*
+ * Support really ancient gnome-keyring, circ. RHEL 4.X.
+ * Just a guess for the Glib version.  Glib 2.8 was roughly Gnome 2.12 ?
+ * Which was released with gnome-keyring 0.4.3 ??
+ */
+#if GLIB_MAJOR_VERSION == 2 && GLIB_MINOR_VERSION < 8
+
+static void gnome_keyring_done_cb(GnomeKeyringResult result, gpointer user_data)
+{
+	gpointer *data = (gpointer*) user_data;
+	int *done = (int*) data[0];
+	GnomeKeyringResult *r = (GnomeKeyringResult*) data[1];
+
+	*r = result;
+	*done = 1;
+}
+
+static void wait_for_request_completion(int *done)
+{
+	GMainContext *mc = g_main_context_default();
+	while (!*done)
+		g_main_context_iteration(mc, TRUE);
+}
+
+static GnomeKeyringResult gnome_keyring_item_delete_sync(const char *keyring, guint32 id)
+{
+	int done = 0;
+	GnomeKeyringResult result;
+	gpointer data[] = { &done, &result };
+
+	gnome_keyring_item_delete(keyring, id, gnome_keyring_done_cb, data,
+		NULL);
+
+	wait_for_request_completion(&done);
+
+	return result;
+}
+
+#endif
 #endif
 
 /*
-- 
1.8.4.rc4.6.g5555d19


-----------------------------------------------------------------------------------
This email message is for the sole use of the intended recipient(s) and may contain
confidential information.  Any unauthorized review, use, disclosure or distribution
is prohibited.  If you are not the intended recipient, please contact the sender by
reply email and destroy all copies of the original message.
-----------------------------------------------------------------------------------

  parent reply	other threads:[~2013-09-23 18:49 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-23 18:49 [PATCH v2 00/16] Make Gnome Credential helper more Gnome-y and support ancient distros Brandon Casey
2013-09-23 18:49 ` [PATCH v2 01/16] contrib/git-credential-gnome-keyring.c: remove unnecessary pre-declarations Brandon Casey
2013-09-23 18:49 ` [PATCH v2 02/16] contrib/git-credential-gnome-keyring.c: remove unused die() function Brandon Casey
2013-09-23 18:49 ` [PATCH v2 03/16] contrib/git-credential-gnome-keyring.c: *style* use "if ()" not "if()" etc Brandon Casey
2013-09-23 18:49 ` [PATCH v2 04/16] contrib/git-credential-gnome-keyring.c: add static where applicable Brandon Casey
2013-09-23 18:49 ` [PATCH v2 05/16] contrib/git-credential-gnome-keyring.c: exit non-zero when called incorrectly Brandon Casey
2013-09-23 18:49 ` [PATCH v2 06/16] contrib/git-credential-gnome-keyring.c: strlen() returns size_t, not ssize_t Brandon Casey
2013-09-23 18:49 ` [PATCH v2 07/16] contrib/git-credential-gnome-keyring.c: ensure buffer is non-empty before accessing Brandon Casey
2013-09-23 18:49 ` [PATCH v2 08/16] contrib/git-credential-gnome-keyring.c: set Gnome application name Brandon Casey
2013-09-23 18:49 ` [PATCH v2 09/16] contrib/git-credential-gnome-keyring.c: use gnome helpers in keyring_object() Brandon Casey
2013-09-23 18:49 ` [PATCH v2 10/16] contrib/git-credential-gnome-keyring.c: use secure memory functions for passwds Brandon Casey
2013-09-23 18:49 ` [PATCH v2 11/16] contrib/git-credential-gnome-keyring.c: use secure memory for reading passwords Brandon Casey
2013-09-23 18:49 ` [PATCH v2 12/16] contrib/git-credential-gnome-keyring.c: use glib memory allocation functions Brandon Casey
2013-09-23 18:49 ` [PATCH v2 13/16] contrib/git-credential-gnome-keyring.c: use glib messaging functions Brandon Casey
2013-09-23 18:49 ` [PATCH v2 14/16] contrib/git-credential-gnome-keyring.c: report failure to store password Brandon Casey
2013-09-23 18:49 ` [PATCH v2 15/16] contrib/git-credential-gnome-keyring.c: support ancient gnome-keyring Brandon Casey
2013-09-23 20:14   ` Felipe Contreras
2013-09-23 18:49 ` Brandon Casey [this message]
2013-09-23 20:15 ` [PATCH v2 00/16] Make Gnome Credential helper more Gnome-y and support ancient distros Felipe Contreras
2013-09-24  3:49 ` Jeff King
2013-10-15 22:40 ` Junio C Hamano
2013-10-15 22:54   ` Brandon Casey
2013-10-16 21:38     ` Junio C Hamano

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

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1379962157-1338-17-git-send-email-bcasey@nvidia.com \
    --to=bcasey@nvidia.com \
    --cc=drafnel@gmail.com \
    --cc=felipe.contreras@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=john@szakmeister.net \
    --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.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).