summaryrefslogtreecommitdiff
path: root/app-misc/mc/files
diff options
context:
space:
mode:
Diffstat (limited to 'app-misc/mc/files')
-rw-r--r--app-misc/mc/files/chdir-4.6.0.gentoo11
-rw-r--r--app-misc/mc/files/ebuild.syntax87
-rw-r--r--app-misc/mc/files/mc-4.6.0-7zip.patch25
-rw-r--r--app-misc/mc/files/mc-4.6.0-ebuild-syntax.patch12
-rw-r--r--app-misc/mc/files/mc-4.6.1-bash-all.patch33
-rw-r--r--app-misc/mc/files/mc-4.6.1-charset-locale-aliases.patch40
-rw-r--r--app-misc/mc/files/mc-4.6.1-find.patch155
-rw-r--r--app-misc/mc/files/mc-4.6.1-invalid-mtime.patch30
-rw-r--r--app-misc/mc/files/mc-4.6.1-largefile.patch194
-rw-r--r--app-misc/mc/files/mc-4.6.1-nonblock.patch11
-rw-r--r--app-misc/mc/files/mc.gentoo16
-rw-r--r--app-misc/mc/files/mc.ini2
12 files changed, 616 insertions, 0 deletions
diff --git a/app-misc/mc/files/chdir-4.6.0.gentoo b/app-misc/mc/files/chdir-4.6.0.gentoo
new file mode 100644
index 0000000..9332ba0
--- /dev/null
+++ b/app-misc/mc/files/chdir-4.6.0.gentoo
@@ -0,0 +1,11 @@
+
+MC ()
+{
+ mkdir -p $HOME/.mc/tmp 2> /dev/null
+ chmod 700 $HOME/.mc/tmp
+ MC=$HOME/.mc/tmp/mc-$$
+ /usr/bin/mc -P "$MC"
+ cd "`cat $MC`"
+ rm -f "$MC"
+ unset MC;
+}
diff --git a/app-misc/mc/files/ebuild.syntax b/app-misc/mc/files/ebuild.syntax
new file mode 100644
index 0000000..2148ce2
--- /dev/null
+++ b/app-misc/mc/files/ebuild.syntax
@@ -0,0 +1,87 @@
+context default
+ keyword linestart HOMEPAGE brightcyan
+ keyword linestart DESCRIPTION brightcyan
+ keyword linestart SRC_URI brightcyan
+ keyword linestart LICENSE brightcyan
+ keyword linestart SLOT brightcyan
+ keyword linestart KEYWORDS brightcyan
+ keyword linestart IUSE brightcyan
+ keyword linestart RESTRICT brightcyan
+ keyword linestart DEPEND brightcyan
+ keyword linestart RDEPEND brightcyan
+ keyword linestart EAPI brightcyan
+ keyword linestart S brightcyan
+
+ keyword whole local yellow
+ keyword whole use yellow
+ keyword whole has_version yellow
+ keyword whole best_version yellow
+ keyword whole use_with yellow
+ keyword whole use_enable yellow
+ keyword whole keepdir yellow
+ keyword whole econf yellow
+ keyword whole einstall yellow
+ keyword whole die yellow
+ keyword whole einfo yellow
+ keyword whole elog yellow
+ keyword whole emake yellow
+ keyword whole eerror yellow
+ keyword whole epatch yellow
+ keyword whole ebegin yellow
+ keyword whole eend yellow
+ keyword whole ewarn yellow
+ keyword whole unpack yellow
+
+ keyword whole diropts yellow
+ keyword whole dobin yellow
+ keyword whole docinto yellow
+ keyword whole dodir yellow
+ keyword whole dodoc yellow
+ keyword whole doexe yellow
+ keyword whole dohard yellow
+ keyword whole dohtml yellow
+ keyword whole doinfo yellow
+ keyword whole doins yellow
+ keyword whole dolib.a yellow
+ keyword whole dolib.so yellow
+ keyword whole dolib yellow
+ keyword whole doman yellow
+ keyword whole dosbin yellow
+ keyword whole dosym yellow
+ keyword whole exeinto yellow
+ keyword whole exeopts yellow
+ keyword whole fowners yellow
+ keyword whole fperms yellow
+ keyword whole insinto yellow
+ keyword whole insopts yellow
+ keyword whole into yellow
+ keyword whole libopts yellow
+ keyword whole newbin yellow
+ keyword whole newdoc yellow
+ keyword whole newexe yellow
+ keyword whole newins yellow
+ keyword whole newman yellow
+ keyword whole newsbin yellow
+ keyword whole prepall yellow
+ keyword whole prepalldocs yellow
+ keyword whole prepallinfo yellow
+ keyword whole prepallman yellow
+
+ keyword = yellow
+ keyword : yellow
+ keyword ${+} brightgreen
+
+ keyword linestart abcdefghijklmnopqrstuvwxyz_\(\) brightmagenta
+
+ keyword *() brightcyan
+
+ keyword { magenta
+ keyword } magenta
+
+context linestart inherit \n magenta
+ keyword whole inherit yellow
+
+context # \n red
+
+context " " green
+ keyword wholeright ${+} brightgreen
diff --git a/app-misc/mc/files/mc-4.6.0-7zip.patch b/app-misc/mc/files/mc-4.6.0-7zip.patch
new file mode 100644
index 0000000..29cda12
--- /dev/null
+++ b/app-misc/mc/files/mc-4.6.0-7zip.patch
@@ -0,0 +1,25 @@
+--- lib/mc.ext.in.old 2003-01-30 17:48:33.000000000 +0200
++++ lib/mc.ext.in 2004-11-08 16:51:59.429212632 +0200
+@@ -143,6 +143,12 @@
+ shell/.info
+ Open=info -f %f
+
++# 7-Zip, Needs to be before manual page definitions
++regex/\.(7z|7Z)$
++ View=%view{ascii} 7za l %f 2>/dev/null
++ Open=%cd %p#u7z
++
++
+ # Manual page
+ # Exception - .so libraries are not manual pages
+ regex/\.(so|so\.[0-9\.]*)$
+--- vfs/extfs/extfs.ini.old 2002-12-09 16:16:33.000000000 +0200
++++ vfs/extfs/extfs.ini 2004-10-25 13:56:04.000000000 +0300
+@@ -7,6 +7,7 @@
+ ulha
+ urar
+ uha
++u7z
+ # For arj usage you need a special patch to unarj (see unarj.diff)
+ uarj
+
diff --git a/app-misc/mc/files/mc-4.6.0-ebuild-syntax.patch b/app-misc/mc/files/mc-4.6.0-ebuild-syntax.patch
new file mode 100644
index 0000000..ce59dd3
--- /dev/null
+++ b/app-misc/mc/files/mc-4.6.0-ebuild-syntax.patch
@@ -0,0 +1,12 @@
+--- Syntax 2004-08-20 22:52:37.145034864 +0200
++++ Syntax.new 2004-08-20 22:52:19.000000000 +0200
+@@ -116,6 +116,9 @@
+ file Don_t_match_me Mail\sfolder ^From\s
+ include mail.syntax
+
++file .\*\\.(ebuild|eclass)$ Gentoo\sEbuild
++include ebuild.syntax
++
+ file .\* unknown
+ include unknown.syntax
+
diff --git a/app-misc/mc/files/mc-4.6.1-bash-all.patch b/app-misc/mc/files/mc-4.6.1-bash-all.patch
new file mode 100644
index 0000000..d161281
--- /dev/null
+++ b/app-misc/mc/files/mc-4.6.1-bash-all.patch
@@ -0,0 +1,33 @@
+--- a/src/subshell.c 2006-05-08 23:11:48.000000000 +0200
++++ b/src/subshell.c 2006-10-28 15:40:46.000000000 +0200
+@@ -745,29 +745,13 @@ subshell_name_quote (const char *s)
+ memcpy (d, cmd_start, len);
+ d += len;
+
+- /*
+- * Print every character in octal format with the leading backslash.
+- * tcsh and zsh may require 4-digit octals, bash < 2.05b doesn't like them.
+- */
+- if (subshell_type == BASH) {
+ for (; *s; s++) {
+- /* Must quote numbers, so that they are not glued to octals */
+ if (isalpha ((unsigned char) *s)) {
+ *d++ = (unsigned char) *s;
+ } else {
+- sprintf (d, "\\%03o", (unsigned char) *s);
+- d += 4;
+- }
+- }
+- } else {
+- for (; *s; s++) {
+- if (isalnum ((unsigned char) *s)) {
+- *d++ = (unsigned char) *s;
+- } else {
+ sprintf (d, "\\0%03o", (unsigned char) *s);
+ d += 5;
+ }
+- }
+ }
+
+ memcpy (d, common_end, sizeof (common_end));
+
diff --git a/app-misc/mc/files/mc-4.6.1-charset-locale-aliases.patch b/app-misc/mc/files/mc-4.6.1-charset-locale-aliases.patch
new file mode 100644
index 0000000..53aedd0
--- /dev/null
+++ b/app-misc/mc/files/mc-4.6.1-charset-locale-aliases.patch
@@ -0,0 +1,40 @@
+diff -ruN mc-4.6.1.orig/intl/Makefile.in mc-4.6.1/intl/Makefile.in
+--- mc-4.6.1.orig/intl/Makefile.in 2007-03-06 22:31:02.000000000 +0300
++++ mc-4.6.1/intl/Makefile.in 2007-03-06 22:38:52.000000000 +0300
+@@ -156,12 +156,7 @@
+ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \
+ temp=$(DESTDIR)$(libdir)/t-charset.alias; \
+ dest=$(DESTDIR)$(libdir)/charset.alias; \
+- if test -f $(DESTDIR)$(libdir)/charset.alias; then \
+- orig=$(DESTDIR)$(libdir)/charset.alias; \
+- sed -f ref-add.sed $$orig > $$temp; \
+- $(INSTALL_DATA) $$temp $$dest; \
+- rm -f $$temp; \
+- else \
++ if ! test -f $(libdir)/charset.alias; then \
+ if test @GLIBC21@ = no; then \
+ orig=charset.alias; \
+ sed -f ref-add.sed $$orig > $$temp; \
+@@ -170,14 +165,14 @@
+ fi; \
+ fi; \
+ $(mkinstalldirs) $(DESTDIR)$(localedir); \
+- test -f $(DESTDIR)$(localedir)/locale.alias \
+- && orig=$(DESTDIR)$(localedir)/locale.alias \
+- || orig=$(srcdir)/locale.alias; \
+- temp=$(DESTDIR)$(localedir)/t-locale.alias; \
+- dest=$(DESTDIR)$(localedir)/locale.alias; \
+- sed -f ref-add.sed $$orig > $$temp; \
+- $(INSTALL_DATA) $$temp $$dest; \
+- rm -f $$temp; \
++ if ! test -f $(localedir)/locale.alias; then \
++ orig=$(srcdir)/locale.alias; \
++ temp=$(DESTDIR)$(localedir)/t-locale.alias; \
++ dest=$(DESTDIR)$(localedir)/locale.alias; \
++ sed -f ref-add.sed $$orig > $$temp; \
++ $(INSTALL_DATA) $$temp $$dest; \
++ rm -f $$temp; \
++ fi; \
+ else \
+ : ; \
+ fi
diff --git a/app-misc/mc/files/mc-4.6.1-find.patch b/app-misc/mc/files/mc-4.6.1-find.patch
new file mode 100644
index 0000000..f44a6ac
--- /dev/null
+++ b/app-misc/mc/files/mc-4.6.1-find.patch
@@ -0,0 +1,155 @@
+diff -Naur mc-4.6.1.orig/src/cmd.c mc-4.6.1/src/cmd.c
+--- mc-4.6.1.orig/src/cmd.c 2005-05-27 16:19:18.000000000 +0200
++++ mc-4.6.1/src/cmd.c 2006-03-19 12:57:00.000000000 +0100
+@@ -510,7 +510,7 @@
+ continue;
+ }
+ c = regexp_match (reg_exp_t, current_panel->dir.list[i].fname,
+- match_file);
++ match_file, 0);
+ if (c == -1) {
+ message (1, MSG_ERROR, _(" Malformed regular expression "));
+ g_free (reg_exp);
+diff -Naur mc-4.6.1.orig/src/dir.c mc-4.6.1/src/dir.c
+--- mc-4.6.1.orig/src/dir.c 2005-05-27 16:19:18.000000000 +0200
++++ mc-4.6.1/src/dir.c 2006-03-19 12:58:56.000000000 +0100
+@@ -405,7 +405,7 @@
+ *stale_link = 1;
+ }
+ if (!(S_ISDIR (buf1->st_mode) || *link_to_dir) && filter
+- && !regexp_match (filter, dp->d_name, match_file))
++ && !regexp_match (filter, dp->d_name, match_file, 0))
+ return 0;
+
+ /* Need to grow the *list? */
+diff -Naur mc-4.6.1.orig/src/ext.c mc-4.6.1/src/ext.c
+--- mc-4.6.1.orig/src/ext.c 2005-05-27 16:19:18.000000000 +0200
++++ mc-4.6.1/src/ext.c 2006-03-19 13:00:43.000000000 +0100
+@@ -394,7 +394,7 @@
+ }
+
+ if (content_string[0]
+- && regexp_match (ptr, content_string + content_shift, match_regex)) {
++ && regexp_match (ptr, content_string + content_shift, match_regex, 0)) {
+ found = 1;
+ }
+
+@@ -534,11 +534,11 @@
+ /* Do not transform shell patterns, you can use shell/ for
+ * that
+ */
+- if (regexp_match (p, filename, match_regex))
++ if (regexp_match (p, filename, match_regex, 0))
+ found = 1;
+ } else if (!strncmp (p, "directory/", 10)) {
+ if (S_ISDIR (mystat.st_mode)
+- && regexp_match (p + 10, filename, match_regex))
++ && regexp_match (p + 10, filename, match_regex, 0))
+ found = 1;
+ } else if (!strncmp (p, "shell/", 6)) {
+ p += 6;
+diff -Naur mc-4.6.1.orig/src/find.c mc-4.6.1/src/find.c
+--- mc-4.6.1.orig/src/find.c 2005-05-27 16:19:18.000000000 +0200
++++ mc-4.6.1/src/find.c 2006-03-19 13:04:10.000000000 +0100
+@@ -575,6 +575,7 @@
+ struct stat tmp_stat;
+ static int pos;
+ static int subdirs_left = 0;
++ int flags = 0;
+
+ if (!h) { /* someone forces me to close dirp */
+ if (dirp) {
+@@ -586,6 +587,10 @@
+ dp = 0;
+ return 1;
+ }
++
++ if (!(case_sense->state & C_BOOL))
++ flags |= REG_ICASE;
++
+ do_search_begin:
+ while (!dp){
+
+@@ -662,7 +667,7 @@
+ g_free (tmp_name);
+ }
+
+- if (regexp_match (find_pattern, dp->d_name, match_file)){
++ if (regexp_match (find_pattern, dp->d_name, match_file, flags)){
+ if (content_pattern) {
+ if (search_content (h, directory, dp->d_name)) {
+ return 1;
+diff -Naur mc-4.6.1.orig/src/user.c mc-4.6.1/src/user.c
+--- mc-4.6.1.orig/src/user.c 2005-07-01 17:47:07.000000000 +0200
++++ mc-4.6.1/src/user.c 2006-03-19 13:05:00.000000000 +0100
+@@ -412,18 +412,18 @@
+ break;
+ case 'f': /* file name pattern */
+ p = extract_arg (p, arg, sizeof (arg));
+- *condition = panel && regexp_match (arg, panel->dir.list [panel->selected].fname, match_file);
++ *condition = panel && regexp_match (arg, panel->dir.list [panel->selected].fname, match_file, 0);
+ break;
+ case 'y': /* syntax pattern */
+ if (edit_widget && edit_widget->syntax_type) {
+ p = extract_arg (p, arg, sizeof (arg));
+ *condition = panel &&
+- regexp_match (arg, edit_widget->syntax_type, match_normal);
++ regexp_match (arg, edit_widget->syntax_type, match_normal, 0);
+ }
+ break;
+ case 'd':
+ p = extract_arg (p, arg, sizeof (arg));
+- *condition = panel && regexp_match (arg, panel->cwd, match_file);
++ *condition = panel && regexp_match (arg, panel->cwd, match_file, 0);
+ break;
+ case 't':
+ p = extract_arg (p, arg, sizeof (arg));
+diff -Naur mc-4.6.1.orig/src/util.c mc-4.6.1/src/util.c
+--- mc-4.6.1.orig/src/util.c 2005-05-27 16:19:18.000000000 +0200
++++ mc-4.6.1/src/util.c 2006-03-19 13:06:58.000000000 +0100
+@@ -563,27 +563,30 @@
+ return g_strdup (pattern);
+ }
+
+-int regexp_match (const char *pattern, const char *string, int match_type)
++int regexp_match (const char *pattern, const char *string, int match_type, int flags)
+ {
+ static regex_t r;
+ static char *old_pattern = NULL;
+ static int old_type;
++ static int old_flags;
+ int rval;
+ char *my_pattern;
+
+- if (!old_pattern || STRCOMP (old_pattern, pattern) || old_type != match_type){
++ if (!old_pattern || STRCOMP (old_pattern, pattern) || old_type != match_type || old_flags != flags){
+ if (old_pattern){
+ regfree (&r);
+ g_free (old_pattern);
+ old_pattern = NULL;
+ }
+ my_pattern = convert_pattern (pattern, match_type, 0);
+- if (regcomp (&r, my_pattern, REG_EXTENDED|REG_NOSUB|MC_ARCH_FLAGS)) {
++
++ if (regcomp (&r, my_pattern, REG_EXTENDED|REG_NOSUB|MC_ARCH_FLAGS|flags)) {
+ g_free (my_pattern);
+ return -1;
+ }
+ old_pattern = my_pattern;
+ old_type = match_type;
++ old_flags = flags;
+ }
+ rval = !regexec (&r, string, 0, NULL, 0);
+ return rval;
+diff -Naur mc-4.6.1.orig/src/util.h mc-4.6.1/src/util.h
+--- mc-4.6.1.orig/src/util.h 2005-01-13 20:20:47.000000000 +0100
++++ mc-4.6.1/src/util.h 2006-03-19 13:07:16.000000000 +0100
+@@ -116,7 +116,7 @@
+
+ extern int easy_patterns;
+ char *convert_pattern (const char *pattern, int match_type, int do_group);
+-int regexp_match (const char *pattern, const char *string, int match_type);
++int regexp_match (const char *pattern, const char *string, int match_type, int flags);
+
+ /* Error pipes */
+ void open_error_pipe (void);
diff --git a/app-misc/mc/files/mc-4.6.1-invalid-mtime.patch b/app-misc/mc/files/mc-4.6.1-invalid-mtime.patch
new file mode 100644
index 0000000..07b1f6d
--- /dev/null
+++ b/app-misc/mc/files/mc-4.6.1-invalid-mtime.patch
@@ -0,0 +1,30 @@
+
+ Invalid timestamps on files caused mc to segfault by passing a null
+ pointer to strftime. Avoid trying to print the time in this case.
+
+ Reported by Maxim Britov <maxim@office.modum.by>
+ at http://bugs.gentoo.org/184296
+
+--- mc-4.6.1/src/util.c
++++ mc-4.6.1/src/util.c
+@@ -717,6 +717,7 @@
+ static size_t i18n_timelength = 0;
+ static const char *fmtyear, *fmttime;
+ const char *fmt;
++ struct tm *whentm;
+
+ if (i18n_timelength == 0){
+ i18n_timelength = i18n_checktimelength() + 1;
+@@ -740,7 +741,11 @@
+ else
+ fmt = fmttime;
+
+- strftime (timebuf, i18n_timelength, fmt, localtime(&when));
++ whentm = localtime(&when);
++ if (whentm == NULL)
++ return "(invalid)";
++
++ strftime (timebuf, i18n_timelength, fmt, whentm);
+ return timebuf;
+ }
+
diff --git a/app-misc/mc/files/mc-4.6.1-largefile.patch b/app-misc/mc/files/mc-4.6.1-largefile.patch
new file mode 100644
index 0000000..de30715
--- /dev/null
+++ b/app-misc/mc/files/mc-4.6.1-largefile.patch
@@ -0,0 +1,194 @@
+diff -Naur mc-4.6.1.orig/intl/loadmsgcat.c mc-4.6.1/intl/loadmsgcat.c
+--- mc-4.6.1.orig/intl/loadmsgcat.c 2005-07-23 18:52:57.000000000 +0200
++++ mc-4.6.1/intl/loadmsgcat.c 2006-03-19 17:11:14.000000000 +0100
+@@ -1002,7 +1002,7 @@
+ /* The magic number is wrong: not a message catalog file. */
+ #ifdef HAVE_MMAP
+ if (use_mmap)
+- munmap ((caddr_t) data, size);
++ munmap ((void *) data, size);
+ else
+ #endif
+ free (data);
+@@ -1271,7 +1271,7 @@
+ free (domain->malloced);
+ #ifdef HAVE_MMAP
+ if (use_mmap)
+- munmap ((caddr_t) data, size);
++ munmap ((void *) data, size);
+ else
+ #endif
+ free (data);
+@@ -1306,7 +1306,7 @@
+
+ # ifdef _POSIX_MAPPED_FILES
+ if (domain->use_mmap)
+- munmap ((caddr_t) domain->data, domain->mmap_size);
++ munmap ((void *) domain->data, domain->mmap_size);
+ else
+ # endif /* _POSIX_MAPPED_FILES */
+ free ((void *) domain->data);
+diff -Naur mc-4.6.1.orig/src/view.c mc-4.6.1/src/view.c
+--- mc-4.6.1.orig/src/view.c 2005-05-27 16:19:18.000000000 +0200
++++ mc-4.6.1/src/view.c 2006-03-19 17:10:34.000000000 +0100
+@@ -76,6 +76,12 @@
+ #define vwidth (view->widget.cols - (view->have_frame ? 2 : 0))
+ #define vheight (view->widget.lines - (view->have_frame ? 2 : 0))
+
++#if GLIB_MAJOR_VERSION >= 2
++# define my_g_malloc g_try_malloc
++#else
++# define my_g_malloc g_malloc
++#endif
++
+ /* Offset in bytes into a file */
+ typedef unsigned long offset_type;
+ #define INVALID_OFFSET ((offset_type) -1)
+@@ -560,8 +566,8 @@
+ view->data = mc_mmap (0, view->s.st_size, PROT_READ,
+ MAP_FILE | MAP_SHARED, view->file, 0);
+ else
+- view->data = (caddr_t) -1;
+- if ((caddr_t) view->data != (caddr_t) - 1) {
++ view->data = (void *) -1;
++ if (view->data != (void *)-1) {
+ /* mmap worked */
+ view->first = 0;
+ view->bytes_read = view->s.st_size;
+@@ -573,6 +579,9 @@
+ /* For the OSes that don't provide mmap call, try to load all the
+ * file into memory (alex@bcs.zaporizhzhe.ua). Also, mmap can fail
+ * for any reason, so we use this as fallback (pavel@ucw.cz) */
++
++ /* If large file support is enabled, st_size is a 64 bit value and
++ * will thus on 32 bit platforms possibly be beyond the range of gulong */
+
+ /* Make sure view->s.st_size is not truncated when passed to g_malloc */
+ if ((gulong) view->s.st_size == view->s.st_size)
+diff -Naur mc-4.6.1.orig/vfs/local.c mc-4.6.1/vfs/local.c
+--- mc-4.6.1.orig/vfs/local.c 2004-09-25 01:00:18.000000000 +0200
++++ mc-4.6.1/vfs/local.c 2006-03-19 17:00:45.000000000 +0100
+@@ -243,8 +243,8 @@
+ }
+
+ #ifdef HAVE_MMAP
+-caddr_t
+-local_mmap (struct vfs_class *me, caddr_t addr, size_t len, int prot, int flags, void *data, off_t offset)
++void *
++local_mmap (struct vfs_class *me, void *addr, size_t len, int prot, int flags, void *data, off_t offset)
+ {
+ int fd = * (int *)data;
+
+@@ -252,7 +252,7 @@
+ }
+
+ int
+-local_munmap (struct vfs_class *me, caddr_t addr, size_t len, void *data)
++local_munmap (struct vfs_class *me, void *addr, size_t len, void *data)
+ {
+ return munmap (addr, len);
+ }
+diff -Naur mc-4.6.1.orig/vfs/local.h mc-4.6.1/vfs/local.h
+--- mc-4.6.1.orig/vfs/local.h 2004-08-17 11:17:43.000000000 +0200
++++ mc-4.6.1/vfs/local.h 2006-03-19 17:01:35.000000000 +0100
+@@ -13,9 +13,9 @@
+ extern int local_errno (struct vfs_class *me);
+ extern int local_lseek (void *data, off_t offset, int whence);
+ #ifdef HAVE_MMAP
+-extern caddr_t local_mmap (struct vfs_class *me, caddr_t addr, size_t len,
++extern void *local_mmap (struct vfs_class *me, void *addr, size_t len,
+ int prot, int flags, void *data, off_t offset);
+-extern int local_munmap (struct vfs_class *me, caddr_t addr, size_t len, void *data);
++extern int local_munmap (struct vfs_class *me, void *addr, size_t len, void *data);
+ #endif
+
+ #endif
+diff -Naur mc-4.6.1.orig/vfs/samba/lib/util.c mc-4.6.1/vfs/samba/lib/util.c
+--- mc-4.6.1.orig/vfs/samba/lib/util.c 2005-05-27 16:19:19.000000000 +0200
++++ mc-4.6.1/vfs/samba/lib/util.c 2006-03-19 17:06:39.000000000 +0100
+@@ -1836,7 +1836,7 @@
+
+ /* Look up the host address in the address list we just got. */
+ for (i = 0; hp->h_addr_list[i]; i++) {
+- if (memcmp(hp->h_addr_list[i], (caddr_t) & addr, sizeof(addr)) == 0)
++ if (memcmp(hp->h_addr_list[i], &addr, sizeof(addr)) == 0)
+ return True;
+ }
+
+diff -Naur mc-4.6.1.orig/vfs/vfs.c mc-4.6.1/vfs/vfs.c
+--- mc-4.6.1.orig/vfs/vfs.c 2005-05-27 16:19:19.000000000 +0200
++++ mc-4.6.1/vfs/vfs.c 2006-03-19 17:03:48.000000000 +0100
+@@ -740,27 +740,27 @@
+
+ #ifdef HAVE_MMAP
+ static struct mc_mmapping {
+- caddr_t addr;
++ void *addr;
+ void *vfs_info;
+ struct vfs_class *vfs;
+ struct mc_mmapping *next;
+ } *mc_mmaparray = NULL;
+
+-caddr_t
+-mc_mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t offset)
++void *
++mc_mmap (void *addr, size_t len, int prot, int flags, int fd, off_t offset)
+ {
+ struct vfs_class *vfs;
+- caddr_t result;
++ void *result;
+ struct mc_mmapping *mcm;
+
+ if (fd == -1)
+- return (caddr_t) -1;
++ return (void *) -1;
+
+ vfs = vfs_op (fd);
+- result = vfs->mmap ? (*vfs->mmap)(vfs, addr, len, prot, flags, vfs_info (fd), offset) : (caddr_t)-1;
+- if (result == (caddr_t)-1){
++ result = vfs->mmap ? (*vfs->mmap)(vfs, addr, len, prot, flags, vfs_info (fd), offset) : (void *)-1;
++ if (result == (void *)-1){
+ errno = ferrno (vfs);
+- return (caddr_t)-1;
++ return (void *)-1;
+ }
+ mcm =g_new (struct mc_mmapping, 1);
+ mcm->addr = result;
+@@ -772,7 +772,7 @@
+ }
+
+ int
+-mc_munmap (caddr_t addr, size_t len)
++mc_munmap (void *addr, size_t len)
+ {
+ struct mc_mmapping *mcm, *mcm2 = NULL;
+
+diff -Naur mc-4.6.1.orig/vfs/vfs.h mc-4.6.1/vfs/vfs.h
+--- mc-4.6.1.orig/vfs/vfs.h 2004-11-16 17:16:08.000000000 +0100
++++ mc-4.6.1/vfs/vfs.h 2006-03-19 17:05:57.000000000 +0100
+@@ -49,8 +49,8 @@
+ int mc_ctl (int fd, int ctlop, void *arg);
+ int mc_setctl (const char *path, int ctlop, void *arg);
+ #ifdef HAVE_MMAP
+-caddr_t mc_mmap (caddr_t, size_t, int, int, int, off_t);
+-int mc_munmap (caddr_t addr, size_t len);
++void *mc_mmap (void *, size_t, int, int, int, off_t);
++int mc_munmap (void *addr, size_t len);
+ #endif /* HAVE_MMAP */
+
+ /* Operations for mc_ctl - on open file */
+diff -Naur mc-4.6.1.orig/vfs/vfs-impl.h mc-4.6.1/vfs/vfs-impl.h
+--- mc-4.6.1.orig/vfs/vfs-impl.h 2004-09-02 15:57:59.000000000 +0200
++++ mc-4.6.1/vfs/vfs-impl.h 2006-03-19 17:12:01.000000000 +0100
+@@ -72,9 +72,9 @@
+ int (*setctl) (struct vfs_class *me, const char *path, int ctlop,
+ void *arg);
+ #ifdef HAVE_MMAP
+- caddr_t (*mmap) (struct vfs_class *me, caddr_t addr, size_t len,
++ void *(*mmap) (struct vfs_class *me, void *addr, size_t len,
+ int prot, int flags, void *vfs_info, off_t offset);
+- int (*munmap) (struct vfs_class *me, caddr_t addr, size_t len,
++ int (*munmap) (struct vfs_class *me, void *addr, size_t len,
+ void *vfs_info);
+ #endif
+ };
diff --git a/app-misc/mc/files/mc-4.6.1-nonblock.patch b/app-misc/mc/files/mc-4.6.1-nonblock.patch
new file mode 100644
index 0000000..eca34aa
--- /dev/null
+++ b/app-misc/mc/files/mc-4.6.1-nonblock.patch
@@ -0,0 +1,11 @@
+--- mc-4.6.1/src/cons.saver.c.old 2006-04-30 20:45:11.725128977 +0200
++++ mc-4.6.1/src/cons.saver.c 2006-04-30 20:45:55.545063247 +0200
+@@ -134,7 +134,7 @@
+
+ if (seteuid (uid) < 0)
+ die ();
+- console_fd = open (tty_name, O_RDONLY);
++ console_fd = open (tty_name, O_RDONLY | O_NONBLOCK);
+ if (console_fd < 0)
+ die ();
+ if (fstat (console_fd, &st) < 0 || ! S_ISCHR (st.st_mode))
diff --git a/app-misc/mc/files/mc.gentoo b/app-misc/mc/files/mc.gentoo
new file mode 100644
index 0000000..a71d249
--- /dev/null
+++ b/app-misc/mc/files/mc.gentoo
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+# A little fix so mc exits into it's current working directory
+MC_ENV=/usr/share/mc/bin/mc.sh
+
+for i in $MC_ENV; do
+ if [ -x $i ]; then
+ . $i
+ fi
+done
+
+# include this, so also xterm,kterm,gterm,etc will have default bash settings
+
+#if [ "x$SHLVL" != "x1" ]; then # We're not a login shell
+# . /etc/profile
+#fi
diff --git a/app-misc/mc/files/mc.ini b/app-misc/mc/files/mc.ini
new file mode 100644
index 0000000..890658e
--- /dev/null
+++ b/app-misc/mc/files/mc.ini
@@ -0,0 +1,2 @@
+[Midnight-Commander]
+use_8th_bit_as_meta=0