summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoui Chang2015-06-24 10:43:42 -0400
committerLoui Chang2015-06-24 10:43:42 -0400
commitfd54ad0f7581574d7b4827c4f4b20022c6382087 (patch)
tree8bc075c43e468e29b577aaa3a7e1455277546298
downloadaur-rolo.tar.gz
rolo: Initial commit
Signed-off-by: Loui Chang <louipc.ist@gmail.com>
-rw-r--r--.SRCINFO31
-rw-r--r--PKGBUILD81
-rw-r--r--compare-in-utf-8.diff115
-rw-r--r--display-multiple-addresses.diff86
-rw-r--r--display-types.diff87
-rw-r--r--drop-libform.diff14
-rw-r--r--drop-rolorc-manpage.diff19
-rw-r--r--manpage-close-list.diff23
-rw-r--r--refresh-index-empty.diff19
-rw-r--r--use-ncursesw.diff20
-rw-r--r--use-usr-bin-editor.diff31
-rw-r--r--utf8-in-index.diff85
12 files changed, 611 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 00000000000..2f072a1cda9
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,31 @@
+pkgbase = rolo
+ pkgdesc = Tracks your contacts with vCards and displays them to you with a text-based menu.
+ pkgver = 011
+ pkgrel = 4
+ url = http://rolo.sourceforge.net
+ arch = i686
+ arch = x86_64
+ license = GPL
+ depends = ncurses
+ depends = libvc
+ source = http://sourceforge.net/projects/rolo/files/rolo/011/rolo-011.tar.gz
+ source = manpage-close-list.diff
+ source = refresh-index-empty.diff
+ source = drop-rolorc-manpage.diff
+ source = use-ncursesw.diff
+ source = drop-libform.diff
+ md5sums = c7478cdcc8179cb01755565901135e5e
+ md5sums = 3a944bf930363d585f1fe5b7201e6757
+ md5sums = dc68661245692efb127b29f64aa9cc98
+ md5sums = 2013dc0709425ef761e8f90e85b0b6a2
+ md5sums = 69ca99eff67e1cc7f7231fec3bb72ee4
+ md5sums = dc493c8f214a17e5a9e954ab052547f6
+ sha256sums = 83edfb7f2de66556fb8fb516ff40dc152ae3af1f19876086ad9ec23a4abbe0e3
+ sha256sums = 383fb7aa07d0f0db76c7a03a3e0967a559660861a025df1992e30e35d70db803
+ sha256sums = ac90483da10ab6da25e4fd696cd3a499246eedcc314125cbea54550bf64b69b6
+ sha256sums = 49f2fc9760756fd25f48078307dfa8121d630053d6cde19fcfb6c6e9d11df70f
+ sha256sums = 7373f0a5a8c1d9a08cd424903563d03a3fb040d4c54c786ad23956eedf4448c5
+ sha256sums = ca0922907a9e4cc41c3c941c201b59926948b05d7e294f03430ceec643db0aaa
+
+pkgname = rolo
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 00000000000..9d77fe02ba7
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,81 @@
+# Maintainer: Loui Chang <base64:bG91aXBjLmlzdEBnbWFpbC5jb20=>
+# Contributor: Matthias Hueser <mail at mhueser dot de>
+# Contributor: Daniel Griffiths <ghost1227 at archlinux dot us>
+
+pkgname=rolo
+pkgver=011
+pkgrel=4
+pkgdesc="Tracks your contacts with vCards and displays them to you with
+ a text-based menu."
+arch=('i686' 'x86_64')
+url="http://rolo.sourceforge.net"
+license=('GPL')
+depends=('ncurses' 'libvc')
+source=(http://sourceforge.net/projects/rolo/files/rolo/011/rolo-011.tar.gz)
+
+# Patches copied from
+# https://anonscm.debian.org/cgit/users/rafael/deb-pkg/rolo.git
+# Commented out ones I thought were a bit overreaching
+
+source+=(
+ manpage-close-list.diff
+ refresh-index-empty.diff
+ drop-rolorc-manpage.diff
+# display-types.diff
+# use-usr-bin-editor.diff
+# display-multiple-addresses.diff
+ use-ncursesw.diff
+# utf8-in-index.diff
+ drop-libform.diff
+# compare-in-utf-8.diff
+)
+
+build() {
+ cd $srcdir/$pkgname-$pkgver
+
+ patch -p1 < ../manpage-close-list.diff
+ patch -p1 < ../refresh-index-empty.diff
+ patch -p1 < ../drop-rolorc-manpage.diff
+# patch -p1 < ../display-types.diff
+# patch -p1 < ../use-usr-bin-editor.diff
+# patch -p1 < ../display-multiple-addresses.diff
+ patch -p1 < ../use-ncursesw.diff
+# patch -p1 < ../utf8-in-index.diff
+ patch -p1 < ../drop-libform.diff
+# patch -p1 < ../compare-in-utf-8.diff
+
+ ./configure --prefix=/usr --mandir=/usr/share/man
+ make
+}
+
+package() {
+ cd $srcdir/$pkgname-$pkgver
+ make DESTDIR="$pkgdir" install
+}
+
+md5sums=(
+ 'c7478cdcc8179cb01755565901135e5e'
+ '3a944bf930363d585f1fe5b7201e6757'
+ 'dc68661245692efb127b29f64aa9cc98'
+ '2013dc0709425ef761e8f90e85b0b6a2'
+# '2f042e2e6e2147901b83b1bf99600a96'
+# '6dbc3c454650ec6b6b9ef75f65154e4a'
+# 'd7629629831e674d65b4cc8e1696c50c'
+ '69ca99eff67e1cc7f7231fec3bb72ee4'
+# 'b7fcb4b3030fb044062fa79f822cec01'
+ 'dc493c8f214a17e5a9e954ab052547f6'
+# '0d7e72bfe133e561be1bde232d59e153'
+)
+sha256sums=(
+ '83edfb7f2de66556fb8fb516ff40dc152ae3af1f19876086ad9ec23a4abbe0e3'
+ '383fb7aa07d0f0db76c7a03a3e0967a559660861a025df1992e30e35d70db803'
+ 'ac90483da10ab6da25e4fd696cd3a499246eedcc314125cbea54550bf64b69b6'
+ '49f2fc9760756fd25f48078307dfa8121d630053d6cde19fcfb6c6e9d11df70f'
+# '2569d68f88488e599929df01a14c8ab5119d3b31cfcc81bcd4f32998d82b0015'
+# '2a5bb28f6e53f10f9cfb9dac6e80c65c41e4a68535c5881c8f5f10adb6e04ae5'
+# 'ce338ba0afb65e705910c206f4d555bafef6a78ba7d3ed4a0fbc8056fcc370e1'
+ '7373f0a5a8c1d9a08cd424903563d03a3fb040d4c54c786ad23956eedf4448c5'
+# '56825f5d7d791bbbc1c01290708eaf82c6ebfe710a20f037ee91446dc99bec4c'
+ 'ca0922907a9e4cc41c3c941c201b59926948b05d7e294f03430ceec643db0aaa'
+# '4a658c26ca8eb6207faa3c439d52dbf3462f6f3eb79d8b22ea9ba00d6ceb755c'
+)
diff --git a/compare-in-utf-8.diff b/compare-in-utf-8.diff
new file mode 100644
index 00000000000..2b65b178460
--- /dev/null
+++ b/compare-in-utf-8.diff
@@ -0,0 +1,115 @@
+Correctly order the names in the index when they contain UTF-8
+characters. Use libunac for converting the accented characters in
+UTF-8 into plain ASCII.
+
+ -- Rafael Laboissiere <rafael@debian.org> Sat, 21 Feb 2009 19:18:36 +0100
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -22,6 +22,10 @@
+ LIBS="$LIBS $(pkg-config glib-2.0 --libs)"
+ CFLAGS="$CFLAGS $(pkg-config glib-2.0 --cflags)"
+
++# Libunac settings
++LIBS="$LIBS $(pkg-config unac --libs)"
++CFLAGS="$CFLAGS $(pkg-config unac --cflags)"
++
+ # Checks for header files.
+ AC_HEADER_STDC
+
+--- a/src/entry.c
++++ b/src/entry.c
+@@ -25,6 +25,7 @@
+ #include <string.h>
+ #include <vc.h>
+ #include <glib/gunicode.h>
++#include <unac.h>
+
+ #define MENU_PRINT_FORMAT_SIZE 80
+
+@@ -175,15 +176,43 @@
+ entry_node **ena = NULL;
+ entry_node **enb = NULL;
+
++ char* ena_desc = NULL;
++ char* enb_desc = NULL;
++ char* pure_a = NULL;
++ char* pure_b = NULL;
++ int length[1] = {0};
++ int a_alloc = 1;
++ int b_alloc = 1;
++
+ ena = (entry_node **) a;
+ enb = (entry_node **) b;
+
+- ret_val = cmp_given_n ((*ena)->description, (*enb)->description);
++ ena_desc = (*ena)->description;
++ enb_desc = (*enb)->description;
++
++ /* Try to convert the strings from UTF-8 and fall back to the original
++ strings if it fails */
++ if (unac_string ("UTF-8", ena_desc, strlen (ena_desc), &pure_a, length)) {
++ pure_a = ena_desc;
++ a_alloc = 0;
++ }
++
++ if (unac_string ("UTF-8", enb_desc, strlen (enb_desc), &pure_b, length)) {
++ pure_b = enb_desc;
++ b_alloc = 0;
++ }
++
++ ret_val = cmp_given_n (pure_a, pure_b);
+ if (0 == ret_val)
+ {
+- ret_val = strcmp ((*ena)->description, (*enb)->description);
++ ret_val = strcmp (pure_a, pure_b);
+ }
+
++ if (a_alloc)
++ free (pure_a);
++ if (b_alloc)
++ free (pure_b);
++
+ return ret_val;
+ }
+
+@@ -197,10 +226,38 @@
+ entry_node **ena = NULL;
+ entry_node **enb = NULL;
+
++ char* ena_desc = NULL;
++ char* enb_desc = NULL;
++ char* pure_a = NULL;
++ char* pure_b = NULL;
++ int length[1] = {0};
++ int a_alloc = 1;
++ int b_alloc = 1;
++
+ ena = (entry_node **) a;
+ enb = (entry_node **) b;
+
+- ret_val = strcmp ((*ena)->description, (*enb)->description);
++ ena_desc = (*ena)->description;
++ enb_desc = (*enb)->description;
++
++ /* Try to convert the strings from UTF-8 and fall back to the original
++ strings if it fails */
++ if (unac_string ("UTF-8", ena_desc, strlen (ena_desc), &pure_a, length)) {
++ pure_a = ena_desc;
++ a_alloc = 0;
++ }
++
++ if (unac_string ("UTF-8", enb_desc, strlen (enb_desc), &pure_b, length)) {
++ pure_b = enb_desc;
++ b_alloc = 0;
++ }
++
++ ret_val = strcmp (pure_a, pure_b);
++
++ if (a_alloc)
++ free (pure_a);
++ if (b_alloc)
++ free (pure_b);
+
+ return ret_val;
+ }
diff --git a/display-multiple-addresses.diff b/display-multiple-addresses.diff
new file mode 100644
index 00000000000..444673506e1
--- /dev/null
+++ b/display-multiple-addresses.diff
@@ -0,0 +1,86 @@
+Display multiple addresses present in a vCard, along with their "TYPE" arguments
+
+ -- Rafael Laboissiere <rafael@debian.org> Sat, 20 Sep 2008 21:35:22 +0200
+
+--- a/src/view.c
++++ b/src/view.c
+@@ -226,6 +226,8 @@
+ view_geo ()
+ {
+ vc_component *vc = NULL;
++ vc_component_param *vcp = NULL;
++ char *type = NULL;
+ char *str = NULL;
+ char *val = NULL;
+ int x = 0;
+@@ -261,38 +263,46 @@
+
+ wprintw (sub, "\n");
+
+- vc = vc_get_next_by_name (g_v, VC_ADDRESS);
+- val = vc_get_value (vc);
++ vc = g_v;
++ while (vc = vc_get_next_by_name (vc, VC_ADDRESS)) {
+
+- str = get_val_struct_part (val, ADR_PO_BOX);
+- wprintw (sub, "Post Office Box : %s\n", str ? str : "");
+- free (str);
++ vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
++ type = vcp ? vc_param_get_value (vcp) : NULL;
++ wprintw (sub, type ? "[%s]\n" : "%s", type ? type : "");
+
+- str = get_val_struct_part (val, ADR_EXT_ADDRESS);
+- wprintw (sub, "Extended Address : %s\n", str ? str : "");
+- free (str);
++ val = vc_get_value (vc);
+
+- str = get_val_struct_part (val, ADR_STREET);
+- wprintw (sub, "Street Address : %s\n", str ? str : "");
+- free (str);
++ str = get_val_struct_part (val, ADR_PO_BOX);
++ wprintw (sub, "Post Office Box : %s\n", str ? str : "");
++ free (str);
+
+- str = get_val_struct_part (val, ADR_LOCALITY);
+- wprintw (sub, "Locality : %s\n", str ? str : "");
+- free (str);
++ str = get_val_struct_part (val, ADR_EXT_ADDRESS);
++ wprintw (sub, "Extended Address : %s\n", str ? str : "");
++ free (str);
+
+- str = get_val_struct_part (val, ADR_REGION);
+- wprintw (sub, "Region : %s\n", str ? str : "");
+- free (str);
++ str = get_val_struct_part (val, ADR_STREET);
++ wprintw (sub, "Street Address : %s\n", str ? str : "");
++ free (str);
+
+- str = get_val_struct_part (val, ADR_POSTAL_CODE);
+- wprintw (sub, "Postal Code : %s\n", str ? str : "");
+- free (str);
++ str = get_val_struct_part (val, ADR_LOCALITY);
++ wprintw (sub, "Locality : %s\n", str ? str : "");
++ free (str);
+
+- str = get_val_struct_part (val, ADR_COUNTRY);
+- wprintw (sub, "Country : %s\n", str ? str : "");
+- free (str);
++ str = get_val_struct_part (val, ADR_REGION);
++ wprintw (sub, "Region : %s\n", str ? str : "");
++ free (str);
++
++ str = get_val_struct_part (val, ADR_POSTAL_CODE);
++ wprintw (sub, "Postal Code : %s\n", str ? str : "");
++ free (str);
++
++ str = get_val_struct_part (val, ADR_COUNTRY);
++ wprintw (sub, "Country : %s\n", str ? str : "");
++ free (str);
++
++ wprintw (sub, "\n");
++ }
+
+- wprintw (sub, "\n");
+ touchwin (win);
+ wrefresh (sub);
+ wrefresh (win);
diff --git a/display-types.diff b/display-types.diff
new file mode 100644
index 00000000000..6146c8e61fc
--- /dev/null
+++ b/display-types.diff
@@ -0,0 +1,87 @@
+Display the value of "TYPE" attributes for vCard fields that have such
+attribute (closes: #442457)
+
+ -- Rafael Laboissiere <rafael@debian.org> Mon, 30 Jun 2008 16:46:12 +0200
+
+Index: rolo-011.dfsg.1/src/view.c
+===================================================================
+--- rolo-011.dfsg.1.orig/src/view.c 2008-06-30 16:50:13.000000000 +0200
++++ rolo-011.dfsg.1/src/view.c 2008-06-30 16:50:23.000000000 +0200
+@@ -305,10 +305,14 @@
+ view_tel ()
+ {
+ vc_component *vc = NULL;
++ vc_component_param *vcp = NULL;
+ char *val = NULL;
++ char *type = NULL;
++ char fmt [80];
++ char tmp [80];
+ int x = 0;
+ int y = 0;
+- int i = 0;
++ int len = -1;
+
+ g_mode = VIEW_TEL;
+
+@@ -322,20 +326,53 @@
+ wstandend (sub);
+ wmove (sub, 3, 0);
+
+- for (i = 1, vc = g_v; i <= 5; i++)
++ len = -1;
++ vc = g_v;
++ while (vc = vc_get_next_by_name (vc, VC_TELEPHONE))
++ {
++ vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
++ if (vcp)
++ {
++ type = vc_param_get_value (vcp);
++ if ((len < 0) | (len < strlen (type)))
++ len = strlen (type) + 2; /* take parentheses into account */
++ }
++ }
++
++ vc = g_v;
++ while (vc = vc_get_next_by_name (vc, VC_TELEPHONE))
+ {
+- vc = vc_get_next_by_name (vc, VC_TELEPHONE);
+- val = vc_get_value (vc);
+- wprintw (sub, "Telephone #%i : %s\n", i, val ? val : "");
++ vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
++ type = vcp ? vc_param_get_value (vcp) : NULL;
++ val = vc ? vc_get_value (vc) : NULL;
++ snprintf (fmt, 79, "Telephone %%%ds : %%s\n", len);
++ snprintf (tmp, 79, type ? "(%s)" : "", type);
++ wprintw (sub, fmt, tmp, val ? val : "");
+ }
+
+ wprintw (sub, "\n");
+
+- for (i = 1, vc = g_v; i <= 5; i++)
++ len = -1;
++ vc = g_v;
++ while (vc = vc_get_next_by_name (vc, VC_EMAIL))
++ {
++ vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
++ if (vcp) {
++ type = vc_param_get_value (vcp);
++ if ((len < 0) | (len < strlen (type)))
++ len = strlen (type) + 2; /* take parentheses into account */
++ }
++ }
++
++ vc = g_v;
++ while (vc = vc_get_next_by_name (vc, VC_EMAIL))
+ {
+- vc = vc_get_next_by_name (vc, VC_EMAIL);
+- val = vc_get_value (vc);
+- wprintw (sub, "Email Address #%i : %s\n", i, val ? val : "");
++ vcp = vc ? vc_param_get_by_name (vc_get_param (vc), "type") : NULL;
++ type = vcp ? vc_param_get_value (vcp) : NULL;
++ val = vc ? vc_get_value (vc) : NULL;
++ snprintf (fmt, 79, "Email Address %%%ds : %%s\n", len);
++ snprintf (tmp, 79, type ? "(%s)" : "", type);
++ wprintw (sub, fmt, tmp, val ? val : "");
+ }
+
+ wprintw (sub, "\n");
diff --git a/drop-libform.diff b/drop-libform.diff
new file mode 100644
index 00000000000..93427a432a8
--- /dev/null
+++ b/drop-libform.diff
@@ -0,0 +1,14 @@
+Avoid linking against libformw. This was indicated by dpkg-shlibdeps.
+
+ -- Rafael Laboissiere <rafael@debian.org> Fri, 13 Feb 2009 18:22:28 +0100
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -16,7 +16,6 @@
+ AC_CHECK_LIB(vc, vc_new)
+ AC_CHECK_LIB(ncursesw, newwin)
+ AC_CHECK_LIB(menuw, new_menu)
+-AC_CHECK_LIB(formw, new_form)
+ CFLAGS="$CFLAGS -I/usr/include/ncursesw/"
+
+ # Glib settings
diff --git a/drop-rolorc-manpage.diff b/drop-rolorc-manpage.diff
new file mode 100644
index 00000000000..cbb1d5ddb7d
--- /dev/null
+++ b/drop-rolorc-manpage.diff
@@ -0,0 +1,19 @@
+Remove the references to ~/.rolorc in the man page. This file is
+not used by rolo and the mention to it in the man page is
+probably a mistake from the upstream author (closes: #421926).
+
+ -- Rafael Laboissiere <rafael@debian.org> Mon, 30 Jun 2008 16:46:12 +0200
+
+Index: rolo-011.dfsg.1/doc/rolo.1
+===================================================================
+--- rolo-011.dfsg.1.orig/doc/rolo.1 2008-06-30 16:49:08.000000000 +0200
++++ rolo-011.dfsg.1/doc/rolo.1 2008-06-30 16:49:14.000000000 +0200
+@@ -45,8 +45,6 @@
+ .El
+ .Sh FILES
+ .Bl -tag -width "~/.rolo/contacts.vcf" -compact
+-.It Pa ~/.rolo/rolorc
+-Rolo configuration file.
+ .It Pa ~/.rolo/contacts.vcf
+ Default data file that rolo reads upon startup.
+ .El
diff --git a/manpage-close-list.diff b/manpage-close-list.diff
new file mode 100644
index 00000000000..ba0f1b3a55a
--- /dev/null
+++ b/manpage-close-list.diff
@@ -0,0 +1,23 @@
+Close unended lists
+
+ -- Rafael Laboissiere <rafael@debian.org> Mon, 30 Jun 2008 16:46:12 +0200
+
+Index: rolo-011.dfsg.1/doc/rolo.1
+===================================================================
+--- rolo-011.dfsg.1.orig/doc/rolo.1 2008-06-30 16:47:37.000000000 +0200
++++ rolo-011.dfsg.1/doc/rolo.1 2008-06-30 16:47:53.000000000 +0200
+@@ -42,12 +42,14 @@
+ to invoke when displaying contact entries in advanced edit. If
+ ROLO_EDITOR is not set, then EDITOR is used. If EDITOR is also not
+ set, the default value of vi is used.
++.El
+ .Sh FILES
+ .Bl -tag -width "~/.rolo/contacts.vcf" -compact
+ .It Pa ~/.rolo/rolorc
+ Rolo configuration file.
+ .It Pa ~/.rolo/contacts.vcf
+ Default data file that rolo reads upon startup.
++.El
+ .Sh SEE ALSO
+ .Xr vi 1
+ .Sh AUTHORS
diff --git a/refresh-index-empty.diff b/refresh-index-empty.diff
new file mode 100644
index 00000000000..3d589550a17
--- /dev/null
+++ b/refresh-index-empty.diff
@@ -0,0 +1,19 @@
+Avoid a segmentation fault when deleting a record in a vcf file containing
+that single record (closes: #415737)
+
+ -- Rafael Laboissiere <rafael@debian.org> Mon, 30 Jun 2008 16:46:12 +0200
+
+Index: rolo-011.dfsg.1/src/index.c
+===================================================================
+--- rolo-011.dfsg.1.orig/src/index.c 2008-06-30 16:48:31.000000000 +0200
++++ rolo-011.dfsg.1/src/index.c 2008-06-30 16:48:37.000000000 +0200
+@@ -616,7 +616,8 @@
+
+ items = menu_items (menu);
+ current_index = current_index >= count ? count : current_index;
+- set_current_item (menu, items[current_index]);
++ if (items != NULL)
++ set_current_item (menu, items[current_index]);
+ }
+
+ /***************************************************************************
diff --git a/use-ncursesw.diff b/use-ncursesw.diff
new file mode 100644
index 00000000000..aae3af13ee0
--- /dev/null
+++ b/use-ncursesw.diff
@@ -0,0 +1,20 @@
+Use libncursesw instead of libncurses, in order to get UTF-8 support
+
+ -- Rafael Laboissiere <rafael@debian.org> Thu, 12 Feb 2009 00:22:58 +0100
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -14,9 +14,10 @@
+
+ # Checks for libraries.
+ AC_CHECK_LIB(vc, vc_new)
+-AC_CHECK_LIB(ncurses, newwin)
+-AC_CHECK_LIB(menu, new_menu)
+-AC_CHECK_LIB(form, new_form)
++AC_CHECK_LIB(ncursesw, newwin)
++AC_CHECK_LIB(menuw, new_menu)
++AC_CHECK_LIB(formw, new_form)
++CFLAGS="$CFLAGS -I/usr/include/ncursesw/"
+
+ # Checks for header files.
+ AC_HEADER_STDC
diff --git a/use-usr-bin-editor.diff b/use-usr-bin-editor.diff
new file mode 100644
index 00000000000..f3944f51327
--- /dev/null
+++ b/use-usr-bin-editor.diff
@@ -0,0 +1,31 @@
+Use /usr/bin/editor instead of vi as the default editor when EDITOR and
+ROLO_EDITOR environment variables are not defined.
+
+ -- Rafael Laboissiere <rafael@debian.org> Sun, 13 Jul 2008 17:51:18 +0200
+
+Index: rolo-011.dfsg.1/doc/rolo.1
+===================================================================
+--- rolo-011.dfsg.1.orig/doc/rolo.1 2008-07-13 17:47:54.000000000 +0200
++++ rolo-011.dfsg.1/doc/rolo.1 2008-07-13 17:48:07.000000000 +0200
+@@ -41,7 +41,7 @@
+ If ROLO_EDITOR is set, its value is used as the name of the program
+ to invoke when displaying contact entries in advanced edit. If
+ ROLO_EDITOR is not set, then EDITOR is used. If EDITOR is also not
+-set, the default value of vi is used.
++set, the default value of /usr/bin/editor is used.
+ .El
+ .Sh FILES
+ .Bl -tag -width "~/.rolo/contacts.vcf" -compact
+Index: rolo-011.dfsg.1/src/main.c
+===================================================================
+--- rolo-011.dfsg.1.orig/src/main.c 2008-07-13 17:47:16.000000000 +0200
++++ rolo-011.dfsg.1/src/main.c 2008-07-13 17:47:41.000000000 +0200
+@@ -87,7 +87,7 @@
+ editor = getenv ("EDITOR");
+ if (NULL == editor)
+ {
+- editor = strdup ("vi");
++ editor = strdup ("/usr/bin/editor");
+ return editor;
+ }
+ }
diff --git a/utf8-in-index.diff b/utf8-in-index.diff
new file mode 100644
index 00000000000..e7ee5b66000
--- /dev/null
+++ b/utf8-in-index.diff
@@ -0,0 +1,85 @@
+Display the columns correctly in the index screen when the names are
+encoded in UTF-8 characters. This hack is obtained by changing the way
+the set_menu_print_format function sets the menu_print_format variable.
+I am not fully happy with this solution, but it works and seems to close
+Bug#514933. Note also that the configure.ac script must be changed in order
+to have the right CFLAGS and LIBS variables being passed to Makefile.
+
+ -- Rafael Laboissiere <rafael@debian.org> Fri, 13 Feb 2009 02:21:34 +0100
+
+--- a/configure.ac
++++ b/configure.ac
+@@ -19,6 +19,10 @@
+ AC_CHECK_LIB(formw, new_form)
+ CFLAGS="$CFLAGS -I/usr/include/ncursesw/"
+
++# Glib settings
++LIBS="$LIBS $(pkg-config glib-2.0 --libs)"
++CFLAGS="$CFLAGS $(pkg-config glib-2.0 --cflags)"
++
+ # Checks for header files.
+ AC_HEADER_STDC
+
+--- a/src/entry.c
++++ b/src/entry.c
+@@ -24,8 +24,9 @@
+ #include <ncurses.h>
+ #include <string.h>
+ #include <vc.h>
++#include <glib/gunicode.h>
+
+-#define MENU_PRINT_FORMAT_SIZE 38
++#define MENU_PRINT_FORMAT_SIZE 80
+
+ static int cmp_tel (const char *desc_a, const char *desc_b);
+ static int cmp_email (const char *desc_a, const char *desc_b);
+@@ -37,7 +38,9 @@
+ static char *construct_menu_name (const char *family_name,
+ const char *given_name, const char *email,
+ const char *tel);
+-static void set_menu_print_format (char *menu_print_format, int width);
++static void set_menu_print_format (char *menu_print_format,
++ const char* fn, const char* gn,
++ const char* em);
+
+ /***************************************************************************
+ */
+@@ -451,9 +454,10 @@
+ /* FIXME: get the y and x vals from arguments passed to this function
+ so that this module will not need to rely on ncurses.h */
+ getmaxyx (stdscr, y, x);
+- menu_name = (char *) malloc (sizeof (char) * (x - 5 + 1));
++ /* Allow enough room for UTF-8 characters */
++ menu_name = (char *) malloc (sizeof (char) * 2 * x);
+
+- set_menu_print_format (menu_print_format, x);
++ set_menu_print_format (menu_print_format, family_name, given_name, email);
+ sprintf (menu_name, menu_print_format,
+ family_name ? family_name : "",
+ given_name ? given_name : "", email ? email : "", tel ? tel : "");
+@@ -466,8 +470,23 @@
+ */
+
+ static void
+-set_menu_print_format (char *menu_print_format, int width)
++set_menu_print_format (char *menu_print_format,
++ const char* fn, const char* gn, const char* em)
+ {
++ int fn_len, gn_len, em_len;
++ fn_len = gn_len = 12;
++ em_len = 30;
++ if (fn)
++ fn_len += strlen (fn) - g_utf8_strlen (fn, -1);
++ if (gn)
++ gn_len += strlen (gn) - g_utf8_strlen (gn, -1);
++ if (em)
++ em_len += strlen (em) - g_utf8_strlen (em, -1);
++
++ snprintf (menu_print_format, MENU_PRINT_FORMAT_SIZE,
++ "%%-%d.%ds %%-%d.%ds %%-%d.%ds %%-18.18s",
++ fn_len, fn_len, gn_len, gn_len, em_len, em_len);
++
+ /* 75 characters long -- fits into 80 character wide screen */
+- strcpy (menu_print_format, "%-12.12s %-12.12s %-30.30s %-18.18s");
++ /* strcpy (menu_print_format, "%-12.12s %-12.12s %-30.30s %-18.18s"); */
+ }