mc/mc-dirname.patch

83 lines
2.8 KiB
Diff

diff -up mc-4.7.3/lib/search/glob.c.dirname mc-4.7.3/lib/search/glob.c
--- mc-4.7.3/lib/search/glob.c.dirname 2010-07-05 20:32:41.000000000 +0200
+++ mc-4.7.3/lib/search/glob.c 2010-09-02 17:21:07.174555656 +0200
@@ -118,14 +118,25 @@ mc_search__translate_replace_glob_to_reg
{
GString *buff = g_string_new ("");
int cnt = '0';
-
+ gboolean escaped_mode = FALSE;
while (*str) {
char c = *str++;
switch (c) {
+ case '\\':
+ if (!escaped_mode)
+ {
+ escaped_mode = TRUE;
+ }
+ g_string_append_c (buff, c);
+ continue;
case '*':
case '?':
+ if (!escaped_mode)
+ {
g_string_append_c (buff, '\\');
c = ++cnt;
+ continue;
+ }
break;
/* breaks copying: mc uses "\0" internally, it must not be changed */
/*case '\\':*/
@@ -134,6 +145,7 @@ mc_search__translate_replace_glob_to_reg
break;
}
g_string_append_c (buff, c);
+ escaped_mode = FALSE;
}
return buff;
}
@@ -170,7 +182,6 @@ mc_search__run_glob (mc_search_t * lc_mc
/* --------------------------------------------------------------------------------------------- */
-
GString *
mc_search_glob_prepare_replace_str (mc_search_t * lc_mc_search, GString * replace_str)
{
diff -up mc-4.7.3/lib/search/regex.c.dirname mc-4.7.3/lib/search/regex.c
--- mc-4.7.3/lib/search/regex.c.dirname 2010-07-05 20:32:41.000000000 +0200
+++ mc-4.7.3/lib/search/regex.c 2010-09-02 17:19:26.836553568 +0200
@@ -320,7 +320,7 @@ mc_search_regex__get_max_num_of_replace_
gsize loop;
for (loop = 0; loop < len - 1; loop++)
{
- if (str[loop] == '\\' && (str[loop + 1] & (char) 0xf0) == 0x30 /* 0-9 */ )
+ if (str[loop] == '\\' && g_ascii_isdigit(str[loop + 1]) )
{
if (strutils_is_char_escaped (str, &str[loop]))
continue;
@@ -421,9 +421,9 @@ mc_search_regex__process_replace_str (co
return -1;
}
- if ((*(curr_str + 1) & (char) 0xf0) == 0x30)
+ if ( g_ascii_isdigit(*(curr_str + 1)))
{
- ret = *(curr_str + 1) - '0';
+ ret = g_ascii_digit_value (*(curr_str + 1));
*skip_len = 2; /* \\ and one digit */
return ret;
}
diff -up mc-4.7.3/lib/strutil/strescape.c.dirname mc-4.7.3/lib/strutil/strescape.c
--- mc-4.7.3/lib/strutil/strescape.c.dirname 2010-07-05 20:32:41.000000000 +0200
+++ mc-4.7.3/lib/strutil/strescape.c 2010-09-02 17:19:26.835554197 +0200
@@ -39,7 +39,7 @@
static const char ESCAPE_SHELL_CHARS[] = " !#$%()&{}[]`?|<>;*\\\"'";
static const char ESCAPE_REGEX_CHARS[] = "^!#$%()&{}[]`?|<>;*.\\";
-static const char ESCAPE_GLOB_CHARS[] = "$*\\";
+static const char ESCAPE_GLOB_CHARS[] = "$*\\?";
/*** file scope functions ************************************************************************/