summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--misc/mc/Makefile2
-rw-r--r--misc/mc/files/patch-regex145
-rw-r--r--misc/mc/files/patch-src-subshell.c12
3 files changed, 158 insertions, 1 deletions
diff --git a/misc/mc/Makefile b/misc/mc/Makefile
index 2fa272c26302..9b47604d69b5 100644
--- a/misc/mc/Makefile
+++ b/misc/mc/Makefile
@@ -7,7 +7,7 @@
PORTNAME= mc
PORTVERSION= 4.6.1
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= misc shells
MASTER_SITES= ${MASTER_SITE_SUNSITE}
MASTER_SITE_SUBDIR= utils/file/managers/mc/
diff --git a/misc/mc/files/patch-regex b/misc/mc/files/patch-regex
new file mode 100644
index 000000000000..555791405fb5
--- /dev/null
+++ b/misc/mc/files/patch-regex
@@ -0,0 +1,145 @@
+--- src/cmd.c.orig Sat Jun 24 19:44:21 2006
++++ src/cmd.c Sat Jun 24 19:45:46 2006
+@@ -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);
+--- src/dir.c.orig Sat Jun 24 19:51:05 2006
++++ src/dir.c Sat Jun 24 19:51:31 2006
+@@ -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? */
+--- src/ext.c.orig Sat Jun 24 19:52:00 2006
++++ src/ext.c Sat Jun 24 19:52:21 2006
+@@ -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;
+--- src/find.c.orig Sat Jun 24 20:36:41 2006
++++ src/find.c Sat Jun 24 20:37:58 2006
+@@ -575,6 +575,7 @@
+ struct stat tmp_stat;
+ static int pos;
+ static int subdirs_left = 0;
++ int cflags = 0;
+
+ if (!h) { /* someone forces me to close dirp */
+ if (dirp) {
+@@ -586,6 +587,9 @@
+ dp = 0;
+ return 1;
+ }
++
++ if (case_sensitive == 0)
++ cflags |= REG_ICASE;
+ do_search_begin:
+ while (!dp){
+
+@@ -662,7 +666,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, cflags)){
+ if (content_pattern) {
+ if (search_content (h, directory, dp->d_name)) {
+ return 1;
+--- src/user.c.orig Sat Jun 24 19:54:48 2006
++++ src/user.c Sat Jun 24 19:55:10 2006
+@@ -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));
+--- src/util.c.orig Sat Jun 24 19:55:21 2006
++++ src/util.c Sat Jun 24 19:57:49 2006
+@@ -563,25 +563,28 @@
+ 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 cflags)
+ {
+ static regex_t r;
+ static char *old_pattern = NULL;
+ static int old_type;
++ static int old_cflags;
+ 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 || cflags != old_cflags){
+ 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|cflags)) {
+ g_free (my_pattern);
+ return -1;
+ }
++ old_cflags = cflags;
+ old_pattern = my_pattern;
+ old_type = match_type;
+ }
+--- src/util.h.orig Sat Jun 24 19:57:50 2006
++++ src/util.h Sat Jun 24 19:58:03 2006
+@@ -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 cflags);
+
+ /* Error pipes */
+ void open_error_pipe (void);
diff --git a/misc/mc/files/patch-src-subshell.c b/misc/mc/files/patch-src-subshell.c
new file mode 100644
index 000000000000..364640a91165
--- /dev/null
+++ b/misc/mc/files/patch-src-subshell.c
@@ -0,0 +1,12 @@
+diff -ruN src/subshell.c.orig src/subshell.c
+--- src/subshell.c.orig Wed Jun 14 15:45:12 2006
++++ src/subshell.c Wed Jun 14 15:45:39 2006
+@@ -395,6 +395,8 @@
+ subshell_type = ZSH;
+ else if (strstr (shell, "/tcsh"))
+ subshell_type = TCSH;
++ else if (strstr (shell, "/csh"))
++ subshell_type = TCSH;
+ else if (strstr (shell, "/bash") || getenv ("BASH"))
+ subshell_type = BASH;
+ else {