summaryrefslogtreecommitdiff
path: root/packages
diff options
context:
space:
mode:
authorFrans Meulenbroeks <fransmeulenbroeks@gmail.com>2009-02-23 18:57:57 +0100
committerFrans Meulenbroeks <fransmeulenbroeks@gmail.com>2009-02-23 18:57:57 +0100
commite1dd20e04f1a09561b20ea959a27a24d3a82c506 (patch)
tree0edf44a2f9cf08b0cd4fbbb0a960645edd44650c /packages
parentf2092fad1832d04356879acfc7c33e820a1313cb (diff)
parent3d377399ab4ac700866b75d5229bd78ce72500fb (diff)
Merge branch 'org.openembedded.dev' of git@git.openembedded.net:openembedded into org.openembedded.dev
Diffstat (limited to 'packages')
-rw-r--r--packages/e2fsprogs/e2fsprogs_1.41.4.bb101
-rw-r--r--packages/initrdscripts/files/00-psplash.sh8
-rw-r--r--packages/initrdscripts/files/80-ext3.sh2
-rw-r--r--packages/initrdscripts/files/98-aufs.sh2
-rw-r--r--packages/initrdscripts/files/99-psplash.sh6
-rw-r--r--packages/initrdscripts/files/init.sh7
-rw-r--r--packages/initrdscripts/initramfs-module-psplash_1.0.bb2
-rw-r--r--packages/matchbox-panel/matchbox-panel-0.9.3/mb-applet-system-monitor-crash.patch85
-rw-r--r--packages/matchbox-panel/matchbox-panel_0.9.3.bb5
-rw-r--r--packages/mc/mc-4.6.2/00-70-utf8-common.patch46
-rw-r--r--packages/mc/mc-4.6.2/00-73-utf8-bottom-buttons-width.patch21
-rw-r--r--packages/mc/mc-4.6.2/00-75-utf8-cmdline-help.patch63
-rw-r--r--packages/mc/mc-4.6.2/00-76-utf8-hotlist-highlight.patch23
-rw-r--r--packages/mc/mc-4.6.2/00-77-utf8-filename-search-highlight.patch17
-rw-r--r--packages/mc/mc-4.6.2/mc-utf8-look-and-feel.patch206
-rw-r--r--packages/mc/mc-4.6.2/mc-utf8-nlink.patch11
-rw-r--r--packages/mc/mc-4.6.2/mc-utf8.patch5357
-rw-r--r--packages/mc/mc-4.6.2/mhl-stdbool.patch16
-rw-r--r--packages/mc/mc_4.6.2.bb60
-rw-r--r--packages/psplash/files/psplash-init12
-rw-r--r--packages/psplash/psplash_svn.bb2
-rw-r--r--packages/u-boot/u-boot-1.3.2/boc01/007-090217-CAPSENSE.patch (renamed from packages/u-boot/u-boot-1.3.2/boc01/007-090112-CAPSENSE.patch)4
-rw-r--r--packages/u-boot/u-boot_1.3.2.bb4
23 files changed, 6037 insertions, 23 deletions
diff --git a/packages/e2fsprogs/e2fsprogs_1.41.4.bb b/packages/e2fsprogs/e2fsprogs_1.41.4.bb
new file mode 100644
index 0000000000..9d85523445
--- /dev/null
+++ b/packages/e2fsprogs/e2fsprogs_1.41.4.bb
@@ -0,0 +1,101 @@
+require e2fsprogs.inc
+
+PR = "r18"
+
+#SRC_URI += "file://no-hardlinks.patch;patch=1 \
+# file://mkinstalldirs.patch;patch=1 \
+# "
+
+do_configure() {
+ # avoid autoreconf
+ oe_runconf $@
+}
+
+do_compile_prepend () {
+ find ./ -print|xargs chmod u=rwX
+ ( cd util; ${BUILD_CC} subst.c -o subst )
+}
+
+ext2fsheaders = "ext2_ext_attr.h bitops.h ext2_err.h \
+ ext2_types.h ext2_fs.h ext2_io.h \
+ ext2fs.h"
+e2pheaders = "e2p.h"
+
+do_stage () {
+ oe_libinstall -a -C lib libe2p ${STAGING_LIBDIR}/
+ oe_libinstall -a -C lib libext2fs ${STAGING_LIBDIR}/
+ install -d ${STAGING_INCDIR}/e2p
+ for h in ${e2pheaders}; do
+ install -m 0644 lib/e2p/$h ${STAGING_INCDIR}/e2p/ || die "failed to install $h"
+ done
+ install -d ${STAGING_INCDIR}/ext2fs
+ for h in ${ext2fsheaders}; do
+ install -m 0644 lib/ext2fs/$h ${STAGING_INCDIR}/ext2fs/ || die "failed to install $h"
+ done
+ autotools_stage_all
+}
+
+# blkid used to be part of e2fsprogs but is useful outside, add it
+# as an RDEPENDS so that anything relying on it being in e2fsprogs
+# still works
+RDEPENDS_e2fsprogs = "e2fsprogs-blkid e2fsprogs-uuidgen e2fsprogs-badblocks"
+
+PACKAGES =+ "e2fsprogs-blkid e2fsprogs-uuidgen e2fsprogs-e2fsck e2fsprogs-mke2fs e2fsprogs-fsck e2fsprogs-tune2fs e2fsprogs-badblocks"
+FILES_e2fsprogs-blkid = "${base_sbindir}/blkid.${PN}"
+FILES_e2fsprogs-uuidgen = "${bindir}/uuidgen"
+FILES_e2fsprogs-fsck = "${base_sbindir}/fsck.${PN}"
+FILES_e2fsprogs-e2fsck = "${base_sbindir}/e2fsck.${PN} ${base_sbindir}/fsck.ext*.${PN}"
+FILES_e2fsprogs-mke2fs = "${base_sbindir}/mke2fs.${PN} ${base_sbindir}/mkfs.ext*.${PN}"
+FILES_e2fsprogs-tune2fs = "${base_sbindir}/tune2fs ${base_sbindir}/e2label ${base_sbindir}/findfs"
+FILES_e2fsprogs-badblocks = "${base_sbindir}/badblocks"
+
+do_install_append () {
+ mv ${D}${base_sbindir}/fsck ${D}${base_sbindir}/fsck.${PN}
+ mv ${D}${base_sbindir}/blkid ${D}${base_sbindir}/blkid.${PN}
+ mv ${D}${base_sbindir}/e2fsck ${D}${base_sbindir}/e2fsck.${PN}
+ mv ${D}${base_sbindir}/fsck.ext2 ${D}${base_sbindir}/fsck.ext2.${PN}
+ mv ${D}${base_sbindir}/fsck.ext3 ${D}${base_sbindir}/fsck.ext3.${PN}
+ mv ${D}${base_sbindir}/mke2fs ${D}${base_sbindir}/mke2fs.${PN}
+ mv ${D}${base_sbindir}/mkfs.ext2 ${D}${base_sbindir}/mkfs.ext2.${PN}
+ mv ${D}${base_sbindir}/mkfs.ext3 ${D}${base_sbindir}/mkfs.ext3.${PN}
+}
+
+pkg_postinst_e2fsprogs-fsck () {
+ update-alternatives --install ${base_sbindir}/fsck fsck fsck.${PN} 100
+}
+
+pkg_prerm_e2fsprogs-fsck () {
+ update-alternatives --remove fsck fsck.${PN}
+}
+
+pkg_postinst_e2fsprogs-blkid () {
+ update-alternatives --install ${base_sbindir}/blkid blkid blkid.${PN} 100
+}
+
+pkg_prerm_e2fsprogs-blkid () {
+ update-alternatives --remove blkid blkid.${PN}
+}
+
+pkg_postinst_e2fsprogs-e2fsck () {
+ update-alternatives --install ${base_sbindir}/e2fsck e2fsck e2fsck.${PN} 100
+ update-alternatives --install ${base_sbindir}/fsck.ext2 fsck.ext2 fsck.ext2.${PN} 100
+ update-alternatives --install ${base_sbindir}/fsck.ext3 fsck.ext3 fsck.ext3.${PN} 100
+}
+
+pkg_prerm_e2fsprogs-e2fsck () {
+ update-alternatives --remove e2fsck e2fsck.${PN}
+ update-alternatives --remove fsck.ext2 fsck.ext2.${PN}
+ update-alternatives --remove fsck.ext3 fsck.ext3.${PN}
+}
+
+pkg_postinst_e2fsprogs-mke2fs () {
+ update-alternatives --install ${base_sbindir}/mke2fs mke2fs mke2fs.${PN} 100
+ update-alternatives --install ${base_sbindir}/mkfs.ext2 mkfs.ext2 mkfs.ext2.${PN} 100
+ update-alternatives --install ${base_sbindir}/mkfs.ext3 mkfs.ext3 mkfs.ext3.${PN} 100
+}
+
+pkg_prerm_e2fsprogs-mke2fs () {
+ update-alternatives --remove mke2fs mke2fs.${PN}
+ update-alternatives --remove mkfs.ext2 mkfs.ext2.${PN}
+ update-alternatives --remove mkfs.ext3 mkfs.ext3.${PN}
+}
diff --git a/packages/initrdscripts/files/00-psplash.sh b/packages/initrdscripts/files/00-psplash.sh
index 491fe13fc3..db8aabedd7 100644
--- a/packages/initrdscripts/files/00-psplash.sh
+++ b/packages/initrdscripts/files/00-psplash.sh
@@ -1,4 +1,6 @@
-mkdir -p /mnt/.psplash
-mount tmpfs -t tmpfs /mnt/.psplash -o,size=40k
+if ! grep -Eq '\s?psplash=false\s?' /proc/cmdline; then
+ mkdir -p /mnt/.psplash
+ mount tmpfs -t tmpfs /mnt/.psplash -o,size=40k
-psplash &
+ psplash &
+fi
diff --git a/packages/initrdscripts/files/80-ext3.sh b/packages/initrdscripts/files/80-ext3.sh
index ed1909947b..1f52d391fa 100644
--- a/packages/initrdscripts/files/80-ext3.sh
+++ b/packages/initrdscripts/files/80-ext3.sh
@@ -1,7 +1,7 @@
ext3_mount () {
modprobe -q ext3
- mkdir $2
+ mkdir -p $2
mount -t ext3 -onoatime,data=journal,errors=continue $1 $2
}
diff --git a/packages/initrdscripts/files/98-aufs.sh b/packages/initrdscripts/files/98-aufs.sh
index df05418c57..5f7cc11432 100644
--- a/packages/initrdscripts/files/98-aufs.sh
+++ b/packages/initrdscripts/files/98-aufs.sh
@@ -1,7 +1,7 @@
aufs_mount () {
modprobe -q aufs
- mkdir $2 /mnt
+ mkdir -p $2 /mnt
mount -t aufs -o br:$1:$2 none /mnt
}
diff --git a/packages/initrdscripts/files/99-psplash.sh b/packages/initrdscripts/files/99-psplash.sh
index fa488cff8b..3d5f1d60d1 100644
--- a/packages/initrdscripts/files/99-psplash.sh
+++ b/packages/initrdscripts/files/99-psplash.sh
@@ -1,2 +1,4 @@
-mkdir -p /mnt/mnt/.psplash
-mount -n -o move /mnt/.psplash /mnt/mnt/.psplash
+if ! grep -Eq '\s?psplash=false\s?' /proc/cmdline; then
+ mkdir -p /mnt/mnt/.psplash
+ mount -n -o move /mnt/.psplash /mnt/mnt/.psplash
+fi
diff --git a/packages/initrdscripts/files/init.sh b/packages/initrdscripts/files/init.sh
index 5cdbab5e0d..221b8f56b9 100644
--- a/packages/initrdscripts/files/init.sh
+++ b/packages/initrdscripts/files/init.sh
@@ -35,10 +35,16 @@ read_args() {
ROOT_FSTYPE=$optarg ;;
rootdelay=*)
rootdelay=$optarg ;;
+ debug) set -x ;;
+ shell) sh ;;
esac
done
}
+do_depmod() {
+ [ -e "/lib/modules/$(uname -r)/modules.dep" ] || depmod
+}
+
load_module() {
# Cannot redir to $CONSOLE here easily - may not be set yet
echo "initramfs: Loading $module module"
@@ -66,6 +72,7 @@ fatal() {
echo "Starting initramfs boot..."
early_setup
load_modules '0*'
+do_depmod
[ -z "$CONSOLE" ] && CONSOLE="/dev/console"
diff --git a/packages/initrdscripts/initramfs-module-psplash_1.0.bb b/packages/initrdscripts/initramfs-module-psplash_1.0.bb
index a765b36ad3..1cc6f9eabc 100644
--- a/packages/initrdscripts/initramfs-module-psplash_1.0.bb
+++ b/packages/initrdscripts/initramfs-module-psplash_1.0.bb
@@ -1,5 +1,5 @@
SRC_URI = "file://00-psplash.sh file://99-psplash.sh"
-PR = "r1"
+PR = "r2"
RDEPENDS = "initramfs-uniboot psplash"
DESCRIPTION = "An initramfs module to enable psplash."
diff --git a/packages/matchbox-panel/matchbox-panel-0.9.3/mb-applet-system-monitor-crash.patch b/packages/matchbox-panel/matchbox-panel-0.9.3/mb-applet-system-monitor-crash.patch
new file mode 100644
index 0000000000..8773003b34
--- /dev/null
+++ b/packages/matchbox-panel/matchbox-panel-0.9.3/mb-applet-system-monitor-crash.patch
@@ -0,0 +1,85 @@
+Program received signal SIGSEGV, Segmentation fault.
+0x4002dfbc in mb_pixbuf_img_plot_pixel (pb=<value optimized out>, img=0x1ba40, x=22,
+ y=-434, r=255 'ÿ', g=0 '\0', b=0 '\0') at mbpixbuf.c:2087
+(gdb) bt
+#0 0x4002dfbc in mb_pixbuf_img_plot_pixel (pb=<value optimized out>, img=0x1ba40, x=22,
+ y=-434, r=255 'ÿ', g=0 '\0', b=0 '\0') at mbpixbuf.c:2087
+#1 0x0000966c in paint_callback (app=<value optimized out>, drw=46137348)
+ at mb-applet-system-monitor.c:272
+#2 0x4002b8f6 in handle_expose (mb=0x1ba40, event=<value optimized out>) at mbtray.c:820
+#3 0x4002b922 in mb_tray_app_repaint (mb=0x1ba40) at mbtray.c:833
+#4 0x00008fd4 in timeout_callback (app=0x1ba40) at mb-applet-system-monitor.c:347
+#5 0x4002c580 in mb_tray_app_main (mb=0x14008) at mbtray.c:302
+#6 0x00009878 in main (argc=1, argv=0xbecf1ca4) at mb-applet-system-monitor.c:410
+(gdb) up
+(gdb) print membox_h
+$1 = 20
+(gdb) print mem_pixels
+$2 = 18798069
+(gdb) print memsize
+$3 = 1597228901
+(gdb) print msd
+$4 = {loadIndex = 15, samples = 16, load = 0x18a90, total = 0x18b18,
+ mem_used = 18446744073706139648, mem_max = 63750144, swap_used = 0, swap_max = 0,
+ swap_percent = 0, mem_percent = 1597228901}
+
+Huh, mem_used doesn't look good!
+
+root@zaurus:~# printf %lx\\n -18446744073706139648
+341000
+
+Well, it's negative. The algorithm is a bit stange.
+
+root@zaurus:~# cat /proc/meminfo
+MemTotal: 62256 kB
+MemFree: 8504 kB
+Buffers: 1508 kB
+Cached: 24692 kB
+SwapCached: 8604 kB
+Active: 22632 kB
+Inactive: 21344 kB
+SwapTotal: 131064 kB
+SwapFree: 72060 kB
+Dirty: 0 kB
+Writeback: 0 kB
+AnonPages: 12636 kB
+Mapped: 5532 kB
+Slab: 4300 kB
+SReclaimable: 1456 kB
+SUnreclaim: 2844 kB
+PageTables: 1116 kB
+NFS_Unstable: 0 kB
+Bounce: 0 kB
+WritebackTmp: 0 kB
+CommitLimit: 162192 kB
+Committed_AS: 81568 kB
+VmallocTotal: 581632 kB
+VmallocUsed: 9112 kB
+VmallocChunk: 565244 kB
+
+Now let's compute what's happening:
+
+cache_used = cache_total - cache_free;
+my_mem_used = cache_used + used - cached - buffers;
+12636 - 5532 + 8604 - 24692 - 1508 = -10492
+ ======
+
+Well, I don't know, how to compute a really used memory, but I could at
+least sanitize the value. Here you are:
+
+Index: matchbox-panel-0.9.3/applets/mb-applet-system-monitor.c
+===================================================================
+--- matchbox-panel-0.9.3/applets/mb-applet-system-monitor.c 2006-02-07 22:19:12.000000000 +0000
++++ matchbox-panel-0.9.3/applets/mb-applet-system-monitor.c 2009-02-21 13:19:41.000000000 +0000
+@@ -195,6 +195,11 @@
+ my_mem_max = total;
+ my_swap_max = cache_total;
+ my_mem_used = cache_used + used - cached - buffers;
++ /* Ugly hack! Fix mem-used algorithm is needed. */
++ if (my_mem_used < 0)
++ my_mem_used = 0;
++ if (my_mem_used > my_mem_max)
++ my_mem_used = my_mem_max;
+ msd.mem_used = my_mem_used;
+ msd.mem_max = my_mem_max;
+ msd.mem_percent = (100 * msd.mem_used) / msd.mem_max;
diff --git a/packages/matchbox-panel/matchbox-panel_0.9.3.bb b/packages/matchbox-panel/matchbox-panel_0.9.3.bb
index b7b12edc63..555912260e 100644
--- a/packages/matchbox-panel/matchbox-panel_0.9.3.bb
+++ b/packages/matchbox-panel/matchbox-panel_0.9.3.bb
@@ -1,4 +1,5 @@
require matchbox-panel.inc
-PR ="r3"
+PR ="r4"
SRC_URI = "http://projects.o-hand.com/matchbox/sources/${PN}/0.9/${PN}-${PV}.tar.gz \
- file://mb-applet-battery-repaint-093.patch;patch=1"
+ file://mb-applet-battery-repaint-093.patch;patch=1 \
+ file://mb-applet-system-monitor-crash.patch;patch=1"
diff --git a/packages/mc/mc-4.6.2/00-70-utf8-common.patch b/packages/mc/mc-4.6.2/00-70-utf8-common.patch
new file mode 100644
index 0000000000..244a01580a
--- /dev/null
+++ b/packages/mc/mc-4.6.2/00-70-utf8-common.patch
@@ -0,0 +1,46 @@
+Some common stuff used by other UTF-8 patches.
+
+================================================================================
+--- mc-4.6.2/src/util.c
++++ mc-4.6.2/src/util.c
+@@ -145,6 +145,30 @@
+ return strlen (str);
+ }
+
++int
++columns_to_bytes (const char *str, int col)
++{
++ int bytes = 0;
++ int columns = 0;
++ int i;
++#ifdef UTF8
++ if (SLsmg_Is_Unicode) {
++ static mbstate_t s;
++ while (columns < col) {
++ memset (&s, 0, sizeof (s));
++ i = mbrlen (str + bytes, -1, &s);
++ if (i <= 0) {
++ return col + bytes - columns;
++ }
++ bytes += i;
++ columns ++;
++ }
++ return col + bytes - columns;
++ } else
++#endif
++ return col;
++}
++
+ #ifdef UTF8
+
+ void
+--- mc-4.6.2/src/util.h
++++ mc-4.6.2/src/util.h
+@@ -104,6 +104,7 @@
+
+ void fix_utf8(char *str);
+ size_t mbstrlen (const char *);
++int columns_to_bytes (const char *, int);
+ wchar_t *mbstr_to_wchar (const char *);
+ char *wchar_to_mbstr (const wchar_t *);
+ char *utf8_to_local(char *str);
diff --git a/packages/mc/mc-4.6.2/00-73-utf8-bottom-buttons-width.patch b/packages/mc/mc-4.6.2/00-73-utf8-bottom-buttons-width.patch
new file mode 100644
index 0000000000..a7bc41c59b
--- /dev/null
+++ b/packages/mc/mc-4.6.2/00-73-utf8-bottom-buttons-width.patch
@@ -0,0 +1,21 @@
+Use six character width cyan rectangles for bottom row's buttons.
+
+================================================================================
+--- mc-4.6.2/src/widget.c
++++ mc-4.6.2/src/widget.c
+@@ -2562,11 +2562,14 @@
+ attrset (DEFAULT_COLOR);
+ tty_printf ("%-*s", bb->widget.cols, "");
+ for (i = 0; i < COLS / 8 && i < 10; i++) {
++ int j;
+ widget_move (&bb->widget, 0, i * 8);
+ attrset (DEFAULT_COLOR);
+ tty_printf ("%d", i + 1);
+ attrset (SELECTED_COLOR);
+- tty_printf ("%-*s", ((i + 1) * 8 == COLS ? 5 : 6),
++ j = columns_to_bytes(bb->labels [i].text ? bb->labels [i].text : "",
++ ((i + 1) * 8 == COLS ? 5 : 6));
++ tty_printf ("%-*s", j,
+ bb->labels[i].text ? bb->labels[i].text : "");
+ attrset (DEFAULT_COLOR);
+ }
diff --git a/packages/mc/mc-4.6.2/00-75-utf8-cmdline-help.patch b/packages/mc/mc-4.6.2/00-75-utf8-cmdline-help.patch
new file mode 100644
index 0000000000..5f1227d30a
--- /dev/null
+++ b/packages/mc/mc-4.6.2/00-75-utf8-cmdline-help.patch
@@ -0,0 +1,63 @@
+Fix formatting the output of "mc --help".
+
+================================================================================
+--- mc-4.6.2/src/main.c
++++ mc-4.6.2/src/main.c
+@@ -1865,7 +1865,7 @@
+
+ /* print help for options */
+ leftColWidth = poptPrintHelp (ctx, stream, 0);
+- fprintf (stream, " %-*s %s\n", leftColWidth, _("+number"),
++ fprintf (stream, " %-*s %s\n", leftColWidth + strlen(_("+number")) - mbstrlen(_("+number")), _("+number"),
+ _("Set initial line number for the internal editor"));
+ fputs (_
+ ("\n"
+--- mc-4.6.2/src/popthelp.c
++++ mc-4.6.2/src/popthelp.c
+@@ -101,7 +101,7 @@
+ goto out;
+ }
+
+- helpLength = strlen(help);
++ helpLength = mbstrlen(help);
+ while (helpLength > lineLength) {
+ ch = help + lineLength - 1;
+ while (ch > help && !isspace((unsigned char) *ch)) ch--;
+@@ -112,7 +112,7 @@
+ fprintf(f, "%.*s\n%*s", (int) (ch - help), help, indentLength, " ");
+ help = ch;
+ while (isspace((unsigned char) *help) && *help) help++;
+- helpLength = strlen(help);
++ helpLength = mbstrlen(help);
+ }
+
+ if (helpLength) fprintf(f, "%s\n", help);
+@@ -233,7 +233,7 @@
+ if (len == 3) return cursor;
+
+ if (argDescrip)
+- len += strlen(argDescrip) + 1;
++ len += mbstrlen(argDescrip) + 1;
+
+ if ((cursor + len) > 79) {
+ fprintf(f, "\n ");
+@@ -304,7 +304,7 @@
+ singleTableUsage(f, cursor, con->options, NULL);
+
+ if (con->otherHelp) {
+- cursor += strlen(con->otherHelp) + 1;
++ cursor += mbstrlen(con->otherHelp) + 1;
+ if (cursor > 79) fprintf(f, "\n ");
+ fprintf(f, " %s", con->otherHelp);
+ }
+--- mc-4.6.2/src/util.c
++++ mc-4.6.2/src/util.c
+@@ -152,7 +152,7 @@
+ int columns = 0;
+ int i;
+ #ifdef UTF8
+- if (SLsmg_Is_Unicode) {
++ if (1) {
+ static mbstate_t s;
+ while (columns < col) {
+ memset (&s, 0, sizeof (s));
diff --git a/packages/mc/mc-4.6.2/00-76-utf8-hotlist-highlight.patch b/packages/mc/mc-4.6.2/00-76-utf8-hotlist-highlight.patch
new file mode 100644
index 0000000000..38e0337ad6
--- /dev/null
+++ b/packages/mc/mc-4.6.2/00-76-utf8-hotlist-highlight.patch
@@ -0,0 +1,23 @@
+Highlight the lines of hotlist in full width.
+
+================================================================================
+--- mc-4.6.2/src/widget.c
++++ mc-4.6.2/src/widget.c
+@@ -1994,6 +1994,7 @@
+ {
+ WLEntry *e;
+ int i;
++ int j;
+ int sel_line;
+ Dlg_head *h = l->widget.parent;
+ int normalc = DLG_NORMALC (h);
+@@ -2024,7 +2025,8 @@
+ text = e->text;
+ e = e->next;
+ }
+- tty_printf (" %-*s ", l->width-2, name_trunc (text, l->width-2));
++ j = columns_to_bytes (name_trunc (text, l->width-2), l->width-2);
++ tty_printf (" %-*s ", j, name_trunc (text, l->width-2));
+ }
+ l->cursor_y = sel_line;
+ if (!l->scrollbar)
diff --git a/packages/mc/mc-4.6.2/00-77-utf8-filename-search-highlight.patch b/packages/mc/mc-4.6.2/00-77-utf8-filename-search-highlight.patch
new file mode 100644
index 0000000000..912d8eb72b
--- /dev/null
+++ b/packages/mc/mc-4.6.2/00-77-utf8-filename-search-highlight.patch
@@ -0,0 +1,17 @@
+Quick filename search (^S) highlights correct width.
+
+================================================================================
+--- mc-4.6.2/src/screen.c
++++ mc-4.6.2/src/screen.c
+@@ -771,8 +771,10 @@
+ widget_move (&panel->widget, llines (panel)+3, 1);
+
+ if (panel->searching){
++ int j;
+ attrset (INPUT_COLOR);
+- tty_printf ("/%-*s", panel->widget.cols-3, panel->search_buffer);
++ j = columns_to_bytes (panel->search_buffer, panel->widget.cols-3);
++ tty_printf ("/%-*s", j, panel->search_buffer);
+ attrset (NORMAL_COLOR);
+ return;
+ }
diff --git a/packages/mc/mc-4.6.2/mc-utf8-look-and-feel.patch b/packages/mc/mc-4.6.2/mc-utf8-look-and-feel.patch
new file mode 100644
index 0000000000..83ad60135d
--- /dev/null
+++ b/packages/mc/mc-4.6.2/mc-utf8-look-and-feel.patch
@@ -0,0 +1,206 @@
+Index: mc-4.6.2~git20080311/src/main.c
+================================================================================
+--- mc-4.6.2/src/main.c
++++ mc-4.6.2/src/main.c
+@@ -276,6 +276,9 @@
+ /* The user's shell */
+ const char *shell = NULL;
+
++/* Is the LANG UTF-8 ? */
++gboolean is_utf8 = FALSE;
++
+ /* mc_home: The home of MC */
+ char *mc_home = NULL;
+
+@@ -2126,6 +2129,16 @@
+ int
+ main (int argc, char *argv[])
+ {
++ /* Check whether we have UTF-8 locale */
++ char *lang = getenv("LANG");
++ size_t len = 0;
++
++ if ( lang )
++ len = strlen(lang);
++
++ if ( len >= 5 && !strcasecmp(&lang[len-5],"UTF-8") )
++ is_utf8 = TRUE;
++
+ /* We had LC_CTYPE before, LC_ALL includs LC_TYPE as well */
+ setlocale (LC_ALL, "");
+ bindtextdomain ("mc", LOCALEDIR);
+--- mc-4.6.2/src/main.h
++++ mc-4.6.2/src/main.h
+@@ -69,6 +69,7 @@
+ extern int only_leading_plus_minus;
+ extern int output_starts_shell;
+ extern int midnight_shutdown;
++extern gboolean is_utf8;
+ extern char cmd_buf [512];
+ extern const char *shell;
+
+--- mc-4.6.2/src/screen.c
++++ mc-4.6.2/src/screen.c
+@@ -892,6 +892,9 @@
+ }
+ #endif /* HAVE_SLANG */
+
++ vscrollbar (panel->widget, panel->widget.lines, panel->widget.cols-1, 2, 2,
++ panel->selected, panel->count, TRUE);
++
+ if (panel->active)
+ attrset (REVERSE_COLOR);
+
+@@ -1493,7 +1496,7 @@
+ panel->dirty = 1;
+
+ /* Status needn't to be split */
+- usable_columns = ((panel->widget.cols-2)/((isstatus)
++ usable_columns = ((panel->widget.cols-3)/((isstatus)
+ ? 1
+ : (panel->split+1))) - (!isstatus && panel->split);
+
+--- mc-4.6.2/src/widget.c
++++ mc-4.6.2/src/widget.c
+@@ -1944,52 +1944,86 @@
+ return in;
+ }
+
+-
+-/* Listbox widget */
++/* Vertical scrollbar widget */
+
+-/* Should draw the scrollbar, but currently draws only
+- * indications that there is more information
+- */
+-static int listbox_cdiff (WLEntry *s, WLEntry *e);
+-
+-static void
+-listbox_drawscroll (WListbox *l)
++void
++vscrollbar (Widget widget, int height, int width, int tpad, int bpad,
++ int selected, int count, gboolean color)
+ {
+ int line;
+- int i, top;
+- int max_line = l->height-1;
+-
++ int i;
++
+ /* Are we at the top? */
+- widget_move (&l->widget, 0, l->width);
+- if (l->list == l->top)
+- one_vline ();
++ widget_move (&widget, tpad, width);
++#ifndef UTF8
++ if (!selected)
++ one_vline ();
+ else
+- addch ('^');
++ addch ('^');
++#else
++ if (color) attrset (MARKED_COLOR);
++ if (is_utf8)
++ SLsmg_write_string("▴");
++ else
++ addch ('^');
++ if (color) attrset (NORMAL_COLOR);
++#endif
+
+ /* Are we at the bottom? */
+- widget_move (&l->widget, max_line, l->width);
+- top = listbox_cdiff (l->list, l->top);
+- if ((top + l->height == l->count) || l->height >= l->count)
+- one_vline ();
++ widget_move (&widget, height-1-bpad, width);
++#ifndef UTF8
++ if (selected == count-1)
++ one_vline ();
++ else
++ addch ('v');
++#else
++ if (color) attrset (MARKED_COLOR);
++ if (is_utf8)
++ SLsmg_write_string("▾");
+ else
+- addch ('v');
++ addch('v');
++ if (color) attrset (NORMAL_COLOR);
++#endif
+
+ /* Now draw the nice relative pointer */
+- if (l->count)
+- line = 1+ ((l->pos * (l->height-2)) / l->count);
++ if (count > 1)
++ line = tpad + 1 + ((selected * (height-3-tpad-bpad)) / (count-1));
+ else
+- line = 0;
+-
+- for (i = 1; i < max_line; i++){
+- widget_move (&l->widget, i, l->width);
+- if (i != line)
+- one_vline ();
+- else
+- addch ('*');
++ line = 0;
++
++ for (i = tpad + 1; i < height-1-bpad; i++){
++ widget_move (&widget, i, width);
++ if (i != line)
++#ifndef UTF8
++ one_vline ();
++ else
++ addch ('*');
++#else
++ if (is_utf8)
++ SLsmg_write_string("▒");
++ else
++ one_vline();
++ else {
++ if (color) attrset (MARKED_COLOR);
++ if (is_utf8)
++ SLsmg_write_string("◈");
++ else
++ addch('*');
++ if (color) attrset (NORMAL_COLOR);
++ }
++#endif
+ }
+ }
+-
+-static void
++
++
++/* Listbox widget */
++
++/* Should draw the scrollbar, but currently draws only
++ * indications that there is more information
++ */
++static int listbox_cdiff (WLEntry *s, WLEntry *e);
++
++void
+ listbox_draw (WListbox *l, int focused)
+ {
+ WLEntry *e;
+@@ -2032,7 +2066,7 @@
+ if (!l->scrollbar)
+ return;
+ attrset (normalc);
+- listbox_drawscroll (l);
++ vscrollbar (l->widget, l->height, l->width, 0, 0, l->pos, l->count, FALSE);
+ }
+
+ /* Returns the number of items between s and e,
+--- mc-4.6.2/src/widget.h
++++ mc-4.6.2/src/widget.h
+@@ -187,6 +187,10 @@
+ /* Listbox manager */
+ WLEntry *listbox_get_data (WListbox *l, int pos);
+
++/* Vertical scrollbar */
++void vscrollbar (Widget widget, int height, int width, int tpad, int bpad,
++ int selected, int count, gboolean color);
++
+ /* search text int listbox entries */
+ WLEntry *listbox_search_text (WListbox *l, const char *text);
+ void listbox_select_entry (WListbox *l, WLEntry *dest);
diff --git a/packages/mc/mc-4.6.2/mc-utf8-nlink.patch b/packages/mc/mc-4.6.2/mc-utf8-nlink.patch
new file mode 100644
index 0000000000..9e361630c4
--- /dev/null
+++ b/packages/mc/mc-4.6.2/mc-utf8-nlink.patch
@@ -0,0 +1,11 @@
+--- mc-4.6.2/src/screen.c
++++ mc-4.6.2/src/screen.c
+@@ -671,7 +671,7 @@
+ SLsmg_write_nwchars (((wchar_t *) buffer)
+ + txtlen - n2, n2);
+ } else
+- SLsmg_write_nwchars ((wchar_t *) buffer, len);
++ SLsmg_write_nwchars ((wchar_t *) buffer + still, len);
+ } else {
+ printw ("%*s", still, "");
+ SLsmg_write_nwchars ((wchar_t *) buffer, txtlen);
diff --git a/packages/mc/mc-4.6.2/mc-utf8.patch b/packages/mc/mc-4.6.2/mc-utf8.patch
new file mode 100644
index 0000000000..5778604350
--- /dev/null
+++ b/packages/mc/mc-4.6.2/mc-utf8.patch
@@ -0,0 +1,5357 @@
+--- mc-4.6.2/acinclude.m4
++++ mc-4.6.2/acinclude.m4
+@@ -399,14 +399,14 @@
+ fi
+
+ dnl Unless external S-Lang was requested, reject S-Lang with UTF-8 hacks
+- if test x$with_screen = xslang; then
+- :
+- m4_if([$1], strict, ,
+- [AC_CHECK_LIB([slang], [SLsmg_write_nwchars],
+- [AC_MSG_WARN([Rejecting S-Lang with UTF-8 support, \
+-it's not fully supported yet])
+- with_screen=mcslang])])
+- fi
++dnl if test x$with_screen = xslang; then
++dnl :
++dnl m4_if([$1], strict, ,
++dnl [AC_CHECK_LIB([slang], [SLsmg_write_nwchars],
++dnl [AC_MSG_WARN([Rejecting S-Lang with UTF-8 support, \
++dnl it's not fully supported yet])
++dnl with_screen=mcslang])])
++dnl fi
+
+ if test x$with_screen = xslang; then
+ AC_DEFINE(HAVE_SYSTEM_SLANG, 1,
+--- mc-4.6.2/edit/edit-widget.h
++++ mc-4.6.2/edit/edit-widget.h
+@@ -30,6 +30,11 @@
+ long command;
+ } edit_key_map_type;
+
++struct action {
++ mc_wchar_t ch;
++ long flags;
++};
++
+ struct WEdit {
+ Widget widget;
+
+@@ -42,8 +47,17 @@
+ /* dynamic buffers and cursor position for editor: */
+ long curs1; /* position of the cursor from the beginning of the file. */
+ long curs2; /* position from the end of the file */
++#ifndef UTF8
+ unsigned char *buffers1[MAXBUFF + 1]; /* all data up to curs1 */
+ unsigned char *buffers2[MAXBUFF + 1]; /* all data from end of file down to curs2 */
++#else /* UTF8 */
++ mc_wchar_t *buffers1[MAXBUFF + 1]; /* all data up to curs1 */
++ mc_wchar_t *buffers2[MAXBUFF + 1]; /* all data from end of file down to curs2 */
++
++ unsigned char charbuf[MB_LEN_MAX];
++ int charpoint;
++#endif /* UTF8 */
++
+
+ /* search variables */
+ long search_start; /* First character to start searching from */
+@@ -87,7 +101,7 @@
+
+ /* undo stack and pointers */
+ unsigned long stack_pointer;
+- long *undo_stack;
++ struct action *undo_stack;
+ unsigned long stack_size;
+ unsigned long stack_size_mask;
+ unsigned long stack_bottom;
+--- mc-4.6.2/edit/edit.c
++++ mc-4.6.2/edit/edit.c
+@@ -105,7 +105,11 @@
+
+ static void user_menu (WEdit *edit);
+
++#ifndef UTF8
+ int edit_get_byte (WEdit * edit, long byte_index)
++#else
++mc_wchar_t edit_get_byte (WEdit * edit, long byte_index)
++#endif
+ {
+ unsigned long p;
+ if (byte_index >= (edit->curs1 + edit->curs2) || byte_index < 0)
+@@ -134,7 +138,7 @@
+
+ edit->curs1 = 0;
+ edit->curs2 = 0;
+- edit->buffers2[0] = g_malloc (EDIT_BUF_SIZE);
++ edit->buffers2[0] = g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));
+ }
+
+ /*
+@@ -159,7 +163,7 @@
+ }
+
+ if (!edit->buffers2[buf2])
+- edit->buffers2[buf2] = g_malloc (EDIT_BUF_SIZE);
++ edit->buffers2[buf2] = g_malloc (EDIT_BUF_SIZE * sizeof(mc_wchar_t));