Skip to content

Commit

Permalink
contrib/git-credential-gnome-keyring.c: support really ancient gnome-…
Browse files Browse the repository at this point in the history
…keyring

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>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Brandon Casey authored and Junio C Hamano committed Oct 16, 2013
1 parent 5a3db11 commit 15f7221
Showing 1 changed file with 39 additions and 0 deletions.
39 changes: 39 additions & 0 deletions contrib/credential/gnome-keyring/git-credential-gnome-keyring.c
Original file line number Diff line number Diff line change
Expand Up @@ -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

/*
Expand Down

0 comments on commit 15f7221

Please sign in to comment.