From a0b309ed4ca2af04a17bd915c2829a689292adbd Mon Sep 17 00:00:00 2001 From: Tom Feist Date: Sun, 22 Aug 2010 00:46:24 +0100 Subject: renamed patch file with svn rev patched against --- patches/add_bindings_interface-r5190.patch | 62 ++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 patches/add_bindings_interface-r5190.patch diff --git a/patches/add_bindings_interface-r5190.patch b/patches/add_bindings_interface-r5190.patch new file mode 100644 index 0000000..8286444 --- /dev/null +++ b/patches/add_bindings_interface-r5190.patch @@ -0,0 +1,62 @@ +Index: ui/UI.xs +=================================================================== +--- ui/UI.xs (revision 5190) ++++ ui/UI.xs (working copy) +@@ -106,3 +106,47 @@ + irssi_boot(UI__Formats); + irssi_boot(UI__Themes); + irssi_boot(UI__Window); ++ ++HV* ++bindings() ++PREINIT: ++ GSList *info; ++ GSList *key; ++CODE: ++ ++ RETVAL = newHV(); ++ sv_2mortal((SV*)RETVAL); ++ ++ /* loop stolen from keyboard.c#cmd_show_keys */ ++ ++ for (info = keyinfos; info != NULL; info = info->next) { ++ KEYINFO_REC *rec = info->data; ++ for (key = rec->keys; key != NULL; key = key->next) { ++ KEY_REC *key_rec = key->data; ++ ++ /* return value { key => [ info, data ] } */ ++ AV* value_array = newAV(); ++ ++ char *kinfo = key_rec->info->id; ++ char *kdata = key_rec->data; ++ ++ /* store info, or undef if it's null */ ++ av_push(value_array, kinfo != NULL ++ ? newSVpv(kinfo, strlen(kinfo)) ++ : newSV(0)); ++ ++ /* ditto data */ ++ av_push(value_array, kdata != NULL ++ ? newSVpv(kdata, strlen(kdata)) ++ : newSV(0)); ++ ++ /* wedge it all into a reference so we can use it in the hash */ ++ SV* value_ref = newRV_inc((SV*)value_array); ++ ++ /* and finally, set up the hash */ ++ hv_store(RETVAL, key_rec->key, strlen(key_rec->key), ++ value_ref, 0); ++ } ++ } ++OUTPUT: ++ RETVAL +Index: ui/module.h +=================================================================== +--- ui/module.h (revision 5190) ++++ ui/module.h (working copy) +@@ -12,3 +12,5 @@ + typedef TEXT_DEST_REC *Irssi__UI__TextDest; + typedef THEME_REC *Irssi__UI__Theme; + typedef KEYINFO_REC *Irssi__UI__Keyinfo; ++typedef KEY_REC *Irssi__UI__Key; ++ -- cgit v1.2.3