mirror of
https://git.FreeBSD.org/ports.git
synced 2025-01-02 06:03:50 +00:00
Update to 4.6.1.
Submitted by: Alex Samorukov
This commit is contained in:
parent
8c5aa6e766
commit
0c5af188b9
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=141472
@ -6,8 +6,7 @@
|
||||
#
|
||||
|
||||
PORTNAME= mc
|
||||
PORTVERSION= 4.6.0
|
||||
PORTREVISION= 15
|
||||
PORTVERSION= 4.6.1
|
||||
CATEGORIES= misc shells
|
||||
MASTER_SITES= ${MASTER_SITE_SUNSITE}
|
||||
MASTER_SITE_SUBDIR= utils/file/managers/mc/
|
||||
@ -80,13 +79,13 @@ CONFIGURE_ARGS+=--without-subshell
|
||||
|
||||
.if defined(WITH_PERL_MODULES) || !(defined(WITHOUT_PERL_MODULES) || defined(MINIMAL))
|
||||
.if ${PERL_LEVEL} < 500800
|
||||
RUN_DEPENDS= ${SITE_PERL}/File/Temp.pm:${PORTSDIR}/devel/p5-File-Temp
|
||||
RUN_DEPENDS+= ${SITE_PERL}/File/Temp.pm:${PORTSDIR}/devel/p5-File-Temp
|
||||
.endif
|
||||
.endif
|
||||
|
||||
MAN1= mc.1 mcedit.1 mcview.1
|
||||
_MAN1= mc.1
|
||||
_MANLANG= es hu it pl ru.KOI8-R
|
||||
_MANLANG= es hu it pl sr
|
||||
.for lang in ${_MANLANG}
|
||||
_MANPAGES+= ${_MAN1:S%^%${MAN1PREFIX}/man/${lang}/man1/%}
|
||||
.endfor
|
||||
|
@ -1,2 +1,2 @@
|
||||
MD5 (mc-4.6.0.tar.gz) = 70804dc9e2049e24f294ff7090a82a12
|
||||
SIZE (mc-4.6.0.tar.gz) = 3727676
|
||||
MD5 (mc-4.6.1.tar.gz) = 18b20db6e40480a53bac2870c56fc3c4
|
||||
SIZE (mc-4.6.1.tar.gz) = 3928370
|
||||
|
@ -1,11 +1,11 @@
|
||||
--- doc/ru/Makefile.in.orig Thu Feb 6 00:09:08 2003
|
||||
+++ doc/ru/Makefile.in Tue Jun 15 03:14:17 2004
|
||||
@@ -174,7 +174,7 @@
|
||||
--- doc/ru/Makefile.in.orig Tue Aug 2 21:12:42 2005
|
||||
+++ doc/ru/Makefile.in Tue Aug 2 21:14:25 2005
|
||||
@@ -206,7 +206,7 @@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
-mandir = @mandir@/ru
|
||||
+mandir = @mandir@/ru.KOI8-R
|
||||
mkdir_p = @mkdir_p@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
|
@ -1,232 +0,0 @@
|
||||
--- edit/editcmd.c.orig Thu Dec 19 19:01:34 2002
|
||||
+++ edit/editcmd.c Tue Jun 15 03:16:08 2004
|
||||
@@ -1546,51 +1546,56 @@
|
||||
|
||||
#define is_digit(x) ((x) >= '0' && (x) <= '9')
|
||||
|
||||
-#define snprintf(v) { \
|
||||
+#define snprint(v) { \
|
||||
*p1++ = *p++; \
|
||||
- *p1++ = '%'; \
|
||||
- *p1++ = 'n'; \
|
||||
*p1 = '\0'; \
|
||||
- sprintf(s,q1,v,&n); \
|
||||
+ n = snprintf(s,e-s,q1,v); \
|
||||
+ if (n >= e - s) goto nospc; \
|
||||
s += n; \
|
||||
}
|
||||
|
||||
/* this function uses the sprintf command to do a vprintf */
|
||||
/* it takes pointers to arguments instead of the arguments themselves */
|
||||
-static int sprintf_p (char *str, const char *fmt,...)
|
||||
- __attribute__ ((format (printf, 2, 3)));
|
||||
+/* The return value is the number of bytes written excluding '\0'
|
||||
+ if successfull, -1 if the resulting string would be too long and
|
||||
+ -2 if the format string is errorneous. */
|
||||
+static int snprintf_p (char *str, size_t size, const char *fmt,...)
|
||||
+ __attribute__ ((format (printf, 3, 4)));
|
||||
|
||||
-static int sprintf_p (char *str, const char *fmt,...)
|
||||
+static int snprintf_p (char *str, size_t size, const char *fmt,...)
|
||||
{
|
||||
va_list ap;
|
||||
- int n;
|
||||
- char *q, *p, *s = str;
|
||||
- char q1[32];
|
||||
+ size_t n;
|
||||
+ char *q, *p, *s = str, *e = str + size;
|
||||
+ char q1[40];
|
||||
char *p1;
|
||||
+ int nargs = 0;
|
||||
|
||||
va_start (ap, fmt);
|
||||
p = q = (char *) fmt;
|
||||
|
||||
while ((p = strchr (p, '%'))) {
|
||||
n = p - q;
|
||||
- strncpy (s, q, n); /* copy stuff between format specifiers */
|
||||
+ if (n >= e - s)
|
||||
+ goto nospc;
|
||||
+ memcpy (s, q, n); /* copy stuff between format specifiers */
|
||||
s += n;
|
||||
- *s = 0;
|
||||
q = p;
|
||||
p1 = q1;
|
||||
*p1++ = *p++;
|
||||
if (*p == '%') {
|
||||
p++;
|
||||
*s++ = '%';
|
||||
+ if (s == e)
|
||||
+ goto nospc;
|
||||
q = p;
|
||||
continue;
|
||||
}
|
||||
- if (*p == 'n') {
|
||||
- p++;
|
||||
-/* do nothing */
|
||||
- q = p;
|
||||
- continue;
|
||||
- }
|
||||
+ if (*p == 'n')
|
||||
+ goto err;
|
||||
+ /* We were passed only 16 arguments. */
|
||||
+ if (++nargs == 16)
|
||||
+ goto err;
|
||||
if (*p == '#')
|
||||
*p1++ = *p++;
|
||||
if (*p == '0')
|
||||
@@ -1604,8 +1609,10 @@
|
||||
strcpy (p1, MY_itoa (*va_arg (ap, int *))); /* replace field width with a number */
|
||||
p1 += strlen (p1);
|
||||
} else {
|
||||
- while (is_digit (*p))
|
||||
+ while (is_digit (*p) && p1 < q1 + 20)
|
||||
*p1++ = *p++;
|
||||
+ if (is_digit (*p))
|
||||
+ goto err;
|
||||
}
|
||||
if (*p == '.')
|
||||
*p1++ = *p++;
|
||||
@@ -1614,37 +1621,49 @@
|
||||
strcpy (p1, MY_itoa (*va_arg (ap, int *))); /* replace precision with a number */
|
||||
p1 += strlen (p1);
|
||||
} else {
|
||||
- while (is_digit (*p))
|
||||
+ while (is_digit (*p) && p1 < q1 + 32)
|
||||
*p1++ = *p++;
|
||||
+ if (is_digit (*p))
|
||||
+ goto err;
|
||||
}
|
||||
/* flags done, now get argument */
|
||||
if (*p == 's') {
|
||||
- snprintf (va_arg (ap, char *));
|
||||
+ snprint (va_arg (ap, char *));
|
||||
} else if (*p == 'h') {
|
||||
if (strchr ("diouxX", *p))
|
||||
- snprintf (*va_arg (ap, short *));
|
||||
+ snprint (*va_arg (ap, short *));
|
||||
} else if (*p == 'l') {
|
||||
*p1++ = *p++;
|
||||
if (strchr ("diouxX", *p))
|
||||
- snprintf (*va_arg (ap, long *));
|
||||
+ snprint (*va_arg (ap, long *));
|
||||
} else if (strchr ("cdiouxX", *p)) {
|
||||
- snprintf (*va_arg (ap, int *));
|
||||
+ snprint (*va_arg (ap, int *));
|
||||
} else if (*p == 'L') {
|
||||
*p1++ = *p++;
|
||||
if (strchr ("EefgG", *p))
|
||||
- snprintf (*va_arg (ap, double *)); /* should be long double */
|
||||
+ snprint (*va_arg (ap, double *)); /* should be long double */
|
||||
} else if (strchr ("EefgG", *p)) {
|
||||
- snprintf (*va_arg (ap, double *));
|
||||
+ snprint (*va_arg (ap, double *));
|
||||
} else if (strchr ("DOU", *p)) {
|
||||
- snprintf (*va_arg (ap, long *));
|
||||
+ snprint (*va_arg (ap, long *));
|
||||
} else if (*p == 'p') {
|
||||
- snprintf (*va_arg (ap, void **));
|
||||
- }
|
||||
+ snprint (*va_arg (ap, void **));
|
||||
+ } else
|
||||
+ goto err;
|
||||
q = p;
|
||||
}
|
||||
va_end (ap);
|
||||
- sprintf (s, q); /* print trailing leftover */
|
||||
- return s - str + strlen (s);
|
||||
+ n = strlen (q);
|
||||
+ if (n >= e - s)
|
||||
+ return -1;
|
||||
+ memcpy (s, q, n + 1);
|
||||
+ return s + n - str;
|
||||
+nospc:
|
||||
+ va_end (ap);
|
||||
+ return -1;
|
||||
+err:
|
||||
+ va_end (ap);
|
||||
+ return -2;
|
||||
}
|
||||
|
||||
static void regexp_error (WEdit *edit)
|
||||
@@ -1737,7 +1756,7 @@
|
||||
for (i = 0; i < NUM_REPL_ARGS; i++) {
|
||||
if (s != (char *) 1 && *s) {
|
||||
ord = atoi (s);
|
||||
- if ((ord > 0) && (ord < NUM_REPL_ARGS))
|
||||
+ if ((ord > 0) && (ord <= NUM_REPL_ARGS))
|
||||
argord[i] = ord - 1;
|
||||
else
|
||||
argord[i] = i;
|
||||
@@ -1821,6 +1840,7 @@
|
||||
if (replace_yes) { /* delete then insert new */
|
||||
if (replace_scanf || replace_regexp) {
|
||||
char repl_str[MAX_REPL_LEN + 2];
|
||||
+ int ret = 0;
|
||||
|
||||
/* we need to fill in sargs just like with scanf */
|
||||
if (replace_regexp) {
|
||||
@@ -1829,6 +1849,11 @@
|
||||
k < NUM_REPL_ARGS && pmatch[k].rm_eo >= 0;
|
||||
k++) {
|
||||
unsigned char *t;
|
||||
+
|
||||
+ if (pmatch[k].rm_eo - pmatch[k].rm_so > 255) {
|
||||
+ ret = -1;
|
||||
+ break;
|
||||
+ }
|
||||
t = (unsigned char *) &sargs[k - 1][0];
|
||||
for (j = 0;
|
||||
j < pmatch[k].rm_eo - pmatch[k].rm_so
|
||||
@@ -1849,7 +1874,9 @@
|
||||
for (; k <= NUM_REPL_ARGS; k++)
|
||||
sargs[k - 1][0] = 0;
|
||||
}
|
||||
- if (sprintf_p (repl_str, exp2, PRINTF_ARGS) >= 0) {
|
||||
+ if (!ret)
|
||||
+ ret = snprintf_p (repl_str, MAX_REPL_LEN + 2, exp2, PRINTF_ARGS);
|
||||
+ if (ret >= 0) {
|
||||
times_replaced++;
|
||||
while (i--)
|
||||
edit_delete (edit);
|
||||
@@ -1857,8 +1884,9 @@
|
||||
edit_insert (edit, repl_str[i]);
|
||||
} else {
|
||||
edit_error_dialog (_(" Replace "),
|
||||
- _
|
||||
- (" Error in replacement format string. "));
|
||||
+ ret == -2
|
||||
+ ? _(" Error in replacement format string. ")
|
||||
+ : _(" Replacement too long. "));
|
||||
replace_continue = 0;
|
||||
}
|
||||
} else {
|
||||
@@ -2711,7 +2739,7 @@
|
||||
int word_len = 0, i, num_compl = 0, max_len;
|
||||
long word_start = 0;
|
||||
char *bufpos;
|
||||
- char match_expr[MAX_REPL_LEN];
|
||||
+ char *match_expr;
|
||||
struct selection compl[MAX_WORD_COMPLETIONS]; /* completions */
|
||||
|
||||
/* don't want to disturb another search */
|
||||
@@ -2728,9 +2756,7 @@
|
||||
/* prepare match expression */
|
||||
bufpos = &edit->buffers1[word_start >> S_EDIT_BUF_SIZE]
|
||||
[word_start & M_EDIT_BUF_SIZE];
|
||||
- strncpy (match_expr, bufpos, word_len);
|
||||
- match_expr[word_len] = '\0';
|
||||
- strcat (match_expr, "[a-zA-Z_0-9]+");
|
||||
+ match_expr = g_strdup_printf ("%.*s[a-zA-Z_0-9]+", word_len, bufpos);
|
||||
|
||||
/* init search: backward, regexp, whole word, case sensitive */
|
||||
edit_set_search_parameters (0, 1, 1, 1, 1);
|
||||
@@ -2762,6 +2788,8 @@
|
||||
}
|
||||
|
||||
/* release memory before return */
|
||||
+ g_free (match_expr);
|
||||
+
|
||||
for (i = 0; i < num_compl; i++)
|
||||
g_free (compl[i].text);
|
||||
|
@ -1,218 +0,0 @@
|
||||
--- edit/syntax.c.orig Mon Dec 16 00:55:53 2002
|
||||
+++ edit/syntax.c Tue Jun 15 03:15:09 2004
|
||||
@@ -99,7 +99,8 @@
|
||||
for (p = (unsigned char *) text, q = p + strlen ((char *) p); p < q; p++, i++) {
|
||||
switch (*p) {
|
||||
case '\001':
|
||||
- p++;
|
||||
+ if (++p > q)
|
||||
+ return -1;
|
||||
for (;;) {
|
||||
c = edit_get_byte (edit, i);
|
||||
if (!*p)
|
||||
@@ -114,7 +115,8 @@
|
||||
}
|
||||
break;
|
||||
case '\002':
|
||||
- p++;
|
||||
+ if (++p > q)
|
||||
+ return -1;
|
||||
j = 0;
|
||||
for (;;) {
|
||||
c = edit_get_byte (edit, i);
|
||||
@@ -150,12 +152,13 @@
|
||||
}
|
||||
break;
|
||||
case '\003':
|
||||
- p++;
|
||||
+ if (++p > q)
|
||||
+ return -1;
|
||||
c = -1;
|
||||
for (;; i++) {
|
||||
d = c;
|
||||
c = edit_get_byte (edit, i);
|
||||
- for (j = 0; p[j] != '\003'; j++)
|
||||
+ for (j = 0; p[j] != '\003' && p[j]; j++)
|
||||
if (c == p[j])
|
||||
goto found_char2;
|
||||
break;
|
||||
@@ -163,20 +166,23 @@
|
||||
j = c; /* dummy command */
|
||||
}
|
||||
i--;
|
||||
- while (*p != '\003')
|
||||
+ while (*p != '\003' && p <= q)
|
||||
p++;
|
||||
+ if (p > q)
|
||||
+ return -1;
|
||||
if (p[1] == d)
|
||||
i--;
|
||||
break;
|
||||
case '\004':
|
||||
- p++;
|
||||
+ if (++p > q)
|
||||
+ return -1;
|
||||
c = edit_get_byte (edit, i);
|
||||
- for (; *p != '\004'; p++)
|
||||
+ for (; *p != '\004' && *p; p++)
|
||||
if (c == *p)
|
||||
goto found_char3;
|
||||
return -1;
|
||||
found_char3:
|
||||
- for (; *p != '\004'; p++);
|
||||
+ for (; *p != '\004' && *p; p++);
|
||||
break;
|
||||
default:
|
||||
if (*p != edit_get_byte (edit, i))
|
||||
@@ -534,14 +540,14 @@
|
||||
if (!*fg)
|
||||
fg = 0;
|
||||
if (fg) {
|
||||
- strcpy (f, fg);
|
||||
+ g_strlcpy (f, fg, sizeof (f));
|
||||
p = strchr (f, '/');
|
||||
if (p)
|
||||
*p = '\0';
|
||||
fg = f;
|
||||
}
|
||||
if (bg) {
|
||||
- strcpy (b, bg);
|
||||
+ g_strlcpy (b, bg, sizeof (b));
|
||||
p = strchr (b, '/');
|
||||
if (p)
|
||||
*p = '\0';
|
||||
@@ -588,13 +594,16 @@
|
||||
int num_words = -1, num_contexts = -1;
|
||||
int argc, result = 0;
|
||||
int i, j;
|
||||
+ int alloc_contexts = MAX_CONTEXTS,
|
||||
+ alloc_words_per_context = MAX_WORDS_PER_CONTEXT,
|
||||
+ max_alloc_words_per_context = MAX_WORDS_PER_CONTEXT;
|
||||
|
||||
args[0] = 0;
|
||||
|
||||
strcpy (whole_left, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_01234567890");
|
||||
strcpy (whole_right, "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_01234567890");
|
||||
|
||||
- r = edit->rules = g_malloc0 (MAX_CONTEXTS * sizeof (struct context_rule *));
|
||||
+ r = edit->rules = g_malloc (alloc_contexts * sizeof (struct context_rule *));
|
||||
|
||||
for (;;) {
|
||||
char **a;
|
||||
@@ -637,13 +646,13 @@
|
||||
check_a;
|
||||
if (!strcmp (*a, "left")) {
|
||||
a++;
|
||||
- strcpy (whole_left, *a);
|
||||
+ g_strlcpy (whole_left, *a, sizeof (whole_left));
|
||||
} else if (!strcmp (*a, "right")) {
|
||||
a++;
|
||||
- strcpy (whole_right, *a);
|
||||
+ g_strlcpy (whole_right, *a, sizeof (whole_right));
|
||||
} else {
|
||||
- strcpy (whole_left, *a);
|
||||
- strcpy (whole_right, *a);
|
||||
+ g_strlcpy (whole_left, *a, sizeof (whole_left));
|
||||
+ g_strlcpy (whole_right, *a, sizeof (whole_right));
|
||||
}
|
||||
a++;
|
||||
check_not_a;
|
||||
@@ -659,6 +668,8 @@
|
||||
c->right = g_strdup (" ");
|
||||
num_contexts = 0;
|
||||
} else {
|
||||
+ /* Terminate previous context. */
|
||||
+ r[num_contexts - 1]->keyword[num_words] = NULL;
|
||||
c = r[num_contexts] = g_malloc0 (sizeof (struct context_rule));
|
||||
if (!strcmp (*a, "exclusive")) {
|
||||
a++;
|
||||
@@ -693,10 +704,7 @@
|
||||
c->first_left = *c->left;
|
||||
c->first_right = *c->right;
|
||||
}
|
||||
- c->keyword = g_malloc0 (MAX_WORDS_PER_CONTEXT * sizeof (struct key_word *));
|
||||
-#if 0
|
||||
- c->max_words = MAX_WORDS_PER_CONTEXT;
|
||||
-#endif
|
||||
+ c->keyword = g_malloc (alloc_words_per_context * sizeof (struct key_word *));
|
||||
num_words = 1;
|
||||
c->keyword[0] = g_malloc0 (sizeof (struct key_word));
|
||||
fg = *a;
|
||||
@@ -705,12 +713,20 @@
|
||||
bg = *a;
|
||||
if (*a)
|
||||
a++;
|
||||
- strcpy (last_fg, fg ? fg : "");
|
||||
- strcpy (last_bg, bg ? bg : "");
|
||||
+ g_strlcpy (last_fg, fg ? fg : "", sizeof (last_fg));
|
||||
+ g_strlcpy (last_bg, bg ? bg : "", sizeof (last_bg));
|
||||
c->keyword[0]->color = this_try_alloc_color_pair (fg, bg);
|
||||
c->keyword[0]->keyword = g_strdup (" ");
|
||||
check_not_a;
|
||||
- num_contexts++;
|
||||
+
|
||||
+ alloc_words_per_context = MAX_WORDS_PER_CONTEXT;
|
||||
+ if (++num_contexts >= alloc_contexts) {
|
||||
+ struct context_rule **tmp;
|
||||
+
|
||||
+ alloc_contexts += 128;
|
||||
+ tmp = g_realloc (r, alloc_contexts * sizeof (struct context_rule *));
|
||||
+ r = tmp;
|
||||
+ }
|
||||
} else if (!strcmp (args[0], "spellcheck")) {
|
||||
if (!c) {
|
||||
result = line;
|
||||
@@ -757,7 +773,18 @@
|
||||
bg = last_bg;
|
||||
k->color = this_try_alloc_color_pair (fg, bg);
|
||||
check_not_a;
|
||||
- num_words++;
|
||||
+
|
||||
+ if (++num_words >= alloc_words_per_context) {
|
||||
+ struct key_word **tmp;
|
||||
+
|
||||
+ alloc_words_per_context += 1024;
|
||||
+
|
||||
+ if (alloc_words_per_context > max_alloc_words_per_context)
|
||||
+ max_alloc_words_per_context = alloc_words_per_context;
|
||||
+
|
||||
+ tmp = g_realloc (c->keyword, alloc_words_per_context * sizeof (struct key_word *));
|
||||
+ c->keyword = tmp;
|
||||
+ }
|
||||
} else if (*(args[0]) == '#') {
|
||||
/* do nothing for comment */
|
||||
} else if (!strcmp (args[0], "file")) {
|
||||
@@ -771,6 +798,12 @@
|
||||
free_args (args);
|
||||
syntax_g_free (l);
|
||||
|
||||
+ /* Terminate context array. */
|
||||
+ if (num_contexts > 0) {
|
||||
+ r[num_contexts - 1]->keyword[num_words] = NULL;
|
||||
+ r[num_contexts] = NULL;
|
||||
+ }
|
||||
+
|
||||
if (!edit->rules[0])
|
||||
syntax_g_free (edit->rules);
|
||||
|
||||
@@ -783,7 +816,10 @@
|
||||
}
|
||||
|
||||
{
|
||||
- char first_chars[MAX_WORDS_PER_CONTEXT + 2], *p;
|
||||
+ char *first_chars, *p;
|
||||
+
|
||||
+ first_chars = g_malloc (max_alloc_words_per_context + 2);
|
||||
+
|
||||
for (i = 0; edit->rules[i]; i++) {
|
||||
c = edit->rules[i];
|
||||
p = first_chars;
|
||||
@@ -794,6 +830,8 @@
|
||||
c->keyword_first_chars = g_malloc0 (strlen (first_chars) + 2);
|
||||
strcpy (c->keyword_first_chars, first_chars);
|
||||
}
|
||||
+
|
||||
+ g_free (first_chars);
|
||||
}
|
||||
|
||||
return result;
|
@ -1,11 +0,0 @@
|
||||
--- lib/cedit.menu.orig Sun Aug 25 00:39:08 2002
|
||||
+++ lib/cedit.menu Tue Jun 15 03:15:09 2004
|
||||
@@ -449,7 +449,7 @@
|
||||
|
||||
m view `man'
|
||||
MAN=%{Enter name of man:}
|
||||
- TMPFILE=/tmp/mcview.$MAN.$$
|
||||
+ TMPFILE=`mktemp ${MC_TMPDIR:-/tmp}/mcview.$MAN.$$` || exit 1
|
||||
man -Pcat $MAN >$TMPFILE
|
||||
mcview $TMPFILE
|
||||
rm -f $TMPFILE
|
@ -1,11 +0,0 @@
|
||||
--- lib/mc.ext.in.orig Sun Jun 27 00:55:29 2004
|
||||
+++ lib/mc.ext.in Sun Jun 27 00:56:01 2004
|
||||
@@ -388,7 +388,7 @@
|
||||
# Open=%cd %p#utar
|
||||
View=%view{ascii} bzip -dc %f 2>/dev/null | tar tvvf -
|
||||
|
||||
-regex/\.tar\.bz2$
|
||||
+regex/\.t(bz|ar\.bz2)$
|
||||
Open=%cd %p#utar
|
||||
View=%view{ascii} bzip2 -dc %f 2>/dev/null | tar tvvf -
|
||||
|
@ -1,37 +0,0 @@
|
||||
--- lib/mc.menu.orig Sun Dec 8 07:12:19 2002
|
||||
+++ lib/mc.menu Tue Jun 15 03:15:09 2004
|
||||
@@ -14,9 +14,10 @@
|
||||
|
||||
|
||||
0 Edit a bug report and send it to root
|
||||
- ${EDITOR-vi} /tmp/mail.$$
|
||||
- test -r /tmp/mail.$$ && mail root < /tmp/mail.$$
|
||||
- rm -f /tmp/mail.$$
|
||||
+ I=`mktemp ${MC_TMPDIR:-/tmp}/mail.XXXXXX` || exit 1
|
||||
+ ${EDITOR-vi} $I
|
||||
+ test -r $I && mail root < $I
|
||||
+ rm -f $I
|
||||
|
||||
=+ f \.1$ | f \.3$ | f \.4$ | f \.5$ | f \.6$ | f \.7$ | f \.8$ | f \.man$ & t r
|
||||
1 Display the file with roff -man
|
||||
@@ -112,8 +113,9 @@
|
||||
CHECK=`awk '{print $1 ; exit}' %f` 2>/dev/null
|
||||
case $CHECK in
|
||||
Newsgroups:|Path:)
|
||||
- cp %f /tmp/%f.$$ && sed '/^'"$CHECK"' /,/^$/d' /tmp/%f.$$ > %f
|
||||
- [ "$?" = "0" ] && rm /tmp/%f.$$
|
||||
+ I=`mktemp ${MC_TMPDIR:-/tmp}/news.XXXXXX` || exit 1
|
||||
+ cp %f $I && sed '/^'"$CHECK"' /,/^$/d' $I > %f
|
||||
+ [ "$?" = "0" ] && rm $I
|
||||
echo %f: header removed
|
||||
;;
|
||||
*)
|
||||
@@ -126,7 +128,7 @@
|
||||
set %t
|
||||
while [ -n "$1" ]; do
|
||||
CHECK=`awk '{print $1 ; exit}' $1` 2>/dev/null
|
||||
- WFILE=/tmp/${1}.$$
|
||||
+ WFILE=`mktemp ${MC_TMPDIR:-/tmp}/news.XXXXXX` || exit 1
|
||||
case $CHECK in
|
||||
Newsgroups:|Path:)
|
||||
cp $1 $WFILE && sed '/^'"$CHECK"' /,/^$/d' $WFILE > $1
|
@ -1,75 +0,0 @@
|
||||
--- doc/es/mc.1.in.orig Wed Feb 5 21:54:31 2003
|
||||
+++ doc/es/mc.1.in Tue Jun 15 03:15:09 2004
|
||||
@@ -1361,8 +1361,10 @@
|
||||
od -c %f
|
||||
|
||||
B Edita un informe de errores y lo envía al superusuario
|
||||
- vi /tmp/mail.$$
|
||||
- mail -s "Error Midnight Commander" root < /tmp/mail.$$
|
||||
+ I=`mktemp ${MC_TMPDIR:-/tmp}/mail.XXXXXX` || exit 1
|
||||
+ vi $I
|
||||
+ mail -s "Error Midnight Commander" root < $I
|
||||
+ rm -f $I
|
||||
|
||||
M Lee al correo
|
||||
emacs -f rmail
|
||||
--- doc/hu/mc.1.in.orig Thu Jan 16 16:30:55 2003
|
||||
+++ doc/hu/mc.1.in Tue Jun 15 03:15:09 2004
|
||||
@@ -1381,8 +1381,10 @@
|
||||
od -c %f
|
||||
|
||||
B A hiba leírás szerkesztése és elküldése a root-nak
|
||||
- vi /tmp/mail.$$
|
||||
- mail -s "Midnight Commander bug" root < /tmp/mail.$$
|
||||
+ I=`mktemp ${MC_TMPDIR:-/tmp}/mail.XXXXXX` || exit 1
|
||||
+ vi $I
|
||||
+ mail -s "Midnight Commander bug" root < $I
|
||||
+ rm -f $I
|
||||
|
||||
M Levél olvasás
|
||||
emacs -f rmail
|
||||
--- doc/it/mc.1.in.orig Sun Jan 19 23:11:06 2003
|
||||
+++ doc/it/mc.1.in Tue Jun 15 03:15:09 2004
|
||||
@@ -1379,8 +1379,10 @@
|
||||
od -c %f
|
||||
|
||||
B Modifica un rapporto bachi e lo spedisce a root
|
||||
- vi /tmp/mail.$$
|
||||
- mail -s "Midnight Commander bug" root < /tmp/mail.$$
|
||||
+ I=`mktemp ${MC_TMPDIR:-/tmp}/mail.XXXXXX` || exit 1
|
||||
+ vi $I
|
||||
+ mail -s "Midnight Commander bug" root < $I
|
||||
+ rm -f $I
|
||||
|
||||
M Legge la posta
|
||||
emacs -f rmail
|
||||
--- doc/mc.1.in.orig Wed Feb 5 21:54:31 2003
|
||||
+++ doc/mc.1.in Tue Jun 15 03:15:09 2004
|
||||
@@ -1385,8 +1385,10 @@
|
||||
od -c %f
|
||||
|
||||
B Edit a bug report and send it to root
|
||||
- vi /tmp/mail.$$
|
||||
- mail -s "Midnight Commander bug" root < /tmp/mail.$$
|
||||
+ I=`mktemp ${MC_TMPDIR:-/tmp}/mail.XXXXXX` || exit 1
|
||||
+ vi $I
|
||||
+ mail -s "Midnight Commander bug" root < $I
|
||||
+ rm -f $I
|
||||
|
||||
M Read mail
|
||||
emacs -f rmail
|
||||
--- doc/ru/mc.1.in.orig Tue Feb 4 03:59:14 2003
|
||||
+++ doc/ru/mc.1.in Tue Jun 15 03:15:09 2004
|
||||
@@ -1557,8 +1557,10 @@
|
||||
od -c %f
|
||||
|
||||
B Edit a bug report and send it to root
|
||||
- vi /tmp/mail.$$
|
||||
- mail -s "Midnight Commander bug" root < /tmp/mail.$$
|
||||
+ I=`mktemp ${MC_TMPDIR:-/tmp}/mail.XXXXXX` || exit 1
|
||||
+ vi $I
|
||||
+ mail -s "Midnight Commander bug" root < $I
|
||||
+ rm -f $I
|
||||
|
||||
M Read mail
|
||||
emacs -f rmail
|
File diff suppressed because it is too large
Load Diff
@ -1,18 +0,0 @@
|
||||
--- slang/sltermin.c.orig Mon Oct 7 18:08:16 2002
|
||||
+++ slang/sltermin.c Tue Jun 15 03:15:09 2004
|
||||
@@ -267,9 +267,12 @@
|
||||
|
||||
if (NULL != (home = getenv ("HOME")))
|
||||
{
|
||||
- strncpy (home_ti, home, sizeof (home_ti) - 11);
|
||||
- home_ti [sizeof(home_ti) - 11] = 0;
|
||||
- strcat (home_ti, "/.terminfo");
|
||||
+ size_t len = strlen (home);
|
||||
+
|
||||
+ if (len > sizeof (home_ti) - sizeof ("/.terminfo"))
|
||||
+ len = sizeof (home_ti) - sizeof ("/.terminfo");
|
||||
+ memcpy (home_ti, home, len);
|
||||
+ memcpy (home_ti + len, "/.terminfo", sizeof ("/.terminfo"));
|
||||
Terminfo_Dirs [0] = home_ti;
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- src/background.c.orig Sat Sep 28 12:10:29 2002
|
||||
+++ src/background.c Tue Jun 15 03:17:55 2004
|
||||
@@ -142,7 +142,7 @@
|
||||
close (1);
|
||||
close (2);
|
||||
|
||||
- if ((nullfd = open ("/dev/null", O_RDONLY)) != -1){
|
||||
+ if ((nullfd = open ("/dev/null", O_RDWR)) != -1){
|
||||
while (dup2 (nullfd, 0) == -1 && errno == EINTR)
|
||||
;
|
||||
while (dup2 (nullfd, 1) == -1 && errno == EINTR)
|
@ -1,11 +0,0 @@
|
||||
--- src/cmd.c.orig Wed Feb 5 21:54:33 2003
|
||||
+++ src/cmd.c Tue Jun 15 03:15:09 2004
|
||||
@@ -1132,7 +1132,7 @@
|
||||
|
||||
q = g_strdup_printf (_(" Symlink `%s\' points to: "), name_trunc (p, 32));
|
||||
|
||||
- i = readlink (p, buffer, MC_MAXPATHLEN);
|
||||
+ i = readlink (p, buffer, MC_MAXPATHLEN - 1);
|
||||
if (i > 0) {
|
||||
buffer [i] = 0;
|
||||
dest = input_expand_dialog (_(" Edit symlink "), q, buffer);
|
@ -1,11 +0,0 @@
|
||||
--- src/command.c.orig Thu Nov 14 13:25:19 2002
|
||||
+++ src/command.c Tue Jun 15 03:15:09 2004
|
||||
@@ -258,7 +258,7 @@
|
||||
WInput *
|
||||
command_new (int y, int x, int cols)
|
||||
{
|
||||
- WInput *cmd = g_new (WInput, 1);
|
||||
+ WInput *cmd;
|
||||
|
||||
cmd = input_new (y, x, DEFAULT_COLOR, cols, "", "cmdline");
|
||||
|
@ -1,30 +0,0 @@
|
||||
--- src/complete.c.orig Wed Nov 13 08:56:41 2002
|
||||
+++ src/complete.c Tue Jun 15 03:15:09 2004
|
||||
@@ -270,7 +270,7 @@
|
||||
*temp = '$';
|
||||
if (isbrace)
|
||||
temp [1] = '{';
|
||||
- strncpy (temp + 1 + isbrace, *env_p, p - *env_p);
|
||||
+ memcpy (temp + 1 + isbrace, *env_p, p - *env_p);
|
||||
if (isbrace)
|
||||
strcpy (temp + 2 + (p - *env_p), "}");
|
||||
else
|
||||
@@ -605,8 +605,7 @@
|
||||
matches = i;
|
||||
match_list [matches + 1] = NULL;
|
||||
match_list[0] = g_malloc (low + 1);
|
||||
- strncpy (match_list[0], match_list[1], low);
|
||||
- match_list[0][low] = 0;
|
||||
+ g_strlcpy (match_list[0], match_list[1], low + 1);
|
||||
}
|
||||
} else { /* There were no matches. */
|
||||
g_free (match_list);
|
||||
@@ -806,7 +805,7 @@
|
||||
*(p++) = *(q++);
|
||||
*p = 0;
|
||||
}
|
||||
- strncpy (in->buffer + start, text, len - start + end);
|
||||
+ memcpy (in->buffer + start, text, len - start + end);
|
||||
in->point += len;
|
||||
update_input (in, 1);
|
||||
end += len;
|
@ -1,725 +0,0 @@
|
||||
--- src/cons.handler.c.orig Mon Sep 23 13:43:23 2002
|
||||
+++ src/cons.handler.c Tue Jun 15 03:14:17 2004
|
||||
@@ -15,8 +15,6 @@
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
|
||||
|
||||
-/* The cons saver can't have a pid of 1, used to prevent bunches of */
|
||||
-/*#ifdef linux */
|
||||
#include <config.h>
|
||||
|
||||
#ifdef HAVE_UNISTD_H
|
||||
@@ -24,6 +22,21 @@
|
||||
#endif
|
||||
#include <sys/types.h>
|
||||
#include <signal.h>
|
||||
+#include <stdio.h>
|
||||
+
|
||||
+#ifdef SCO_FLAVOR
|
||||
+#include <sys/types.h>
|
||||
+#include <sys/vid.h>
|
||||
+#include <sys/console.h>
|
||||
+#include <sys/vtkd.h>
|
||||
+#include <memory.h>
|
||||
+#include <signal.h>
|
||||
+#endif /* SCO_FLAVOR */
|
||||
+
|
||||
+#ifdef __FreeBSD__
|
||||
+#include <sys/consio.h>
|
||||
+#include <sys/ioctl.h>
|
||||
+#endif /* __FreeBSD__ */
|
||||
|
||||
#include "global.h"
|
||||
#include "tty.h"
|
||||
@@ -31,30 +44,28 @@
|
||||
|
||||
signed char console_flag = 0;
|
||||
|
||||
-#if defined(linux) || defined(__linux__)
|
||||
-#include "main.h"
|
||||
+#ifdef __linux__
|
||||
+
|
||||
+/* The cons saver can't have a pid of 1, used to prevent bunches of
|
||||
+ * #ifdef linux */
|
||||
|
||||
-int cons_saver_pid = 1;
|
||||
-static int pipefd1 [2] = {-1, -1}, pipefd2 [2] = {-1, -1};
|
||||
+int cons_saver_pid = 1;
|
||||
+static int pipefd1[2] = { -1, -1 };
|
||||
+static int pipefd2[2] = { -1, -1 };
|
||||
|
||||
-void show_console_contents (int starty, unsigned char begin_line, unsigned char end_line)
|
||||
+static void
|
||||
+show_console_contents_linux (int starty, unsigned char begin_line,
|
||||
+ unsigned char end_line)
|
||||
{
|
||||
unsigned char message = 0;
|
||||
unsigned short bytes = 0;
|
||||
int i;
|
||||
|
||||
- standend ();
|
||||
-
|
||||
- if (look_for_rxvt_extensions ()) {
|
||||
- show_rxvt_contents (starty, begin_line, end_line);
|
||||
- return;
|
||||
- }
|
||||
-
|
||||
/* Is tty console? */
|
||||
if (!console_flag)
|
||||
return;
|
||||
/* Paranoid: Is the cons.saver still running? */
|
||||
- if (cons_saver_pid < 1 || kill (cons_saver_pid, SIGCONT)){
|
||||
+ if (cons_saver_pid < 1 || kill (cons_saver_pid, SIGCONT)) {
|
||||
cons_saver_pid = 0;
|
||||
console_flag = 0;
|
||||
return;
|
||||
@@ -75,9 +86,9 @@
|
||||
read (pipefd2[0], &bytes, 2);
|
||||
|
||||
/* Read the bytes and output them */
|
||||
- for (i = 0; i < bytes; i++){
|
||||
+ for (i = 0; i < bytes; i++) {
|
||||
if ((i % COLS) == 0)
|
||||
- move (starty+(i/COLS), 0);
|
||||
+ move (starty + (i / COLS), 0);
|
||||
read (pipefd2[0], &message, 1);
|
||||
addch (message);
|
||||
}
|
||||
@@ -86,16 +97,15 @@
|
||||
read (pipefd2[0], &message, 1);
|
||||
}
|
||||
|
||||
-void handle_console (unsigned char action)
|
||||
+static void
|
||||
+handle_console_linux (unsigned char action)
|
||||
{
|
||||
char *tty_name;
|
||||
char *mc_conssaver;
|
||||
int status;
|
||||
|
||||
- switch (action){
|
||||
+ switch (action) {
|
||||
case CONSOLE_INIT:
|
||||
- if (look_for_rxvt_extensions ())
|
||||
- return;
|
||||
/* Close old pipe ends in case it is the 2nd time we run cons.saver */
|
||||
close (pipefd1[1]);
|
||||
close (pipefd2[0]);
|
||||
@@ -104,7 +114,7 @@
|
||||
pipe (pipefd2);
|
||||
/* Get the console saver running */
|
||||
cons_saver_pid = fork ();
|
||||
- if (cons_saver_pid < 0){
|
||||
+ if (cons_saver_pid < 0) {
|
||||
/* Cannot fork */
|
||||
/* Delete pipes */
|
||||
close (pipefd1[1]);
|
||||
@@ -112,14 +122,14 @@
|
||||
close (pipefd2[1]);
|
||||
close (pipefd2[0]);
|
||||
console_flag = 0;
|
||||
- } else if (cons_saver_pid > 0){
|
||||
+ } else if (cons_saver_pid > 0) {
|
||||
/* Parent */
|
||||
/* Close the extra pipe ends */
|
||||
close (pipefd1[0]);
|
||||
close (pipefd2[1]);
|
||||
/* Was the child successful? */
|
||||
read (pipefd2[0], &console_flag, 1);
|
||||
- if (!console_flag){
|
||||
+ if (!console_flag) {
|
||||
close (pipefd1[1]);
|
||||
close (pipefd2[0]);
|
||||
waitpid (cons_saver_pid, &status, 0);
|
||||
@@ -152,33 +162,31 @@
|
||||
close (1);
|
||||
close (0);
|
||||
_exit (3);
|
||||
- } /* if (cons_saver_pid ...) */
|
||||
+ } /* if (cons_saver_pid ...) */
|
||||
break;
|
||||
|
||||
case CONSOLE_DONE:
|
||||
case CONSOLE_SAVE:
|
||||
case CONSOLE_RESTORE:
|
||||
- if (look_for_rxvt_extensions ())
|
||||
- return;
|
||||
/* Is tty console? */
|
||||
if (!console_flag)
|
||||
return;
|
||||
/* Paranoid: Is the cons.saver still running? */
|
||||
- if (cons_saver_pid < 1 || kill (cons_saver_pid, SIGCONT)){
|
||||
+ if (cons_saver_pid < 1 || kill (cons_saver_pid, SIGCONT)) {
|
||||
cons_saver_pid = 0;
|
||||
console_flag = 0;
|
||||
return;
|
||||
}
|
||||
/* Send command to the console handler */
|
||||
write (pipefd1[1], &action, 1);
|
||||
- if (action != CONSOLE_DONE){
|
||||
+ if (action != CONSOLE_DONE) {
|
||||
/* Wait the console handler to do its job */
|
||||
read (pipefd2[0], &console_flag, 1);
|
||||
}
|
||||
- if (action == CONSOLE_DONE || !console_flag){
|
||||
+ if (action == CONSOLE_DONE || !console_flag) {
|
||||
/* We are done -> Let's clean up */
|
||||
- close (pipefd1 [1]);
|
||||
- close (pipefd2 [0]);
|
||||
+ close (pipefd1[1]);
|
||||
+ close (pipefd2[0]);
|
||||
waitpid (cons_saver_pid, &status, 0);
|
||||
console_flag = 0;
|
||||
}
|
||||
@@ -186,221 +194,371 @@
|
||||
}
|
||||
}
|
||||
|
||||
-#endif /* #ifdef linux */
|
||||
+#elif defined(SCO_FLAVOR)
|
||||
|
||||
-#ifdef SCO_FLAVOR
|
||||
/*
|
||||
** SCO console save/restore handling routines
|
||||
** Copyright (C) 1997 Alex Tkachenko <alex@bcs.zaporizhzhe.ua>
|
||||
*/
|
||||
|
||||
-#include <stdio.h>
|
||||
-#include <sys/types.h>
|
||||
-#include <sys/vid.h>
|
||||
-#include <sys/console.h>
|
||||
-#include <sys/vtkd.h>
|
||||
-#include <memory.h>
|
||||
-#include <signal.h>
|
||||
-#include "tty.h"
|
||||
-#include "util.h"
|
||||
#include "color.h"
|
||||
-#include "cons.saver.h"
|
||||
|
||||
static int FD_OUT = 2;
|
||||
|
||||
-static unsigned short* vidbuf = NULL;
|
||||
-static unsigned short* screen = NULL;
|
||||
+static unsigned short *vidbuf = NULL;
|
||||
+static unsigned short *screen = NULL;
|
||||
static int height = 0, width = 0, saved_attr = 0;
|
||||
static int mode = 0;
|
||||
|
||||
-#define SIG_ACQUIRE 21 /* originally: handset, line status change (?) */
|
||||
+#define SIG_ACQUIRE 21 /* originally: handset, line status change (?) */
|
||||
|
||||
static int
|
||||
-vt_active()
|
||||
+vt_active ()
|
||||
+{
|
||||
+ struct vid_info vi;
|
||||
+ int adapter = ioctl (FD_OUT, CONS_CURRENT, 0);
|
||||
+
|
||||
+ vi.size = sizeof (struct vid_info);
|
||||
+ ioctl (FD_OUT, CONS_GETINFO, &(vi));
|
||||
+ return (vi.m_num == ioctl (FD_OUT, CONSADP, adapter));
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+console_acquire_vt ()
|
||||
{
|
||||
- struct vid_info vi;
|
||||
- int adapter = ioctl(FD_OUT, CONS_CURRENT, 0);
|
||||
+ struct vt_mode smode;
|
||||
|
||||
- vi.size = sizeof(struct vid_info);
|
||||
- ioctl(FD_OUT, CONS_GETINFO, &(vi));
|
||||
- return (vi.m_num == ioctl(FD_OUT,CONSADP,adapter));
|
||||
+ signal (SIG_ACQUIRE, SIG_DFL);
|
||||
+ smode.mode = VT_AUTO;
|
||||
+ smode.waitv = smode.relsig = smode.acqsig = smode.frsig = 0;
|
||||
+ ioctl (FD_OUT, VT_SETMODE, &smode);
|
||||
+ ioctl (FD_OUT, VT_RELDISP, VT_ACKACQ);
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+console_shutdown ()
|
||||
+{
|
||||
+ if (!console_flag) {
|
||||
+ return;
|
||||
+ }
|
||||
+ if (screen != NULL) {
|
||||
+ g_free (screen);
|
||||
+ }
|
||||
+ console_flag = 0;
|
||||
}
|
||||
|
||||
static void
|
||||
-console_acquire_vt()
|
||||
+console_save ()
|
||||
{
|
||||
+ struct m6845_info mi;
|
||||
+
|
||||
+ if (!console_flag) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (!vt_active ()) {
|
||||
struct vt_mode smode;
|
||||
|
||||
- signal(SIG_ACQUIRE, SIG_DFL);
|
||||
- smode.mode = VT_AUTO;
|
||||
- smode.waitv = smode.relsig = smode.acqsig = smode.frsig = 0;
|
||||
- ioctl(FD_OUT, VT_SETMODE, &smode);
|
||||
- ioctl(FD_OUT, VT_RELDISP, VT_ACKACQ);
|
||||
+ /*
|
||||
+ ** User switched out of our vt. Let's wait until we get SIG_ACQUIRE,
|
||||
+ ** otherwise we could save wrong screen image
|
||||
+ */
|
||||
+ signal (SIG_ACQUIRE, console_acquire_vt);
|
||||
+ smode.mode = VT_PROCESS;
|
||||
+ smode.waitv = 0;
|
||||
+ smode.waitv = smode.relsig = smode.acqsig = smode.frsig =
|
||||
+ SIG_ACQUIRE;
|
||||
+ ioctl (FD_OUT, VT_SETMODE, &smode);
|
||||
+
|
||||
+ pause ();
|
||||
+ }
|
||||
+
|
||||
+ saved_attr = ioctl (FD_OUT, GIO_ATTR, 0);
|
||||
+
|
||||
+ vidbuf = (unsigned short *) ioctl (FD_OUT, MAPCONS, 0);
|
||||
+
|
||||
+ mi.size = sizeof (struct m6845_info);
|
||||
+ ioctl (FD_OUT, CONS_6845INFO, &mi);
|
||||
+
|
||||
+ {
|
||||
+ unsigned short *start = vidbuf + mi.screen_top;
|
||||
+ memcpy (screen, start, width * height * 2);
|
||||
+ }
|
||||
+
|
||||
+ write (FD_OUT, "\0337", 2); /* save cursor position */
|
||||
}
|
||||
|
||||
static void
|
||||
-console_shutdown()
|
||||
+console_restore ()
|
||||
{
|
||||
- if (!console_flag)
|
||||
- {
|
||||
- return;
|
||||
- }
|
||||
- if (screen != NULL)
|
||||
- {
|
||||
- g_free (screen);
|
||||
- }
|
||||
- console_flag = 0;
|
||||
+ struct m6845_info mi;
|
||||
+ unsigned short *start;
|
||||
+
|
||||
+ if (!console_flag) {
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ write (FD_OUT, "\033[2J", 4);
|
||||
+
|
||||
+ mi.size = sizeof (struct m6845_info);
|
||||
+ ioctl (FD_OUT, CONS_6845INFO, &mi);
|
||||
+
|
||||
+ start = vidbuf + mi.screen_top;
|
||||
+ memcpy (start, screen, width * height * 2);
|
||||
+ write (FD_OUT, "\0338", 2); /* restore cursor position */
|
||||
}
|
||||
|
||||
static void
|
||||
-console_save()
|
||||
+console_init ()
|
||||
{
|
||||
- struct m6845_info mi;
|
||||
+ struct vid_info vi;
|
||||
+ int adapter = ioctl (FD_OUT, CONS_CURRENT, 0);
|
||||
|
||||
- if (!console_flag)
|
||||
- {
|
||||
+ console_flag = 0;
|
||||
+
|
||||
+ if (adapter != -1) {
|
||||
+ vi.size = sizeof (struct vid_info);
|
||||
+ ioctl (FD_OUT, CONS_GETINFO, &(vi));
|
||||
+
|
||||
+ if (vt_active ()) {
|
||||
+ console_flag = 1;
|
||||
+
|
||||
+ height = vi.mv_rsz;
|
||||
+ width = vi.mv_csz;
|
||||
+
|
||||
+ screen = (unsigned short *) g_malloc (height * width * 2);
|
||||
+ if (screen == NULL) {
|
||||
+ console_shutdown ();
|
||||
return;
|
||||
+ }
|
||||
+ console_save ();
|
||||
+ mode = ioctl (FD_OUT, CONS_GET, 0);
|
||||
+ ioctl (FD_OUT, MODESWITCH | mode, 0);
|
||||
+ console_restore ();
|
||||
}
|
||||
+ }
|
||||
+}
|
||||
|
||||
- if (!vt_active())
|
||||
- {
|
||||
- struct vt_mode smode;
|
||||
-
|
||||
- /*
|
||||
- ** User switched out of our vt. Let's wait until we get SIG_ACQUIRE,
|
||||
- ** otherwise we could save wrong screen image
|
||||
- */
|
||||
- signal(SIG_ACQUIRE, console_acquire_vt);
|
||||
- smode.mode = VT_PROCESS;
|
||||
- smode.waitv = 0;
|
||||
- smode.waitv = smode.relsig = smode.acqsig = smode.frsig = SIG_ACQUIRE;
|
||||
- ioctl(FD_OUT, VT_SETMODE, &smode);
|
||||
+static void
|
||||
+handle_console_sco (unsigned char action)
|
||||
+{
|
||||
+ switch (action) {
|
||||
+ case CONSOLE_INIT:
|
||||
+ console_init ();
|
||||
+ break;
|
||||
|
||||
- pause();
|
||||
- }
|
||||
+ case CONSOLE_DONE:
|
||||
+ console_shutdown ();
|
||||
+ break;
|
||||
+
|
||||
+ case CONSOLE_SAVE:
|
||||
+ console_save ();
|
||||
+ break;
|
||||
+
|
||||
+ case CONSOLE_RESTORE:
|
||||
+ console_restore ();
|
||||
+ break;
|
||||
+ default:
|
||||
+ /* Nothing */ ;
|
||||
+ }
|
||||
+}
|
||||
|
||||
- saved_attr = ioctl(FD_OUT, GIO_ATTR, 0);
|
||||
+static void
|
||||
+show_console_contents_sco (int starty, unsigned char begin_line,
|
||||
+ unsigned char end_line)
|
||||
+{
|
||||
+ register int i, len = (end_line - begin_line) * width;
|
||||
|
||||
- vidbuf = (unsigned short*) ioctl(FD_OUT, MAPCONS, 0);
|
||||
+ attrset (DEFAULT_COLOR);
|
||||
+ for (i = 0; i < len; i++) {
|
||||
+ if ((i % width) == 0)
|
||||
+ move (starty + (i / width), 0);
|
||||
+ addch ((unsigned char) screen[width * starty + i]);
|
||||
+ }
|
||||
+}
|
||||
|
||||
- mi.size = sizeof(struct m6845_info);
|
||||
- ioctl(FD_OUT, CONS_6845INFO, &mi);
|
||||
+#elif defined(__FreeBSD__)
|
||||
|
||||
- {
|
||||
- unsigned short* start = vidbuf + mi.screen_top;
|
||||
- memcpy(screen, start, width * height * 2);
|
||||
- }
|
||||
+/*
|
||||
+ * FreeBSD support copyright (C) 2003 Alexander Serkov <serkov@ukrpost.net>.
|
||||
+ * Support for screenmaps by Max Khon <fjoe@FreeBSD.org>
|
||||
+ */
|
||||
+
|
||||
+#define FD_OUT 1
|
||||
+
|
||||
+static struct scrshot screen_shot;
|
||||
+static struct vid_info screen_info;
|
||||
|
||||
- write(FD_OUT,"\0337",2); /* save cursor position */
|
||||
+static void
|
||||
+console_init (void)
|
||||
+{
|
||||
+ if (console_flag)
|
||||
+ return;
|
||||
+
|
||||
+ screen_info.size = sizeof (screen_info);
|
||||
+ if (ioctl (FD_OUT, CONS_GETINFO, &screen_info) == -1)
|
||||
+ return;
|
||||
+
|
||||
+ memset (&screen_shot, 0, sizeof (screen_shot));
|
||||
+ screen_shot.xsize = screen_info.mv_csz;
|
||||
+ screen_shot.ysize = screen_info.mv_rsz;
|
||||
+ if ((screen_shot.buf =
|
||||
+ g_malloc (screen_info.mv_csz * screen_info.mv_rsz * 2)) == NULL)
|
||||
+ return;
|
||||
+
|
||||
+ console_flag = 1;
|
||||
}
|
||||
|
||||
static void
|
||||
-console_restore()
|
||||
+set_attr (unsigned attr)
|
||||
{
|
||||
- struct m6845_info mi;
|
||||
- unsigned short* start;
|
||||
+ /*
|
||||
+ * Convert color indices returned by SCRSHOT (red=4, green=2, blue=1)
|
||||
+ * to indices for ANSI sequences (red=1, green=2, blue=4).
|
||||
+ */
|
||||
+ static const int color_map[8] = { 0, 4, 2, 6, 1, 5, 3, 7 };
|
||||
+ char cmd[17];
|
||||
+ int bc, tc;
|
||||
+
|
||||
+ tc = attr & 0xF;
|
||||
+ bc = (attr >> 4) & 0xF;
|
||||
+
|
||||
+ strcpy (cmd, "\x1B[");
|
||||
+ strcat (cmd, (bc & 8) ? "5;" : "25;");
|
||||
+ strcat (cmd, (tc & 8) ? "1;" : "22;");
|
||||
+ strcat (cmd, "3%d;4%dm");
|
||||
+ printf (cmd, color_map[tc & 7], color_map[bc & 7]);
|
||||
+}
|
||||
+
|
||||
+#define cursor_to(x, y) do { \
|
||||
+ printf("\x1B[%d;%df", (y) + 1, (x) + 1); \
|
||||
+ fflush(stdout); \
|
||||
+} while (0)
|
||||
|
||||
- if (!console_flag)
|
||||
- {
|
||||
- return;
|
||||
- }
|
||||
+static void
|
||||
+console_restore (void)
|
||||
+{
|
||||
+ int i, last;
|
||||
|
||||
- write (FD_OUT, "\033[2J", 4);
|
||||
+ if (!console_flag)
|
||||
+ return;
|
||||
|
||||
- mi.size = sizeof(struct m6845_info);
|
||||
- ioctl(FD_OUT, CONS_6845INFO, &mi);
|
||||
+ cursor_to (0, 0);
|
||||
|
||||
- start = vidbuf + mi.screen_top;
|
||||
- memcpy(start, screen, width * height * 2);
|
||||
- write(FD_OUT,"\0338",2); /* restore cursor position */
|
||||
+ /* restoring all content up to cursor position */
|
||||
+ last = screen_info.mv_row * screen_info.mv_csz + screen_info.mv_col;
|
||||
+ for (i = 0; i < last; ++i) {
|
||||
+ set_attr ((screen_shot.buf[i] >> 8) & 0xFF);
|
||||
+ putc (screen_shot.buf[i] & 0xFF, stdout);
|
||||
+ }
|
||||
+
|
||||
+ /* restoring cursor color */
|
||||
+ set_attr ((screen_shot.buf[last] >> 8) & 0xFF);
|
||||
+
|
||||
+ fflush (stdout);
|
||||
}
|
||||
|
||||
static void
|
||||
-console_init()
|
||||
+console_shutdown (void)
|
||||
{
|
||||
- struct vid_info vi;
|
||||
- int adapter = ioctl(FD_OUT, CONS_CURRENT, 0);
|
||||
+ if (!console_flag)
|
||||
+ return;
|
||||
|
||||
- console_flag = 0;
|
||||
+ g_free (screen_shot.buf);
|
||||
|
||||
- if (adapter != -1)
|
||||
- {
|
||||
- vi.size = sizeof(struct vid_info);
|
||||
- ioctl(FD_OUT, CONS_GETINFO, &(vi));
|
||||
-
|
||||
- if (vt_active())
|
||||
- {
|
||||
- console_flag = 1;
|
||||
-
|
||||
- height = vi.mv_rsz;
|
||||
- width = vi.mv_csz;
|
||||
-
|
||||
- screen = (unsigned short*) g_malloc (height * width * 2);
|
||||
- if (screen == NULL)
|
||||
- {
|
||||
- console_shutdown();
|
||||
- return;
|
||||
- }
|
||||
- console_save();
|
||||
- mode = ioctl(FD_OUT, CONS_GET, 0);
|
||||
- ioctl(FD_OUT, MODESWITCH | mode, 0);
|
||||
- console_restore();
|
||||
- }
|
||||
- }
|
||||
+ console_flag = 0;
|
||||
}
|
||||
|
||||
-void
|
||||
-handle_console (unsigned char action)
|
||||
+static void
|
||||
+console_save (void)
|
||||
{
|
||||
- if (look_for_rxvt_extensions ())
|
||||
- return;
|
||||
- switch (action){
|
||||
- case CONSOLE_INIT:
|
||||
- console_init();
|
||||
- break;
|
||||
-
|
||||
- case CONSOLE_DONE:
|
||||
- console_shutdown();
|
||||
- break;
|
||||
-
|
||||
- case CONSOLE_SAVE:
|
||||
- console_save();
|
||||
- break;
|
||||
-
|
||||
- case CONSOLE_RESTORE:
|
||||
- console_restore();
|
||||
- break;
|
||||
- default:
|
||||
- /* Nothing */;
|
||||
+ int i;
|
||||
+ scrmap_t map;
|
||||
+ scrmap_t revmap;
|
||||
+
|
||||
+ if (!console_flag)
|
||||
+ return;
|
||||
+
|
||||
+ /* screen_info.size is already set in console_init() */
|
||||
+ if (ioctl (FD_OUT, CONS_GETINFO, &screen_info) == -1) {
|
||||
+ console_shutdown ();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ /* handle console resize */
|
||||
+ if (screen_info.mv_csz != screen_shot.xsize
|
||||
+ || screen_info.mv_rsz != screen_shot.ysize) {
|
||||
+ console_shutdown ();
|
||||
+ console_init ();
|
||||
+ }
|
||||
+
|
||||
+ if (ioctl (FD_OUT, CONS_SCRSHOT, &screen_shot) == -1) {
|
||||
+ console_shutdown ();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ if (ioctl (FD_OUT, GIO_SCRNMAP, &map) == -1) {
|
||||
+ console_shutdown ();
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < 256; i++) {
|
||||
+ char *p = memchr (map.scrmap, i, 256);
|
||||
+ revmap.scrmap[i] = p ? p - map.scrmap : i;
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < screen_shot.xsize * screen_shot.ysize; i++) {
|
||||
+ screen_shot.buf[i] =
|
||||
+ (screen_shot.buf[i] & 0xff00) | (unsigned char) revmap.
|
||||
+ scrmap[screen_shot.buf[i] & 0xff];
|
||||
}
|
||||
}
|
||||
|
||||
-void
|
||||
-show_console_contents (int starty, unsigned char begin_line, unsigned char end_line)
|
||||
+static void
|
||||
+show_console_contents_freebsd (int starty, unsigned char begin_line,
|
||||
+ unsigned char end_line)
|
||||
{
|
||||
- register int i, len = (end_line - begin_line) * width;
|
||||
+ int col, line;
|
||||
+ char c;
|
||||
|
||||
- if (look_for_rxvt_extensions ()) {
|
||||
- show_rxvt_contents (starty, begin_line, end_line);
|
||||
- return;
|
||||
- }
|
||||
- attrset(DEFAULT_COLOR);
|
||||
- for (i = 0; i < len; i++)
|
||||
- {
|
||||
- if ((i % width) == 0)
|
||||
- move (starty+(i/width), 0);
|
||||
- addch ((unsigned char)screen[width*starty + i]);
|
||||
+ if (!console_flag)
|
||||
+ return;
|
||||
+
|
||||
+ for (line = begin_line; line <= end_line; line++) {
|
||||
+ move (starty + line - begin_line, 0);
|
||||
+ for (col = 0; col < min (COLS, screen_info.mv_csz); col++) {
|
||||
+ c = screen_shot.buf[line * screen_info.mv_csz + col] & 0xFF;
|
||||
+ addch (c);
|
||||
}
|
||||
+ }
|
||||
}
|
||||
|
||||
-#endif /* SCO_FLAVOR */
|
||||
+static void
|
||||
+handle_console_freebsd (unsigned char action)
|
||||
+{
|
||||
+ switch (action) {
|
||||
+ case CONSOLE_INIT:
|
||||
+ console_init ();
|
||||
+ break;
|
||||
|
||||
+ case CONSOLE_DONE:
|
||||
+ console_shutdown ();
|
||||
+ break;
|
||||
|
||||
-#if !defined(linux) && !defined(__linux__) && !defined(SCO_FLAVOR)
|
||||
+ case CONSOLE_SAVE:
|
||||
+ console_save ();
|
||||
+ break;
|
||||
|
||||
-#include "tty.h"
|
||||
+ case CONSOLE_RESTORE:
|
||||
+ console_restore ();
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+#endif /* __FreeBSD__ */
|
||||
|
||||
-void show_console_contents (int starty, unsigned char begin_line, unsigned char end_line)
|
||||
+void
|
||||
+show_console_contents (int starty, unsigned char begin_line,
|
||||
+ unsigned char end_line)
|
||||
{
|
||||
standend ();
|
||||
|
||||
@@ -408,14 +566,28 @@
|
||||
show_rxvt_contents (starty, begin_line, end_line);
|
||||
return;
|
||||
}
|
||||
+#ifdef __linux__
|
||||
+ show_console_contents_linux (starty, begin_line, end_line);
|
||||
+#elif defined (__FreeBSD__)
|
||||
+ show_console_contents_freebsd (starty, begin_line, end_line);
|
||||
+#elif defined (SCO_FLAVOR)
|
||||
+ show_console_contents_sco (starty, begin_line, end_line);
|
||||
+#else
|
||||
console_flag = 0;
|
||||
+#endif
|
||||
}
|
||||
|
||||
-void handle_console (unsigned char action)
|
||||
+void
|
||||
+handle_console (unsigned char action)
|
||||
{
|
||||
- look_for_rxvt_extensions ();
|
||||
-}
|
||||
-
|
||||
-#endif /* !defined(linux) && !defined(__linux__) && !defined(SCO_FLAVOR) */
|
||||
-
|
||||
+ if (look_for_rxvt_extensions ())
|
||||
+ return;
|
||||
|
||||
+#ifdef __linux__
|
||||
+ handle_console_linux (action);
|
||||
+#elif defined (__FreeBSD__)
|
||||
+ handle_console_freebsd (action);
|
||||
+#elif defined (SCO_FLAVOR)
|
||||
+ handle_console_sco (action);
|
||||
+#endif
|
||||
+}
|
@ -1,53 +0,0 @@
|
||||
--- src/dir.c.orig Tue Jan 21 06:41:45 2003
|
||||
+++ src/dir.c Tue Jun 15 03:15:09 2004
|
||||
@@ -503,9 +503,11 @@
|
||||
}
|
||||
|
||||
if (next_free) {
|
||||
+ char *path = vfs_canon (".");
|
||||
/* Add ".." except the root directory */
|
||||
- if (strcmp (vfs_canon ("."), "/") != 0)
|
||||
+ if (strcmp (path, "/") != 0)
|
||||
add_dotdot_to_list (list, next_free++);
|
||||
+ g_free (path);
|
||||
do_sort (list, sort, next_free - 1, reverse, case_sensitive);
|
||||
} else {
|
||||
tree_store_end_check ();
|
||||
@@ -576,7 +578,7 @@
|
||||
int i, status, link_to_dir, stale_link;
|
||||
struct stat buf;
|
||||
int marked_cnt;
|
||||
- GHashTable *marked_files = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
+ GHashTable *marked_files;
|
||||
|
||||
tree_store_start_check_cwd ();
|
||||
dirp = mc_opendir (".");
|
||||
@@ -587,6 +589,7 @@
|
||||
return set_zero_dir (list);
|
||||
}
|
||||
|
||||
+ marked_files = g_hash_table_new (g_str_hash, g_str_equal);
|
||||
alloc_dir_copy (list->size);
|
||||
for (marked_cnt = i = 0; i < count; i++) {
|
||||
dir_copy.list[i].fnamelen = list->list[i].fnamelen;
|
||||
@@ -622,6 +625,7 @@
|
||||
clean_dir (&dir_copy, count);
|
||||
*/
|
||||
tree_store_end_check ();
|
||||
+ g_hash_table_destroy (marked_files);
|
||||
return next_free;
|
||||
}
|
||||
|
||||
@@ -655,9 +659,11 @@
|
||||
tree_store_end_check ();
|
||||
g_hash_table_destroy (marked_files);
|
||||
if (next_free) {
|
||||
+ char *path = vfs_canon (".");
|
||||
/* Add ".." except the root directory */
|
||||
- if (strcmp (vfs_canon ("."), "/") != 0)
|
||||
+ if (strcmp (path, "/") != 0)
|
||||
add_dotdot_to_list (list, next_free++);
|
||||
+ g_free (path);
|
||||
do_sort (list, sort, next_free - 1, rev, case_sensitive);
|
||||
} else
|
||||
next_free = set_zero_dir (list);
|
@ -1,50 +0,0 @@
|
||||
--- src/ext.c.orig Thu Nov 14 13:25:19 2002
|
||||
+++ src/ext.c Tue Jun 15 03:15:09 2004
|
||||
@@ -450,7 +450,7 @@
|
||||
|
||||
if (content_string && content_string[0]
|
||||
&& regexp_match (ptr, content_string + content_shift,
|
||||
- match_normal)) {
|
||||
+ match_regex)) {
|
||||
found = 1;
|
||||
}
|
||||
|
||||
@@ -477,7 +477,6 @@
|
||||
int found = 0;
|
||||
int error_flag = 0;
|
||||
int ret = 0;
|
||||
- int old_patterns;
|
||||
struct stat mystat;
|
||||
int view_at_line_number;
|
||||
char *include_target;
|
||||
@@ -559,8 +558,6 @@
|
||||
}
|
||||
mc_stat (filename, &mystat);
|
||||
|
||||
- old_patterns = easy_patterns;
|
||||
- easy_patterns = 0; /* Real regular expressions are needed :) */
|
||||
include_target = NULL;
|
||||
include_target_len = 0;
|
||||
for (p = data; *p; p++) {
|
||||
@@ -593,11 +590,11 @@
|
||||
/* Do not transform shell patterns, you can use shell/ for
|
||||
* that
|
||||
*/
|
||||
- if (regexp_match (p, filename, match_normal))
|
||||
+ if (regexp_match (p, filename, match_regex))
|
||||
found = 1;
|
||||
} else if (!strncmp (p, "directory/", 10)) {
|
||||
if (S_ISDIR (mystat.st_mode)
|
||||
- && regexp_match (p + 10, filename, match_normal))
|
||||
+ && regexp_match (p + 10, filename, match_regex))
|
||||
found = 1;
|
||||
} else if (!strncmp (p, "shell/", 6)) {
|
||||
p += 6;
|
||||
@@ -683,7 +680,6 @@
|
||||
break;
|
||||
}
|
||||
}
|
||||
- easy_patterns = old_patterns;
|
||||
if (error_flag)
|
||||
return -1;
|
||||
return ret;
|
@ -1,31 +0,0 @@
|
||||
--- src/file.c.orig Fri Dec 27 01:04:10 2002
|
||||
+++ src/file.c Tue Jun 15 03:15:09 2004
|
||||
@@ -366,7 +366,7 @@
|
||||
dst_is_symlink = 0;
|
||||
|
||||
retry_src_readlink:
|
||||
- len = mc_readlink (src_path, link_target, MC_MAXPATHLEN);
|
||||
+ len = mc_readlink (src_path, link_target, MC_MAXPATHLEN - 1);
|
||||
if (len < 0) {
|
||||
return_status =
|
||||
file_error (_(" Cannot read source link \"%s\" \n %s "),
|
||||
@@ -715,6 +715,7 @@
|
||||
gettimeofday (&tv_current, NULL);
|
||||
|
||||
if (n_read > 0) {
|
||||
+ char *t = buf;
|
||||
n_read_total += n_read;
|
||||
|
||||
/* Windows NT ftp servers report that files have no
|
||||
@@ -729,9 +730,10 @@
|
||||
|
||||
/* dst_write */
|
||||
while ((n_written =
|
||||
- mc_write (dest_desc, buf, n_read)) < n_read) {
|
||||
+ mc_write (dest_desc, t, n_read)) < n_read) {
|
||||
if (n_written > 0) {
|
||||
n_read -= n_written;
|
||||
+ t += n_written;
|
||||
continue;
|
||||
}
|
||||
return_status =
|
@ -1,97 +0,0 @@
|
||||
--- src/find.c.orig Tue Dec 24 17:28:26 2002
|
||||
+++ src/find.c Tue Jun 15 03:15:09 2004
|
||||
@@ -312,7 +312,7 @@
|
||||
dir_stack *new;
|
||||
|
||||
new = g_new (dir_stack, 1);
|
||||
- new->name = g_strdup (dir);
|
||||
+ new->name = concat_dir_and_file (dir, "");
|
||||
new->prev = dir_stack_base;
|
||||
dir_stack_base = new;
|
||||
}
|
||||
@@ -338,17 +338,9 @@
|
||||
{
|
||||
char *tmp_name;
|
||||
static char *dirname;
|
||||
- int i;
|
||||
|
||||
- if (dir [0] == PATH_SEP && dir [1] == PATH_SEP)
|
||||
+ while (dir [0] == PATH_SEP && dir [1] == PATH_SEP)
|
||||
dir++;
|
||||
- i = strlen (dir);
|
||||
- if (i){
|
||||
- if (dir [i - 1] != PATH_SEP){
|
||||
- dir [i] = PATH_SEP;
|
||||
- dir [i + 1] = 0;
|
||||
- }
|
||||
- }
|
||||
|
||||
if (old_dir){
|
||||
if (strcmp (old_dir, dir)){
|
||||
@@ -401,7 +393,7 @@
|
||||
char ch = 0;
|
||||
int i = 0;
|
||||
|
||||
- do {
|
||||
+ for (;;) {
|
||||
if (*pos >= *n_read){
|
||||
*pos = 0;
|
||||
if ((*n_read = mc_read (file_fd, buf, buf_size)) <= 0)
|
||||
@@ -420,10 +412,12 @@
|
||||
if (i >= buffer_size - 1){
|
||||
buffer = g_realloc (buffer, buffer_size += 80);
|
||||
}
|
||||
+ /* Strip newline to fix $ matching */
|
||||
+ if (ch == '\n')
|
||||
+ break;
|
||||
|
||||
buffer [i++] = ch;
|
||||
-
|
||||
- } while (ch != '\n');
|
||||
+ }
|
||||
|
||||
*has_newline = ch ? 1 : 0;
|
||||
|
||||
@@ -502,7 +496,7 @@
|
||||
{
|
||||
static struct dirent *dp = 0;
|
||||
static DIR *dirp = 0;
|
||||
- static char directory [MC_MAXPATHLEN+2];
|
||||
+ static char *directory;
|
||||
struct stat tmp_stat;
|
||||
static int pos;
|
||||
static int subdirs_left = 0;
|
||||
@@ -513,6 +507,10 @@
|
||||
mc_closedir (dirp);
|
||||
dirp = 0;
|
||||
}
|
||||
+ if (directory) {
|
||||
+ g_free (directory);
|
||||
+ directory = NULL;
|
||||
+ }
|
||||
dp = 0;
|
||||
return 1;
|
||||
}
|
||||
@@ -550,8 +548,9 @@
|
||||
break;
|
||||
}
|
||||
|
||||
- strcpy (directory, tmp);
|
||||
- g_free (tmp);
|
||||
+ if (directory)
|
||||
+ g_free (directory);
|
||||
+ directory = tmp;
|
||||
|
||||
if (verbose){
|
||||
char buffer [BUF_SMALL];
|
||||
@@ -582,8 +581,8 @@
|
||||
tmp_name = concat_dir_and_file (directory, dp->d_name);
|
||||
|
||||
if (subdirs_left){
|
||||
- mc_lstat (tmp_name, &tmp_stat);
|
||||
- if (S_ISDIR (tmp_stat.st_mode)){
|
||||
+ if (!mc_lstat (tmp_name, &tmp_stat)
|
||||
+ && S_ISDIR (tmp_stat.st_mode)){
|
||||
push_directory (tmp_name);
|
||||
subdirs_left--;
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
--- src/info.c.orig Wed Jan 29 04:58:22 2003
|
||||
+++ src/info.c Tue Jun 15 03:15:09 2004
|
||||
@@ -123,7 +123,7 @@
|
||||
size_trunc_len (buffer1, 5, myfs_stats.avail, 1);
|
||||
size_trunc_len (buffer2, 5, myfs_stats.total, 1);
|
||||
printw (_("Free space: %s (%d%%) of %s"), buffer1, myfs_stats.total ?
|
||||
- 100 * myfs_stats.avail / myfs_stats.total : 0, buffer2);
|
||||
+ (int) (100.0 * myfs_stats.avail / myfs_stats.total) : 0, buffer2);
|
||||
} else
|
||||
addstr (_("No space information"));
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
printw (_("Size: %s"), buffer);
|
||||
#ifdef HAVE_ST_BLOCKS
|
||||
printw ((buf.st_blocks==1) ?
|
||||
- _(" (%d block)") : _(" (%d blocks)"), buf.st_blocks);
|
||||
+ _(" (%ld block)") : _(" (%ld blocks)"), (long) buf.st_blocks);
|
||||
#endif
|
||||
}
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- src/main.c.orig Wed Feb 5 21:54:34 2003
|
||||
+++ src/main.c Tue Jun 15 03:15:09 2004
|
||||
@@ -1300,7 +1300,7 @@
|
||||
concat_dir_and_file (panel->cwd, selection (panel)->fname);
|
||||
int i;
|
||||
|
||||
- i = mc_readlink (p, buffer, MC_MAXPATHLEN);
|
||||
+ i = mc_readlink (p, buffer, MC_MAXPATHLEN - 1);
|
||||
g_free (p);
|
||||
if (i > 0) {
|
||||
buffer[i] = 0;
|
@ -1,12 +0,0 @@
|
||||
--- src/man2hlp.c.orig Tue Jan 21 05:23:42 2003
|
||||
+++ src/man2hlp.c Tue Jun 15 03:15:09 2004
|
||||
@@ -611,8 +611,7 @@
|
||||
/* Bold text or italics text */
|
||||
if (buffer[0] == '.' && (buffer[1] == 'I' || buffer[1] == 'B'))
|
||||
for (buffer += 2; *buffer == ' ' || *buffer == '\t'; buffer++);
|
||||
- strncpy (old, buffer, sizeof (old) - 1);
|
||||
- old[sizeof (old) - 1] = 0;
|
||||
+ g_strlcpy (old, buffer, sizeof (old));
|
||||
link_flag = 3;
|
||||
break;
|
||||
case 3:
|
@ -1,12 +0,0 @@
|
||||
--- src/profile.c.orig Mon Jan 20 20:33:02 2003
|
||||
+++ src/profile.c Tue Jun 15 03:15:09 2004
|
||||
@@ -325,8 +325,7 @@
|
||||
|
||||
s = GetSetProfileChar (set, AppName, KeyName, Default, FileName);
|
||||
if (!set){
|
||||
- ReturnedString [Size-1] = 0;
|
||||
- strncpy (ReturnedString, s, Size-1);
|
||||
+ g_strlcpy (ReturnedString, s, Size);
|
||||
}
|
||||
return 1;
|
||||
}
|
@ -1,52 +0,0 @@
|
||||
--- src/screen.c.orig Wed Jan 29 04:58:22 2003
|
||||
+++ src/screen.c Tue Jun 15 03:22:46 2004
|
||||
@@ -672,7 +672,7 @@
|
||||
int len;
|
||||
|
||||
link = concat_dir_and_file (panel->cwd, panel->dir.list [panel->selected].fname);
|
||||
- len = mc_readlink (link, link_target, MC_MAXPATHLEN);
|
||||
+ len = mc_readlink (link, link_target, MC_MAXPATHLEN - 1);
|
||||
g_free (link);
|
||||
if (len > 0){
|
||||
link_target[len] = 0;
|
||||
@@ -1045,7 +1045,7 @@
|
||||
int spaces, extra;
|
||||
int side, width;
|
||||
|
||||
- char *txt, buffer[30]; /*Hope that this is enough ;-) */
|
||||
+ char *txt;
|
||||
if (!panel->split)
|
||||
adjust_top_file (panel);
|
||||
|
||||
@@ -1071,18 +1071,14 @@
|
||||
txt = format->title;
|
||||
|
||||
header_len = strlen (txt);
|
||||
- if (header_len > format->field_len){
|
||||
- strcpy (buffer, txt);
|
||||
- txt = buffer;
|
||||
- txt [format->field_len] = 0;
|
||||
- header_len = strlen (txt);
|
||||
- }
|
||||
+ if (header_len > format->field_len)
|
||||
+ header_len = format->field_len;
|
||||
|
||||
attrset (MARKED_COLOR);
|
||||
spaces = (format->field_len - header_len) / 2;
|
||||
extra = (format->field_len - header_len) % 2;
|
||||
- printw ("%*s%-s%*s", spaces, "",
|
||||
- txt, spaces+extra, "");
|
||||
+ printw ("%*s%.*s%*s", spaces, "",
|
||||
+ header_len, txt, spaces+extra, "");
|
||||
width -= 2 * spaces + extra + header_len;
|
||||
} else {
|
||||
attrset (NORMAL_COLOR);
|
||||
@@ -2021,7 +2017,7 @@
|
||||
int i;
|
||||
struct stat mybuf;
|
||||
|
||||
- i = readlink (selection (panel)->fname, buffer, MC_MAXPATHLEN);
|
||||
+ i = readlink (selection (panel)->fname, buffer, MC_MAXPATHLEN - 1);
|
||||
if (i < 0)
|
||||
return;
|
||||
if (mc_stat (selection (panel)->fname, &mybuf) < 0)
|
@ -1,21 +0,0 @@
|
||||
--- src/subshell.c.orig Sat Jan 25 03:37:28 2003
|
||||
+++ src/subshell.c Tue Jun 15 03:15:09 2004
|
||||
@@ -710,7 +710,9 @@
|
||||
}
|
||||
|
||||
g_free (subshell_prompt);
|
||||
+ g_free (pty_buffer);
|
||||
subshell_prompt = NULL;
|
||||
+ pty_buffer = NULL;
|
||||
|
||||
return quit;
|
||||
}
|
||||
@@ -1166,6 +1168,8 @@
|
||||
#elif IS_AIX
|
||||
strcpy (pty_name, "/dev/ptc");
|
||||
pty_master = open (pty_name, O_RDWR);
|
||||
+#elif defined(__FreeBSD__)
|
||||
+ pty_master = posix_openpt(O_RDWR);
|
||||
#else
|
||||
strcpy (pty_name, "/dev/ptmx");
|
||||
pty_master = open (pty_name, O_RDWR);
|
@ -1,183 +0,0 @@
|
||||
--- src/user.c.orig Fri Nov 29 09:03:53 2002
|
||||
+++ src/user.c Tue Jun 15 03:15:09 2004
|
||||
@@ -138,19 +138,14 @@
|
||||
}
|
||||
|
||||
/* Copy the variable name */
|
||||
- var_name = g_malloc (dots - p);
|
||||
- strncpy (var_name, p+4, dots-2 - (p+3));
|
||||
- var_name [dots-2 - (p+3)] = 0;
|
||||
-
|
||||
+ var_name = g_strndup (p + 4, dots - p - 5);
|
||||
value = getenv (var_name);
|
||||
g_free (var_name);
|
||||
if (value){
|
||||
*v = g_strdup (value);
|
||||
return q-p;
|
||||
}
|
||||
- var_name = g_malloc (q - dots + 1);
|
||||
- strncpy (var_name, dots, q - dots + 1);
|
||||
- var_name [q-dots] = 0;
|
||||
+ var_name = g_strndup (dots, q - dots);
|
||||
*v = var_name;
|
||||
return q-p;
|
||||
}
|
||||
@@ -300,13 +295,15 @@
|
||||
|
||||
/* Copies a whitespace separated argument from p to arg. Returns the
|
||||
point after argument. */
|
||||
-static char *extract_arg (char *p, char *arg)
|
||||
+static char *extract_arg (char *p, char *arg, size_t size)
|
||||
{
|
||||
while (*p && (*p == ' ' || *p == '\t' || *p == '\n'))
|
||||
p++;
|
||||
/* support quote space .mnu */
|
||||
- while (*p && (*p != ' ' || *(p-1) == '\\') && *p != '\t' && *p != '\n')
|
||||
+ while (size > 1 && *p && (*p != ' ' || *(p-1) == '\\') && *p != '\t' && *p != '\n') {
|
||||
*arg++ = *p++;
|
||||
+ size--;
|
||||
+ }
|
||||
*arg = 0;
|
||||
if (!*p || *p == '\n')
|
||||
p --;
|
||||
@@ -389,29 +386,29 @@
|
||||
p--;
|
||||
break;
|
||||
case 'f': /* file name pattern */
|
||||
- p = extract_arg (p, arg);
|
||||
+ p = extract_arg (p, arg, sizeof (arg));
|
||||
*condition = panel && regexp_match (arg, panel->dir.list [panel->selected].fname, match_file);
|
||||
break;
|
||||
case 'y': /* syntax pattern */
|
||||
if (edit_widget && edit_widget->syntax_type) {
|
||||
- p = extract_arg (p, arg);
|
||||
+ p = extract_arg (p, arg, sizeof (arg));
|
||||
*condition = panel &&
|
||||
regexp_match (arg, edit_widget->syntax_type, match_normal);
|
||||
}
|
||||
break;
|
||||
case 'd':
|
||||
- p = extract_arg (p, arg);
|
||||
+ p = extract_arg (p, arg, sizeof (arg));
|
||||
*condition = panel && regexp_match (arg, panel->cwd, match_file);
|
||||
break;
|
||||
case 't':
|
||||
- p = extract_arg (p, arg);
|
||||
+ p = extract_arg (p, arg, sizeof (arg));
|
||||
*condition = panel && test_type (panel, arg);
|
||||
break;
|
||||
case 'x': /* executable */
|
||||
{
|
||||
struct stat status;
|
||||
|
||||
- p = extract_arg (p, arg);
|
||||
+ p = extract_arg (p, arg, sizeof (arg));
|
||||
if (stat (arg, &status) == 0)
|
||||
*condition = is_exe (status.st_mode);
|
||||
else
|
||||
@@ -431,50 +428,43 @@
|
||||
static void
|
||||
debug_out (char *start, char *end, int cond)
|
||||
{
|
||||
- static char msg [256];
|
||||
+ static char *msg;
|
||||
int len;
|
||||
|
||||
if (start == NULL && end == NULL){
|
||||
- if (cond == 0){
|
||||
- /* Init */
|
||||
- msg [0] = 0;
|
||||
- } else {
|
||||
- /* Show output */
|
||||
- if (!debug_flag)
|
||||
- return;
|
||||
+ /* Show output */
|
||||
+ if (debug_flag && msg) {
|
||||
len = strlen (msg);
|
||||
if (len)
|
||||
msg [len - 1] = 0;
|
||||
message (0, _(" Debug "), "%s", msg);
|
||||
- debug_flag = 0;
|
||||
}
|
||||
+ debug_flag = 0;
|
||||
+ g_free (msg);
|
||||
+ msg = NULL;
|
||||
} else {
|
||||
+ char *type, *p;
|
||||
+
|
||||
/* Save debug info for later output */
|
||||
if (!debug_flag)
|
||||
return;
|
||||
/* Save the result of the condition */
|
||||
if (debug_error){
|
||||
- strcat (msg, _(" ERROR: "));
|
||||
+ type = _(" ERROR: ");
|
||||
debug_error = 0;
|
||||
}
|
||||
else if (cond)
|
||||
- strcat (msg, _(" True: "));
|
||||
+ type = _(" True: ");
|
||||
else
|
||||
- strcat (msg, _(" False: "));
|
||||
- /* Copy condition statement */
|
||||
- len = strlen (msg);
|
||||
- if (end == NULL){
|
||||
- /* Copy one character */
|
||||
- msg [len] = *start;
|
||||
- msg [len + 1] = 0;
|
||||
- } else {
|
||||
- /* Copy many characters */
|
||||
- while (start < end){
|
||||
- msg [len++] = *start++;
|
||||
- }
|
||||
- msg [len] = 0;
|
||||
- }
|
||||
- strcat (msg, " \n");
|
||||
+ type = _(" False: ");
|
||||
+ /* This is for debugging, don't need to be super efficient. */
|
||||
+ if (end == NULL)
|
||||
+ p = g_strdup_printf ("%s%s%c \n", msg ? msg : "", type, *start);
|
||||
+ else
|
||||
+ p = g_strdup_printf ("%s%s%.*s \n", msg ? msg : "", type,
|
||||
+ (int) (end - start), start);
|
||||
+ g_free (msg);
|
||||
+ msg = p;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -486,8 +476,6 @@
|
||||
char operator;
|
||||
char *debug_start, *debug_end;
|
||||
|
||||
- /* Init debugger */
|
||||
- debug_out (NULL, NULL, 0);
|
||||
/* Repeat till end of line */
|
||||
while (*p && *p != '\n') {
|
||||
/* support quote space .mnu */
|
||||
@@ -578,6 +566,8 @@
|
||||
break;
|
||||
while (*commands == ' ' || *commands == '\t')
|
||||
commands++;
|
||||
+ if (*commands == '0')
|
||||
+ break;
|
||||
}
|
||||
col++;
|
||||
if (*commands == '\n')
|
||||
@@ -734,7 +724,7 @@
|
||||
} else if (*p == '+'){
|
||||
if (*(p+1) == '='){
|
||||
/* Combined adding and default */
|
||||
- p = test_line (edit_widget, p, &accept_entry);
|
||||
+ p = test_line (edit_widget, p + 1, &accept_entry);
|
||||
if (selected == 0 && accept_entry)
|
||||
selected = menu_lines;
|
||||
} else {
|
||||
@@ -744,7 +734,7 @@
|
||||
} else if (*p == '='){
|
||||
if (*(p+1) == '+'){
|
||||
/* Combined adding and default */
|
||||
- p = test_line (edit_widget, p, &accept_entry);
|
||||
+ p = test_line (edit_widget, p + 1, &accept_entry);
|
||||
if (selected == 0 && accept_entry)
|
||||
selected = menu_lines;
|
||||
} else {
|
@ -1,29 +0,0 @@
|
||||
--- src/util.c.orig Wed Jan 29 04:58:23 2003
|
||||
+++ src/util.c Tue Jun 15 03:15:09 2004
|
||||
@@ -498,7 +498,7 @@
|
||||
char *new_pattern;
|
||||
int was_wildcard = 0;
|
||||
|
||||
- if (easy_patterns){
|
||||
+ if ((match_type != match_regex) && easy_patterns){
|
||||
new_pattern = g_malloc (MC_MAXPATHLEN);
|
||||
d = new_pattern;
|
||||
if (match_type == match_file)
|
||||
@@ -848,7 +848,7 @@
|
||||
return NULL;
|
||||
}
|
||||
|
||||
- strncpy (buffer, p, len);
|
||||
+ memcpy (buffer, p, len);
|
||||
g_free (p);
|
||||
|
||||
return buffer;
|
||||
@@ -1063,7 +1063,7 @@
|
||||
if (!S_ISLNK (mybuf.st_mode))
|
||||
strcpy (r, p + 1);
|
||||
else {
|
||||
- len = mc_readlink (path, buf2, MC_MAXPATHLEN);
|
||||
+ len = mc_readlink (path, buf2, MC_MAXPATHLEN - 1);
|
||||
if (len < 0) {
|
||||
g_free (buf);
|
||||
g_free (buf2);
|
@ -1,11 +0,0 @@
|
||||
--- src/util.h.orig Tue Jan 28 03:07:29 2003
|
||||
+++ src/util.h Tue Jun 15 03:15:09 2004
|
||||
@@ -62,7 +62,7 @@
|
||||
#define icase_search(T,D) _icase_search((T), (D), NULL)
|
||||
|
||||
/* Matching */
|
||||
-enum { match_file, match_normal };
|
||||
+enum { match_file, match_normal, match_regex };
|
||||
extern int easy_patterns;
|
||||
char *convert_pattern (char *pattern, int match_type, int do_group);
|
||||
int regexp_match (char *pattern, char *string, int match_type);
|
@ -1,40 +0,0 @@
|
||||
--- src/utilunix.c.orig Thu Dec 26 20:47:46 2002
|
||||
+++ src/utilunix.c Tue Jun 15 03:15:09 2004
|
||||
@@ -280,9 +280,7 @@
|
||||
if (!p){
|
||||
passwd = getpwnam (directory);
|
||||
} else {
|
||||
- name = g_malloc (p - directory + 1);
|
||||
- strncpy (name, directory, p - directory);
|
||||
- name [p - directory] = 0;
|
||||
+ name = g_strndup (directory, p - directory);
|
||||
passwd = getpwnam (name);
|
||||
g_free (name);
|
||||
}
|
||||
@@ -298,7 +296,7 @@
|
||||
|
||||
/*
|
||||
* Return the directory where mc should keep its temporary files.
|
||||
- * This directory is (in Bourne shell terms) "${TMPDIR=/tmp}-$USER"
|
||||
+ * This directory is (in Bourne shell terms) "${TMPDIR=/tmp}/mc-$USER"
|
||||
* When called the first time, the directory is created if needed.
|
||||
* The first call should be done early, since we are using fprintf()
|
||||
* and not message() to report possible problems.
|
||||
@@ -372,6 +370,7 @@
|
||||
if (fallback_ok) {
|
||||
fprintf (stderr, _("Temporary files will be created in %s\n"),
|
||||
sys_tmp);
|
||||
+ error = NULL;
|
||||
} else {
|
||||
fprintf (stderr, _("Temporary files will not be created\n"));
|
||||
tmpdir = "/dev/null/";
|
||||
@@ -380,6 +379,9 @@
|
||||
fprintf (stderr, "%s\n", _("Press any key to continue..."));
|
||||
getc (stdin);
|
||||
}
|
||||
+
|
||||
+ if (!error)
|
||||
+ setenv ("MC_TMPDIR", tmpdir, 1);
|
||||
|
||||
return tmpdir;
|
||||
}
|
@ -1,116 +0,0 @@
|
||||
--- src/view.c.orig Fri Dec 27 12:48:33 2002
|
||||
+++ src/view.c Tue Jun 15 03:15:09 2004
|
||||
@@ -74,6 +74,10 @@
|
||||
# define IFAIX(x)
|
||||
#endif
|
||||
|
||||
+#if GLIB_MAJOR_VERSION < 2
|
||||
+# define g_try_malloc g_malloc
|
||||
+#endif
|
||||
+
|
||||
#define vwidth (view->widget.cols - (view->have_frame ? 2 : 0))
|
||||
#define vheight (view->widget.lines - (view->have_frame ? 2 : 0))
|
||||
|
||||
@@ -308,7 +312,7 @@
|
||||
view->block_ptr = g_realloc (view->block_ptr,
|
||||
sizeof (block_ptr_t) * page);
|
||||
for (i = view->blocks; i < page; i++) {
|
||||
- char *p = g_malloc (VIEW_PAGE_SIZE);
|
||||
+ char *p = g_try_malloc (VIEW_PAGE_SIZE);
|
||||
view->block_ptr[i].data = p;
|
||||
if (!p)
|
||||
return '\n';
|
||||
@@ -336,7 +340,7 @@
|
||||
}
|
||||
view->blocks = page;
|
||||
}
|
||||
- if (byte_index > view->bytes_read) {
|
||||
+ if (byte_index >= view->bytes_read) {
|
||||
return -1;
|
||||
} else
|
||||
return view->block_ptr[page - 1].data[offset];
|
||||
@@ -573,9 +577,11 @@
|
||||
return init_growing_view (view, 0, view->filename);
|
||||
}
|
||||
#ifdef HAVE_MMAP
|
||||
- view->data =
|
||||
- mc_mmap (0, view->s.st_size, PROT_READ, MAP_FILE | MAP_SHARED,
|
||||
- view->file, 0);
|
||||
+ if ((size_t) view->s.st_size == view->s.st_size)
|
||||
+ 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) {
|
||||
/* mmap worked */
|
||||
view->first = 0;
|
||||
@@ -589,7 +595,11 @@
|
||||
* file into memory (alex@bcs.zaporizhzhe.ua). Also, mmap can fail
|
||||
* for any reason, so we use this as fallback (pavel@ucw.cz) */
|
||||
|
||||
- view->data = (unsigned char *) g_malloc (view->s.st_size);
|
||||
+ if ((gulong) view->s.st_size == view->s.st_size)
|
||||
+ view->data = (unsigned char *) g_try_malloc (view->s.st_size);
|
||||
+ else
|
||||
+ view->data = NULL;
|
||||
+
|
||||
if (view->data == NULL
|
||||
|| mc_lseek (view->file, 0, SEEK_SET) != 0
|
||||
|| mc_read (view->file, view->data,
|
||||
@@ -821,7 +831,7 @@
|
||||
if (w > 46) {
|
||||
widget_move (view, view->have_frame, 24 + view->have_frame);
|
||||
if (view->hex_mode)
|
||||
- printw (_("Offset 0x%08x"), view->edit_cursor);
|
||||
+ printw (_("Offset 0x%08lx"), view->edit_cursor);
|
||||
else
|
||||
printw (_("Col %d"), -view->start_col);
|
||||
}
|
||||
@@ -1513,33 +1523,41 @@
|
||||
long i = 0;
|
||||
int prev = 0;
|
||||
|
||||
+ if (!pos && direction == -1)
|
||||
+ return 0;
|
||||
+
|
||||
/* skip over all the possible zeros in the file */
|
||||
while ((ch = get_byte (view, pos)) == 0) {
|
||||
+ if (!pos && direction == -1)
|
||||
+ return 0;
|
||||
pos += direction;
|
||||
i++;
|
||||
}
|
||||
*skipped = i;
|
||||
|
||||
- if (pos) {
|
||||
- prev = get_byte (view, pos - 1);
|
||||
+ if (!i && (pos || direction == -1)) {
|
||||
+ prev = get_byte (view, pos - direction);
|
||||
if ((prev == -1) || (prev == '\n'))
|
||||
prev = 0;
|
||||
}
|
||||
|
||||
- for (i = 0; ch != -1; ch = get_byte (view, pos)) {
|
||||
+ for (i = 1; ch != -1; ch = get_byte (view, pos)) {
|
||||
|
||||
- if (i == usable_size) {
|
||||
+ if (i >= usable_size) {
|
||||
buffer = grow_string_buffer (buffer, &buffer_size);
|
||||
usable_size = buffer_size - 2;
|
||||
}
|
||||
|
||||
+ buffer[i++] = ch;
|
||||
+ if (!pos && direction == -1)
|
||||
+ break;
|
||||
+
|
||||
pos += direction;
|
||||
- i++;
|
||||
|
||||
if (ch == '\n' || !ch) {
|
||||
+ i--;
|
||||
break;
|
||||
}
|
||||
- buffer[i] = ch;
|
||||
}
|
||||
if (buffer) {
|
||||
buffer[0] = prev;
|
@ -1,24 +0,0 @@
|
||||
--- src/widget.c.orig Thu Dec 26 05:15:48 2002
|
||||
+++ src/widget.c Tue Jun 15 03:15:09 2004
|
||||
@@ -607,7 +607,7 @@
|
||||
if (!g->shown)
|
||||
printw ("%*s", gauge_len, "");
|
||||
else {
|
||||
- long percentage, columns;
|
||||
+ int percentage, columns;
|
||||
long total = g->max, done = g->current;
|
||||
|
||||
if (total <= 0 || done < 0) {
|
||||
@@ -1255,10 +1255,11 @@
|
||||
{
|
||||
int first = min (x_first, x_last);
|
||||
int last = max (x_first, x_last);
|
||||
+ size_t len = strlen (&in->buffer [last]) + 1;
|
||||
|
||||
in->point = first;
|
||||
in->mark = first;
|
||||
- strcpy (&in->buffer [first], &in->buffer [last]);
|
||||
+ memmove (&in->buffer [first], &in->buffer [last], len);
|
||||
in->need_push = 1;
|
||||
}
|
||||
|
@ -1,12 +0,0 @@
|
||||
--- src/wtools.c.orig Thu Nov 14 13:25:19 2002
|
||||
+++ src/wtools.c Tue Jun 15 03:15:09 2004
|
||||
@@ -412,8 +412,7 @@
|
||||
/* we need a unique name for tkname because widget.c:history_tool()
|
||||
needs a unique name for each dialog - using the header is ideal */
|
||||
|
||||
- strncpy (tk_name + 3, header, 60);
|
||||
- tk_name[63] = '\0';
|
||||
+ g_strlcpy (tk_name + 3, header, 61);
|
||||
quick_widgets[2].tkname = tk_name;
|
||||
|
||||
len = max (strlen (header), msglen (text, &lines)) + 4;
|
@ -1,141 +0,0 @@
|
||||
--- vfs/cpio.c.orig Sun Dec 8 07:12:28 2002
|
||||
+++ vfs/cpio.c Tue Jun 15 03:15:09 2004
|
||||
@@ -103,9 +103,9 @@
|
||||
|
||||
static struct defer_inode * defer_find(struct defer_inode *l, struct defer_inode *i)
|
||||
{
|
||||
- if(!l) return NULL;
|
||||
- return l->inumber == i->inumber && l->device == i->device ? l :
|
||||
- defer_find(l->next, i);
|
||||
+ while (l && (l->inumber != i->inumber || l->device != i->device))
|
||||
+ l = l->next;
|
||||
+ return l;
|
||||
}
|
||||
|
||||
static int cpio_skip_padding(vfs_s_super *super)
|
||||
@@ -127,8 +127,14 @@
|
||||
|
||||
static void cpio_free_archive(vfs *me, vfs_s_super *super)
|
||||
{
|
||||
+ struct defer_inode *l, *lnext;
|
||||
if(super->u.cpio.fd != -1)
|
||||
- mc_close(super->u.cpio.fd);
|
||||
+ mc_close(super->u.cpio.fd), super->u.cpio.fd = -1;
|
||||
+ for (l = super->u.cpio.defered; l; l = lnext) {
|
||||
+ lnext = l->next;
|
||||
+ g_free (l);
|
||||
+ }
|
||||
+ super->u.cpio.defered = NULL;
|
||||
}
|
||||
|
||||
static int cpio_open_cpio_file(vfs *me, vfs_s_super *super, char *name)
|
||||
@@ -246,26 +252,34 @@
|
||||
#define HEAD_LENGTH (26)
|
||||
static int cpio_read_bin_head(vfs *me, vfs_s_super *super)
|
||||
{
|
||||
- struct old_cpio_header buf;
|
||||
+ union {
|
||||
+ struct old_cpio_header buf;
|
||||
+ short shorts[HEAD_LENGTH >> 1];
|
||||
+ } u;
|
||||
int len;
|
||||
char *name;
|
||||
struct stat stat;
|
||||
|
||||
- if((len = mc_read(super->u.cpio.fd, (char *)&buf, HEAD_LENGTH)) < HEAD_LENGTH)
|
||||
+ if((len = mc_read(super->u.cpio.fd, (char *)&u.buf, HEAD_LENGTH)) < HEAD_LENGTH)
|
||||
return STATUS_EOF;
|
||||
CPIO_POS(super) += len;
|
||||
if(super->u.cpio.type == CPIO_BINRE) {
|
||||
int i;
|
||||
for(i = 0; i < (HEAD_LENGTH >> 1); i++)
|
||||
- ((short *)&buf)[i] = GUINT16_SWAP_LE_BE(((short *)&buf)[i]);
|
||||
+ u.shorts[i] = GUINT16_SWAP_LE_BE(u.shorts[i]);
|
||||
}
|
||||
- g_assert(buf.c_magic == 070707);
|
||||
+ g_assert(u.buf.c_magic == 070707);
|
||||
|
||||
- name = g_malloc(buf.c_namesize);
|
||||
- if((len = mc_read(super->u.cpio.fd, name, buf.c_namesize)) < buf.c_namesize){
|
||||
+ if (u.buf.c_namesize == 0 || u.buf.c_namesize > MC_MAXPATHLEN) {
|
||||
+ message (1, MSG_ERROR, _("Corrupted cpio header encountered in\n%s"), super->name);
|
||||
+ return STATUS_FAIL;
|
||||
+ }
|
||||
+ name = g_malloc(u.buf.c_namesize);
|
||||
+ if((len = mc_read(super->u.cpio.fd, name, u.buf.c_namesize)) < u.buf.c_namesize){
|
||||
g_free(name);
|
||||
return STATUS_EOF;
|
||||
}
|
||||
+ name[u.buf.c_namesize - 1] = '\0';
|
||||
CPIO_POS(super) += len;
|
||||
cpio_skip_padding(super);
|
||||
|
||||
@@ -274,15 +288,15 @@
|
||||
return STATUS_TRAIL;
|
||||
}
|
||||
|
||||
- stat.st_dev = buf.c_dev;
|
||||
- stat.st_ino = buf.c_ino;
|
||||
- stat.st_mode = buf.c_mode;
|
||||
- stat.st_nlink = buf.c_nlink;
|
||||
- stat.st_uid = buf.c_uid;
|
||||
- stat.st_gid = buf.c_gid;
|
||||
- stat.st_rdev = buf.c_rdev;
|
||||
- stat.st_size = (buf.c_filesizes[0] << 16) | buf.c_filesizes[1];
|
||||
- stat.st_atime = stat.st_mtime = stat.st_ctime = (buf.c_mtimes[0] << 16) | buf.c_mtimes[1];
|
||||
+ stat.st_dev = u.buf.c_dev;
|
||||
+ stat.st_ino = u.buf.c_ino;
|
||||
+ stat.st_mode = u.buf.c_mode;
|
||||
+ stat.st_nlink = u.buf.c_nlink;
|
||||
+ stat.st_uid = u.buf.c_uid;
|
||||
+ stat.st_gid = u.buf.c_gid;
|
||||
+ stat.st_rdev = u.buf.c_rdev;
|
||||
+ stat.st_size = (u.buf.c_filesizes[0] << 16) | u.buf.c_filesizes[1];
|
||||
+ stat.st_atime = stat.st_mtime = stat.st_ctime = (u.buf.c_mtimes[0] << 16) | u.buf.c_mtimes[1];
|
||||
|
||||
return cpio_create_entry(me, super, &stat, name);
|
||||
}
|
||||
@@ -310,11 +324,16 @@
|
||||
return STATUS_FAIL;
|
||||
}
|
||||
|
||||
+ if (hd.c_namesize == 0 || hd.c_namesize > MC_MAXPATHLEN) {
|
||||
+ message (1, MSG_ERROR, _("Corrupted cpio header encountered in\n%s"), super->name);
|
||||
+ return STATUS_FAIL;
|
||||
+ }
|
||||
name = g_malloc(hd.c_namesize);
|
||||
if((len = mc_read(super->u.cpio.fd, name, hd.c_namesize)) < hd.c_namesize) {
|
||||
g_free (name);
|
||||
return STATUS_EOF;
|
||||
}
|
||||
+ name[hd.c_namesize - 1] = '\0';
|
||||
CPIO_POS(super) += len;
|
||||
cpio_skip_padding(super);
|
||||
|
||||
@@ -365,11 +384,16 @@
|
||||
(super->u.cpio.type == CPIO_CRC && hd.c_magic != 070702))
|
||||
return STATUS_FAIL;
|
||||
|
||||
+ if (hd.c_namesize == 0 || hd.c_namesize > MC_MAXPATHLEN) {
|
||||
+ message (1, MSG_ERROR, _("Corrupted cpio header encountered in\n%s"), super->name);
|
||||
+ return STATUS_FAIL;
|
||||
+ }
|
||||
name = g_malloc(hd.c_namesize);
|
||||
if((len = mc_read(super->u.cpio.fd, name, hd.c_namesize)) < hd.c_namesize){
|
||||
g_free (name);
|
||||
return STATUS_EOF;
|
||||
}
|
||||
+ name[hd.c_namesize - 1] = '\0';
|
||||
CPIO_POS(super) += len;
|
||||
cpio_skip_padding(super);
|
||||
|
||||
@@ -430,7 +454,8 @@
|
||||
message_3s(1, MSG_ERROR, _("Inconsistent hardlinks of\n%s\nin cpio archive\n%s"),
|
||||
name, super->name);
|
||||
inode = NULL;
|
||||
- }
|
||||
+ } else if (!inode->st.st_size)
|
||||
+ inode->st.st_size = stat->st_size;
|
||||
}
|
||||
}
|
||||
|
@ -1,102 +0,0 @@
|
||||
--- vfs/direntry.c.orig Thu Dec 26 08:21:43 2002
|
||||
+++ vfs/direntry.c Tue Jun 15 03:15:09 2004
|
||||
@@ -217,13 +217,11 @@
|
||||
vfs_s_entry *
|
||||
vfs_s_find_entry_tree (vfs *me, vfs_s_inode *root, char *path, int follow, int flags)
|
||||
{
|
||||
- unsigned int pseg;
|
||||
+ size_t pseg;
|
||||
vfs_s_entry *ent = NULL;
|
||||
- char p[MC_MAXPATHLEN] = "";
|
||||
+ char p[MC_MAXPATHLEN] = "", *t = p;
|
||||
|
||||
while (root){
|
||||
- int t;
|
||||
-
|
||||
while (*path == PATH_SEP) /* Strip leading '/' */
|
||||
path++;
|
||||
|
||||
@@ -233,9 +231,14 @@
|
||||
for (pseg = 0; path[pseg] && path[pseg] != PATH_SEP; pseg++)
|
||||
;
|
||||
|
||||
- strcat (p, PATH_SEP_STR);
|
||||
- strncpy (p + (t = strlen (p)), path, pseg);
|
||||
- p[t + pseg] = '\0';
|
||||
+ if (t + pseg + sizeof (PATH_SEP_STR) > p + sizeof (p))
|
||||
+ ERRNOR (ENOMEM, NULL);
|
||||
+
|
||||
+ memcpy (t, PATH_SEP_STR, sizeof (PATH_SEP_STR) - 1);
|
||||
+ t += sizeof (PATH_SEP_STR) - 1;
|
||||
+ memcpy (t, path, pseg);
|
||||
+ t += pseg;
|
||||
+ *t = '\0';
|
||||
|
||||
for (ent = root->subdir; ent != NULL; ent = ent->next)
|
||||
if (strlen (ent->name) == pseg && (!strncmp (ent->name, path, pseg)))
|
||||
@@ -375,21 +378,31 @@
|
||||
|
||||
/* Convert absolute paths to relative ones */
|
||||
if (*linkname == PATH_SEP) {
|
||||
- char *p, *q;
|
||||
+ char *p, *q, *r, *end;
|
||||
|
||||
for (p = path, q = entry->ino->linkname; *p == *q; p++, q++);
|
||||
while (*(--q) != PATH_SEP);
|
||||
q++;
|
||||
+ r = buf;
|
||||
+ end = buf + MC_MAXPATHLEN;
|
||||
for (;; p++) {
|
||||
p = strchr (p, PATH_SEP);
|
||||
if (!p) {
|
||||
- strcat (buf, q);
|
||||
+ size_t len = strlen (q);
|
||||
+
|
||||
+ if (r + len >= end)
|
||||
+ break;
|
||||
+
|
||||
+ memcpy (r, q, len + 1);
|
||||
+ linkname = buf;
|
||||
break;
|
||||
}
|
||||
- strcat (buf, "..");
|
||||
- strcat (buf, PATH_SEP_STR);
|
||||
+
|
||||
+ if (r + sizeof (".." PATH_SEP_STR) > end)
|
||||
+ break;
|
||||
+ memcpy (r, ".." PATH_SEP_STR, sizeof (".." PATH_SEP_STR) - 1);
|
||||
+ r += sizeof (".." PATH_SEP_STR) - 1;
|
||||
}
|
||||
- linkname = buf;
|
||||
}
|
||||
|
||||
return (MEDATA->find_entry) (me, entry->dir, linkname, follow - 1, 0);
|
||||
@@ -622,8 +635,7 @@
|
||||
return NULL;
|
||||
|
||||
if (info->cur->name) {
|
||||
- strncpy(dir.dent.d_name, info->cur->name, MC_MAXPATHLEN);
|
||||
- dir.dent.d_name[MC_MAXPATHLEN] = 0;
|
||||
+ g_strlcpy(dir.dent.d_name, info->cur->name, MC_MAXPATHLEN);
|
||||
} else {
|
||||
vfs_die("Null in structure-cannot happen");
|
||||
}
|
||||
@@ -729,8 +741,7 @@
|
||||
if (ino->linkname == NULL)
|
||||
ERRNOR (EFAULT, -1);
|
||||
|
||||
- strncpy (buf, ino->linkname, size);
|
||||
- *(buf+size-1) = 0;
|
||||
+ g_strlcpy (buf, ino->linkname, size);
|
||||
return strlen (buf);
|
||||
}
|
||||
|
||||
@@ -1037,7 +1048,7 @@
|
||||
struct vfs_s_inode *ino;
|
||||
char buf[MC_MAXPATHLEN];
|
||||
|
||||
- strncpy (buf, path, MC_MAXPATHLEN);
|
||||
+ g_strlcpy (buf, path, MC_MAXPATHLEN);
|
||||
ino = vfs_s_inode_from_path (me, path, FL_FOLLOW | FL_NONE);
|
||||
|
||||
if (!ino->localname)
|
@ -1,329 +0,0 @@
|
||||
--- vfs/extfs/rpm.orig Sun Dec 29 15:19:39 2002
|
||||
+++ vfs/extfs/rpm Tue Jun 15 03:25:41 2004
|
||||
@@ -1,14 +1,17 @@
|
||||
#! /bin/sh
|
||||
#
|
||||
# Written by Erik Troan (ewt@redhat.com) 1996
|
||||
-# Jakub Jelinek (jj@sunsite.mff.cuni.cz) 1996
|
||||
+# Jakub Jelinek (jj@sunsite.mff.cuni.cz) 1996, 2004
|
||||
# Tomasz K³oczko (kloczek@rudy.mif.pg.gda.pl) 1997
|
||||
# minor changes by Wojtek Pilorz (wpilorz@bdk.lublin.pl) 1997
|
||||
# minor changes by Michele Marziani (marziani@fe.infn.it) 1997
|
||||
# bug files by Marc Merlin (marcsoft@merlins.org) 1998
|
||||
# locale bugfix by Michal Svec (rebel@penguin.cz) 2000
|
||||
-# (C) 1996 The Free Software Foundation.
|
||||
+# Whitespace(s) & single quote(s) in filename workaround
|
||||
+# by Andrew V. Samoilov <sav@bcs.zp.ua> 2004
|
||||
+# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=64007
|
||||
#
|
||||
+# (C) 1996-2004 The Free Software Foundation.
|
||||
#
|
||||
|
||||
# override any locale for dates
|
||||
@@ -22,6 +25,10 @@
|
||||
RPM="rpm"
|
||||
fi
|
||||
RPM2CPIO="rpm2cpio"
|
||||
+SED=sed
|
||||
+# Surround the whole filename with single quotes and handle specially
|
||||
+# \', ' and \ at the end of the string.
|
||||
+SEDCMD="s/\\(\\\\\\?\\)'/'\\1\\1\\\\''/g;s/\\\\\$/'\\\\\\\\'/;s/^/'/;s/\$/'/"
|
||||
|
||||
mcrpmfs_list ()
|
||||
{
|
||||
@@ -31,12 +38,13 @@
|
||||
if test -z "$MCFASTRPM"; then
|
||||
MCFASTRPM=$MCFASTRPM_DFLT
|
||||
fi
|
||||
+ f="`echo "$1" | $SED "$SEDCMD"`"
|
||||
FILEPREF="-r--r--r-- 1 root root "
|
||||
- DESC=`$RPM -qip "$1" 2>/dev/null` || {
|
||||
+ DESC=`$RPM -qip "$f" 2>/dev/null` || {
|
||||
echo "$FILEPREF 0 "`date +"%b %d %H:%M"`" ERROR"
|
||||
exit 1
|
||||
}
|
||||
- DATE=`$RPM -qp --qf "%{BUILDTIME:date}\n" "$1" | cut -c 5-11,21-24`
|
||||
+ DATE=`$RPM -qp --qf "%{BUILDTIME:date}\n" "$f" | cut -c 5-11,21-24`
|
||||
HEADERSIZE=`echo "$DESC" | wc -c`
|
||||
echo "-r--r--r-- 1 root root $HEADERSIZE $DATE HEADER"
|
||||
echo "-r-xr-xr-x 1 root root 39 $DATE INSTALL"
|
||||
@@ -47,25 +55,25 @@
|
||||
echo "$FILEPREF 0 $DATE INFO/BUILDHOST"
|
||||
echo "$FILEPREF 0 $DATE INFO/SOURCERPM"
|
||||
if test "$MCFASTRPM" = 0 ; then
|
||||
- test "`$RPM -qp --qf \"%{DISTRIBUTION}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{DISTRIBUTION}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/DISTRIBUTION"
|
||||
- test "`$RPM -qp --qf \"%{VENDOR}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{VENDOR}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/VENDOR"
|
||||
- test "`$RPM -qp --qf \"%{DESCRIPTION}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{DESCRIPTION}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/DESCRIPTION"
|
||||
- test "`$RPM -qp --qf \"%{SUMMARY}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{SUMMARY}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/SUMMARY"
|
||||
- if test "`$RPM -qp --qf \"%{RPMTAG_PREIN}%{RPMTAG_POSTIN}%{RPMTAG_PREUN}%{RPMTAG_POSTUN}%{VERIFYSCRIPT}\" \"$1\"`" != "(none)(none)(none)(none)(none)"; then
|
||||
+ if test "`$RPM -qp --qf \"%{RPMTAG_PREIN}%{RPMTAG_POSTIN}%{RPMTAG_PREUN}%{RPMTAG_POSTUN}%{VERIFYSCRIPT}\" \"$f\"`" != "(none)(none)(none)(none)(none)"; then
|
||||
echo "dr-xr-xr-x 1 root root 0 $DATE INFO/SCRIPTS"
|
||||
- test "`$RPM -qp --qf \"%{RPMTAG_PREIN}\" \"$1\"`" = '(none)' ||
|
||||
+ test "`$RPM -qp --qf \"%{RPMTAG_PREIN}\" \"$f\"`" = '(none)' ||
|
||||
echo "$FILEPREF 0 $DATE INFO/SCRIPTS/PREIN"
|
||||
- test "`$RPM -qp --qf \"%{RPMTAG_POSTIN}\" \"$1\"`" = '(none)' ||
|
||||
+ test "`$RPM -qp --qf \"%{RPMTAG_POSTIN}\" \"$f\"`" = '(none)' ||
|
||||
echo "$FILEPREF 0 $DATE INFO/SCRIPTS/POSTIN"
|
||||
- test "`$RPM -qp --qf \"%{RPMTAG_PREUN}\" \"$1\"`" = '(none)' ||
|
||||
+ test "`$RPM -qp --qf \"%{RPMTAG_PREUN}\" \"$f\"`" = '(none)' ||
|
||||
echo "$FILEPREF 0 $DATE INFO/SCRIPTS/PREUN"
|
||||
- test "`$RPM -qp --qf \"%{RPMTAG_POSTUN}\" \"$1\"`" = '(none)' ||
|
||||
+ test "`$RPM -qp --qf \"%{RPMTAG_POSTUN}\" \"$f\"`" = '(none)' ||
|
||||
echo "$FILEPREF 0 $DATE INFO/SCRIPTS/POSTUN"
|
||||
- test "`$RPM -qp --qf \"%{VERIFYSCRIPT}\" \"$1\"`" = '(none)' ||
|
||||
+ test "`$RPM -qp --qf \"%{VERIFYSCRIPT}\" \"$f\"`" = '(none)' ||
|
||||
echo "$FILEPREF 0 $DATE INFO/SCRIPTS/VERIFYSCRIPT"
|
||||
echo "$FILEPREF 0 $DATE INFO/SCRIPTS/ALL"
|
||||
fi
|
||||
@@ -83,15 +91,15 @@
|
||||
echo "$FILEPREF 0 $DATE INFO/SCRIPTS/ALL"
|
||||
fi
|
||||
if test "$MCFASTRPM" = 0 ; then
|
||||
- test "`$RPM -qp --qf \"%{PACKAGER}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{PACKAGER}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/PACKAGER"
|
||||
- test "`$RPM -qp --qf \"%{URL}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{URL}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/URL"
|
||||
- test "`$RPM -qp --qf \"%{SERIAL}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{SERIAL}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/SERIAL"
|
||||
- test "`$RPM -qp --qf \"%{COPYRIGHT}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{COPYRIGHT}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/COPYRIGHT"
|
||||
- test "`$RPM -qp --qf \"%{LICENSE}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{LICENSE}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/LICENSE"
|
||||
else
|
||||
echo "$FILEPREF 0 $DATE INFO/PACKAGER"
|
||||
@@ -105,13 +113,13 @@
|
||||
echo "$FILEPREF 0 $DATE INFO/OS"
|
||||
echo "$FILEPREF 0 $DATE INFO/SIZE"
|
||||
if test "$MCFASTRPM" != 0 ; then
|
||||
- $RPM -qp --qf "[%{REQUIRENAME}\n]" "$1" | grep "(none)" > /dev/null ||
|
||||
+ $RPM -qp --qf "[%{REQUIRENAME}\n]" "$f" | grep "(none)" > /dev/null ||
|
||||
echo "$FILEPREF 0 $DATE INFO/REQUIRENAME"
|
||||
- $RPM -qp --qf "[%{OBSOLETES}\n]" "$1" | grep "(none)" > /dev/null ||
|
||||
+ $RPM -qp --qf "[%{OBSOLETES}\n]" "$f" | grep "(none)" > /dev/null ||
|
||||
echo "$FILEPREF 0 $DATE INFO/OBSOLETES"
|
||||
- $RPM -qp --qf "[%{PROVIDES}\n]" "$1" | grep "(none)" > /dev/null ||
|
||||
+ $RPM -qp --qf "[%{PROVIDES}\n]" "$f" | grep "(none)" > /dev/null ||
|
||||
echo "$FILEPREF 0 $DATE INFO/PROVIDES"
|
||||
- test "`$RPM -qp --qf \"%{CHANGELOGTEXT}\" \"$1\"`" = "(none)" ||
|
||||
+ test "`$RPM -qp --qf \"%{CHANGELOGTEXT}\" \"$f\"`" = "(none)" ||
|
||||
echo "$FILEPREF 0 $DATE INFO/CHANGELOG"
|
||||
else
|
||||
echo "$FILEPREF 0 $DATE INFO/REQUIRENAME"
|
||||
@@ -120,61 +128,55 @@
|
||||
echo "$FILEPREF 0 $DATE INFO/CHANGELOG"
|
||||
fi
|
||||
|
||||
- $RPM2CPIO "$1" | cpio -tv --quiet
|
||||
echo "$FILEPREF 0 $DATE CONTENTS.cpio"
|
||||
}
|
||||
|
||||
mcrpmfs_copyout ()
|
||||
{
|
||||
+ f="`echo "$1" | $SED "$SEDCMD"`"
|
||||
case "$2" in
|
||||
- HEADER) $RPM -qip "$1" > "$3"; exit 0;;
|
||||
+ HEADER) $RPM -qip "$f" > "$3"; exit 0;;
|
||||
INSTALL) echo "# Run this to install this RPM package" > "$3"; exit 0;;
|
||||
UPGRADE) echo "# Run this to upgrade this RPM package" > "$3"; exit 0;;
|
||||
- ERROR) $RPM -qip "$1" > /dev/null 2> "$3"; exit 0;;
|
||||
- INFO/NAME-VERSION-RELEASE) $RPM -qp --qf "%{NAME}-%{VERSION}-%{RELEASE}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/RELEASE) $RPM -qp --qf "%{RELEASE}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/GROUP) $RPM -qp --qf "%{GROUP}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/DISTRIBUTION) $RPM -qp --qf "%{DISTRIBUTION}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/VENDOR) $RPM -qp --qf "%{VENDOR}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/BUILDHOST) $RPM -qp --qf "%{BUILDHOST}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/SOURCERPM) $RPM -qp --qf "%{SOURCERPM}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/DESCRIPTION) $RPM -qp --qf "%{DESCRIPTION}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/PACKAGER) $RPM -qp --qf "%{PACKAGER}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/URL) $RPM -qp --qf "%{URL}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/BUILDTIME) $RPM -qp --qf "%{BUILDTIME:date}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/SERIAL) $RPM -qp --qf "%{SERIAL}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/COPYRIGHT) $RPM -qp --qf "%{COPYRIGHT}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/RPMVERSION) $RPM -qp --qf "%{RPMVERSION}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/REQUIRENAME) $RPM -qp --qf "[%{REQUIRENAME} %{REQUIREFLAGS:depflags} %{REQUIREVERSION}\n]" "$1" >"$3"; exit 0;;
|
||||
- INFO/PROVIDES) $RPM -qp --qf "[%{PROVIDES}\n]" "$1" >"$3"; exit 0;;
|
||||
- INFO/SCRIPTS/PREIN) $RPM -qp --qf "%{RPMTAG_PREIN}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/SCRIPTS/POSTIN) $RPM -qp --qf "%{RPMTAG_POSTIN}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/SCRIPTS/PREUN) $RPM -qp --qf "%{RPMTAG_PREUN}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/SCRIPTS/POSTUN) $RPM -qp --qf "%{RPMTAG_POSTUN}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/SCRIPTS/VERIFYSCRIPT) $RPM -qp --qf "%{VERIFYSCRIPT}\n" "$1" >"$3"; exit 0;;
|
||||
- INFO/SCRIPTS/ALL) $RPM -qp --scripts "$1" > "$3"; exit 0;;
|
||||
- INFO/SUMMARY) $RPM -qp --qf "%{SUMMARY}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/OS) $RPM -qp --qf "%{OS}\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/CHANGELOG) $RPM -qp --qf "[* %{CHANGELOGTIME:date} %{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]\n" "$1" > "$3"; exit 0;;
|
||||
- INFO/SIZE) $RPM -qp --qf "%{SIZE} bytes\n" "$1" > "$3"; exit 0;;
|
||||
+ ERROR) $RPM -qip "$f" > /dev/null 2> "$3"; exit 0;;
|
||||
+ INFO/NAME-VERSION-RELEASE) $RPM -qp --qf "%{NAME}-%{VERSION}-%{RELEASE}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/RELEASE) $RPM -qp --qf "%{RELEASE}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/GROUP) $RPM -qp --qf "%{GROUP}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/DISTRIBUTION) $RPM -qp --qf "%{DISTRIBUTION}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/VENDOR) $RPM -qp --qf "%{VENDOR}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/BUILDHOST) $RPM -qp --qf "%{BUILDHOST}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/SOURCERPM) $RPM -qp --qf "%{SOURCERPM}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/DESCRIPTION) $RPM -qp --qf "%{DESCRIPTION}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/PACKAGER) $RPM -qp --qf "%{PACKAGER}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/URL) $RPM -qp --qf "%{URL}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/BUILDTIME) $RPM -qp --qf "%{BUILDTIME:date}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/SERIAL) $RPM -qp --qf "%{SERIAL}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/COPYRIGHT) $RPM -qp --qf "%{COPYRIGHT}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/RPMVERSION) $RPM -qp --qf "%{RPMVERSION}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/REQUIRENAME) $RPM -qp --qf "[%{REQUIRENAME} %{REQUIREFLAGS:depflags} %{REQUIREVERSION}\n]" "$f" >"$3"; exit 0;;
|
||||
+ INFO/PROVIDES) $RPM -qp --qf "[%{PROVIDES}\n]" "$f" >"$3"; exit 0;;
|
||||
+ INFO/SCRIPTS/PREIN) $RPM -qp --qf "%{RPMTAG_PREIN}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/SCRIPTS/POSTIN) $RPM -qp --qf "%{RPMTAG_POSTIN}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/SCRIPTS/PREUN) $RPM -qp --qf "%{RPMTAG_PREUN}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/SCRIPTS/POSTUN) $RPM -qp --qf "%{RPMTAG_POSTUN}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/SCRIPTS/VERIFYSCRIPT) $RPM -qp --qf "%{VERIFYSCRIPT}\n" "$f" >"$3"; exit 0;;
|
||||
+ INFO/SCRIPTS/ALL) $RPM -qp --scripts "$f" > "$3"; exit 0;;
|
||||
+ INFO/SUMMARY) $RPM -qp --qf "%{SUMMARY}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/OS) $RPM -qp --qf "%{OS}\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/CHANGELOG) $RPM -qp --qf "[* %{CHANGELOGTIME:date} %{CHANGELOGNAME}\n%{CHANGELOGTEXT}\n\n]\n" "$f" > "$3"; exit 0;;
|
||||
+ INFO/SIZE) $RPM -qp --qf "%{SIZE} bytes\n" "$f" > "$3"; exit 0;;
|
||||
CONTENTS.cpio) $RPM2CPIO "$1" > "$3"; exit 0;;
|
||||
*)
|
||||
- TMPDIR=/tmp/mctmpdir.$$
|
||||
- mkdir $TMPDIR || exit 1
|
||||
- cd $TMPDIR
|
||||
- # Files in RPM version 4 and above start with "./" - try both
|
||||
- $RPM2CPIO "$1" | cpio -iumd --quiet "$2" "./$2" >/dev/null
|
||||
- mv "$2" "$3" 2>/dev/null
|
||||
- cd /
|
||||
- rm -rf $TMPDIR;;
|
||||
+ ;;
|
||||
esac
|
||||
}
|
||||
|
||||
mcrpmfs_run ()
|
||||
{
|
||||
+ f="`echo "$1" | $SED "$SEDCMD"`"
|
||||
case "$2" in
|
||||
- INSTALL) echo "Installing \"$1\""; $RPM -ivh "$1"; exit 0;;
|
||||
- UPGRADE) echo "Upgrading \"$1\""; $RPM -iUvh "$1"; exit 0;;
|
||||
+ INSTALL) echo "Installing \"$1\""; $RPM -ivh "$f"; exit 0;;
|
||||
+ UPGRADE) echo "Upgrading \"$1\""; $RPM -Uvh "$f"; exit 0;;
|
||||
esac
|
||||
}
|
||||
|
||||
--- vfs/extfs/uar.in.orig Thu Dec 12 15:21:35 2002
|
||||
+++ vfs/extfs/uar.in Tue Jun 15 03:15:09 2004
|
||||
@@ -22,8 +22,7 @@
|
||||
|
||||
mcarfs_copyin ()
|
||||
{
|
||||
- TMPDIR=/tmp/mctmpdir-uar.$$
|
||||
- mkdir $TMPDIR || exit 1
|
||||
+ TMPDIR=`mktemp -d ${MC_TMPDIR:-/tmp}/mctmpdir-uar.XXXXXX` || exit 1
|
||||
name=`basename "$2"`
|
||||
(cd $TMPDIR && cp -fp "$3" $name && $XAR r "$1" $name)
|
||||
rm -rf $TMPDIR
|
||||
--- vfs/extfs/uha.in.orig Sat Dec 14 11:10:53 2002
|
||||
+++ vfs/extfs/uha.in Tue Jun 15 03:15:09 2004
|
||||
@@ -31,8 +31,7 @@
|
||||
|
||||
mchafs_copyout ()
|
||||
{
|
||||
- TMPDIR="/tmp/mctmpdir-uha.$$"
|
||||
- mkdir $TMPDIR || exit 1
|
||||
+ TMPDIR=`mktemp -d ${MC_TMPDIR:-/tmp}/mctmpdir-uha.XXXXXX` || exit 1
|
||||
cd $TMPDIR
|
||||
|
||||
$HA xyq "$1" "$2" >/dev/null
|
||||
--- vfs/extfs/ulha.in.orig Sat Dec 14 10:39:10 2002
|
||||
+++ vfs/extfs/ulha.in Tue Jun 15 03:15:09 2004
|
||||
@@ -35,12 +35,6 @@
|
||||
LHA_GET="lha pq"
|
||||
LHA_PUT="lha aq"
|
||||
|
||||
-# Define a directory to create a temporary file for when
|
||||
-# running a command to be run from the archive
|
||||
-TMPDIR="/tmp/mctmpdir-uha.$$"
|
||||
-# Temporary file within the directory
|
||||
-TMPCMD=$TMPDIR/run
|
||||
-
|
||||
# The 'list' command executive
|
||||
|
||||
mc_lha_fs_list()
|
||||
@@ -121,9 +115,9 @@
|
||||
|
||||
mc_lha_fs_run()
|
||||
{
|
||||
+ TMPDIR=`mktemp -d ${MC_TMPDIR:-/tmp}/mctmpdir-ulha.XXXXXX` || exit 1
|
||||
trap "rm -rf $TMPDIR; exit 0" 1 2 3 4 15
|
||||
- # FIXME: Try harder to generate a unique directory if this fails
|
||||
- mkdir -m 0700 $TMPDIR || exit 1
|
||||
+ TMPCMD=$TMPDIR/run
|
||||
$LHA_GET "$1" "$2" > $TMPCMD
|
||||
chmod a+x $TMPCMD
|
||||
$TMPCMD
|
||||
--- vfs/extfs/urar.in.orig Fri Jan 24 21:56:25 2003
|
||||
+++ vfs/extfs/urar.in Tue Jun 15 03:15:09 2004
|
||||
@@ -77,8 +77,7 @@
|
||||
# preserve pwd. It is clean, but is it necessary?
|
||||
pwd=`pwd`
|
||||
# Create a directory and create in it a tmp directory with the good name
|
||||
- dir=tmpdir.${RANDOM}
|
||||
- mkdir $dir
|
||||
+ dir=`mktemp -d ${MC_TMPDIR:-/tmp}/mctmpdir-urar.XXXXXX` || exit 1
|
||||
cd $dir
|
||||
mkdir -p "$2"
|
||||
# rar cannot create an empty directory
|
||||
--- vfs/extfs/uzip.in.orig Thu Dec 12 15:15:20 2002
|
||||
+++ vfs/extfs/uzip.in Tue Jun 15 03:18:53 2004
|
||||
@@ -76,7 +76,7 @@
|
||||
sub mczipfs_rmdir {
|
||||
my ($qfile) = map { &zipquotemeta($_) } @_;
|
||||
&checkargs(1, 'archive directory', @_);
|
||||
- &safesystem("$cmd_delete $qarchive $qfile/ >/dev/null", 12);
|
||||
+ &safesystem("$cmd_delete $qarchive $qfile/ >/dev/null 2>&1", 12);
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
my ($qafile, $qfsfile) = map { &zipquotemeta($_) } @_;
|
||||
&checkargs(1, 'archive file', @_);
|
||||
&checkargs(2, 'local file', @_);
|
||||
- &safesystem("$cmd_extract $qarchive $qafile > $qfsfile", 11);
|
||||
+ &safesystem("$cmd_extract $qarchive $qafile > $qfsfile 2>/dev/null", 11);
|
||||
exit;
|
||||
}
|
||||
|
||||
@@ -344,10 +344,10 @@
|
||||
|
||||
# Make a temporary directory with mode 0700.
|
||||
sub mktmpdir {
|
||||
- while (1) {
|
||||
- my $dir = POSIX::tmpnam();
|
||||
- return $dir if mkdir ($dir, 0700);
|
||||
- }
|
||||
+ use File::Temp qw(mkdtemp);
|
||||
+ my $template = "/tmp/mcuzipfs.XXXXXX";
|
||||
+ $template="$ENV{MC_TMPDIR}/mcuzipfs.XXXXXX" if ($ENV{MC_TMPDIR});
|
||||
+ return mkdtemp($template);
|
||||
}
|
||||
|
||||
# Make a filename absolute and return it.
|
||||
--- vfs/extfs/uzoo.in.orig Sat Dec 14 10:29:13 2002
|
||||
+++ vfs/extfs/uzoo.in Tue Jun 15 03:15:09 2004
|
||||
@@ -13,8 +13,7 @@
|
||||
# it to a temporary directory.
|
||||
mklink ()
|
||||
{
|
||||
- TMPDIR="/tmp/mctmpdir-uzoo.$$"
|
||||
- mkdir $TMPDIR || exit 1
|
||||
+ TMPDIR=`mktemp -d ${MC_TMPDIR:-/tmp}/mctmpdir-uzoo.XXXXXX` || exit 1
|
||||
trap 'cd /; rm -rf $TMPDIR' 0 1 2 3 5 13 15
|
||||
ARCHIVE=$TMPDIR/tmp.zoo
|
||||
ln -sf "$1" "$ARCHIVE"
|
@ -1,83 +0,0 @@
|
||||
--- vfs/extfs/a.in.orig Thu Dec 12 02:57:00 2002
|
||||
+++ vfs/extfs/a.in Fri Sep 10 16:09:30 2004
|
||||
@@ -8,6 +8,13 @@
|
||||
#
|
||||
|
||||
# These mtools components must be in PATH for this to work
|
||||
+
|
||||
+sub quote {
|
||||
+ $_ = shift(@_);
|
||||
+ s/([^\w\/.+-])/\\$1/g;
|
||||
+ return($_);
|
||||
+}
|
||||
+
|
||||
$mmd = "mmd";
|
||||
$mrd = "mrd";
|
||||
$mdel = "mdel";
|
||||
@@ -15,7 +22,7 @@
|
||||
$mcopy = "mcopy -noQ";
|
||||
|
||||
$0 =~ s|.*/||;
|
||||
-$disk = $0;
|
||||
+$qdisk = quote($0);
|
||||
|
||||
$ENV{MTOOLS_DATE_STRING} = "mm-dd-yyyy";
|
||||
$ENV{MTOOLS_TWENTY_FOUR_HOUR_CLOCK} = "1";
|
||||
@@ -29,29 +36,36 @@
|
||||
/mkdir/ && do {
|
||||
shift; shift;
|
||||
exit 1 if scalar(@ARGV) != 1;
|
||||
- system("$mmd $disk:/$ARGV[0] >/dev/null");
|
||||
+ $qname = quote($ARGV[0]);
|
||||
+ system("$mmd $qdisk:/$qname >/dev/null");
|
||||
exit 0; };
|
||||
/rmdir/ && do {
|
||||
shift; shift;
|
||||
exit 1 if scalar(@ARGV) != 1;
|
||||
- system("$mrd $disk:/$ARGV[0] >/dev/null");
|
||||
+ $qname = quote($ARGV[0]);
|
||||
+ system("$mrd $qdisk:/$qname >/dev/null");
|
||||
exit 0; };
|
||||
/rm/ && do {
|
||||
shift; shift;
|
||||
exit 1 if scalar(@ARGV) != 1;
|
||||
- system("$mdel $disk:/$ARGV[0] >/dev/null");
|
||||
+ $qname = quote($ARGV[0]);
|
||||
+ system("$mdel $qdisk:/$qname >/dev/null");
|
||||
exit 0; };
|
||||
/copyout/ && do {
|
||||
shift; shift;
|
||||
exit 1 if scalar(@ARGV) != 2;
|
||||
- ( $src, $dest ) = @ARGV;
|
||||
- system("$mcopy $disk:/$src $dest >/dev/null");
|
||||
+ ( $qsrc, $qdest ) = @ARGV;
|
||||
+ $qsrc = quote($qsrc);
|
||||
+ $qdest = quote($qdest);
|
||||
+ system("$mcopy $qdisk:/$qsrc $qdest >/dev/null");
|
||||
exit 0; };
|
||||
/copyin/ && do {
|
||||
shift; shift;
|
||||
exit 1 if scalar(@ARGV) != 2;
|
||||
- ( $dest, $src ) = @ARGV;
|
||||
- system("$mcopy $src $disk:/$dest >/dev/null");
|
||||
+ ( $qdest, $qsrc ) = @ARGV;
|
||||
+ $qsrc = quote($qsrc);
|
||||
+ $qdest = quote($qdest);
|
||||
+ system("$mcopy $qsrc $qdisk:/$qdest >/dev/null");
|
||||
exit 0; };
|
||||
/.*/ && do { # an unfamiliar command
|
||||
exit 1; };
|
||||
@@ -59,11 +73,11 @@
|
||||
|
||||
sub get_dirs {
|
||||
my ($path, $name, $size, $date, $time, $longname, @lst, @rv);
|
||||
-
|
||||
$path = shift(@_);
|
||||
+ my $qpath = quote($path);
|
||||
@rv = ();
|
||||
|
||||
- open(FILE,"$mdir $disk:/$path |");
|
||||
+ open(FILE,"$mdir $qdisk:/$qpath |");
|
||||
while ( <FILE> ) {
|
||||
chomp();
|
||||
/^ / && next; # ignore `non-file' lines
|
@ -1,102 +0,0 @@
|
||||
--- vfs/extfs/apt.in.orig Tue Dec 24 12:33:46 2002
|
||||
+++ vfs/extfs/apt.in Fri Sep 10 16:09:30 2004
|
||||
@@ -6,6 +6,12 @@
|
||||
#
|
||||
# apt
|
||||
|
||||
+sub quote {
|
||||
+ $_ = shift(@_);
|
||||
+ s/([^\w\/.+-])/\\$1/g;
|
||||
+ return($_);
|
||||
+}
|
||||
+
|
||||
sub bt
|
||||
{
|
||||
my ($dt) = @_;
|
||||
@@ -229,14 +235,16 @@
|
||||
sub copyout
|
||||
{
|
||||
my($archive,$filename) = @_;
|
||||
+ my $qarchive = quote($archive);
|
||||
+ my $qfilename = quote($filename);
|
||||
if( $archive eq 'CHECK' ) {
|
||||
- system("apt-get -q check > $filename");
|
||||
+ system("apt-get -q check > $qfilename");
|
||||
} elsif( $archive eq 'AVAILABLE' ) {
|
||||
- system("apt-cache dumpavail > $filename");
|
||||
+ system("apt-cache dumpavail > $qfilename");
|
||||
} elsif( $archive eq 'STATS' ) {
|
||||
- system("apt-cache stats > $filename");
|
||||
+ system("apt-cache stats > $qfilename");
|
||||
} elsif( $archive eq 'CONFIG' ) {
|
||||
- system("(apt-config dump 2>&1) > $filename");
|
||||
+ system("(apt-config dump 2>&1) > $qfilename");
|
||||
} elsif( $archive eq 'UPDATE' ) {
|
||||
open O, ">$filename";
|
||||
print O $pressupdate;
|
||||
@@ -246,12 +254,12 @@
|
||||
print O $pressupgrade;
|
||||
close O;
|
||||
} elsif( $archive eq 'apt.conf' ) {
|
||||
- system("cp /etc/apt/apt.conf $filename");
|
||||
+ system("cp /etc/apt/apt.conf $qfilename");
|
||||
} elsif( $archive eq 'sources.list' ) {
|
||||
- system("cp /etc/apt/sources.list $filename");
|
||||
+ system("cp /etc/apt/sources.list $qfilename");
|
||||
} elsif( $archive =~ /^CACHE\// ) {
|
||||
$archive =~ s%^CACHE/%/var/cache/apt/archives/%;
|
||||
- system("cp $archive $filename");
|
||||
+ system("cp $qarchive $qfilename");
|
||||
} else {
|
||||
open O, ">$filename";
|
||||
print O $archive, "\n";
|
||||
@@ -262,15 +270,17 @@
|
||||
sub copyin
|
||||
{
|
||||
my($archive,$filename) = @_;
|
||||
+ my $qarchive = quote($archive);
|
||||
+ my $qfilename = quote($filename);
|
||||
if( $archive =~ /\.deb$/ ) {
|
||||
- system("dpkg -i $filename>/dev/null");
|
||||
+ system("dpkg -i $qfilename>/dev/null");
|
||||
} elsif( $archive eq 'apt.conf' ) {
|
||||
- system("cp $filename /etc/apt/apt.conf");
|
||||
+ system("cp $qfilename /etc/apt/apt.conf");
|
||||
} elsif( $archive eq 'sources.list' ) {
|
||||
- system("cp $filename /etc/apt/sources.list");
|
||||
+ system("cp $qfilename /etc/apt/sources.list");
|
||||
} elsif( $archive =~ /^CACHE\// ) {
|
||||
- $archive =~ s%^CACHE/%/var/cache/apt/archives/%;
|
||||
- system("cp $filename $archive");
|
||||
+ $qarchive =~ s%^CACHE/%/var/cache/apt/archives/%;
|
||||
+ system("cp $qfilename $qarchive");
|
||||
} else {
|
||||
die "extfs: cannot create regular file \`$archive\': Permission denied\n";
|
||||
}
|
||||
@@ -293,19 +303,20 @@
|
||||
sub rm
|
||||
{
|
||||
my($archive) = @_;
|
||||
+ my $qarchive = quote($archive);
|
||||
if( $archive =~ /^CACHE\// ) {
|
||||
- $archive =~ s%^CACHE/%/var/cache/apt/archives/%;
|
||||
- system("rm -f $archive");
|
||||
+ $qarchive =~ s%^CACHE/%/var/cache/apt/archives/%;
|
||||
+ system("rm -f $qarchive");
|
||||
} elsif( $archive eq 'apt.conf' ) {
|
||||
system("rm -f /etc/apt/apt.conf");
|
||||
} elsif( $archive eq 'sources.list' ) {
|
||||
system("rm -f /etc/apt/sources.list");
|
||||
} elsif( $archive =~ /\.debd?$/ ) {
|
||||
# uncommented and changed to use dpkg - alpha
|
||||
- my $name = $archive;
|
||||
- $name =~ s%.*/%%g;
|
||||
- $name =~ s%_.*%%g;
|
||||
- system("dpkg --remove $name >/dev/null");
|
||||
+ my $qname = $qarchive;
|
||||
+ $qname =~ s%.*/%%g;
|
||||
+ $qname =~ s%_.*%%g;
|
||||
+ system("dpkg --remove $qname >/dev/null");
|
||||
die("extfs: $archive: Operation not permitted\n") if $? != 0;
|
||||
} else {
|
||||
die "extfs: $archive: Operation not permitted\n";
|
@ -1,113 +0,0 @@
|
||||
--- vfs/extfs/deb.in.orig Fri Sep 10 16:22:18 2004
|
||||
+++ vfs/extfs/deb.in Fri Sep 10 16:22:25 2004
|
||||
@@ -19,6 +19,12 @@
|
||||
# Copyright (C) 1997 Free Software Foundation
|
||||
#
|
||||
|
||||
+sub quote {
|
||||
+ $_ = shift(@_);
|
||||
+ s/([^\w\/.+-])/\\$1/g;
|
||||
+ return($_);
|
||||
+}
|
||||
+
|
||||
sub mcdebfs_list
|
||||
{
|
||||
#
|
||||
@@ -26,8 +32,9 @@
|
||||
# Empty directories do not appear at all
|
||||
#
|
||||
local($archivename)=@_;
|
||||
+ local $qarchivename = quote($archivename);
|
||||
chop($date=`LC_ALL=C date "+%b %d %Y %H:%M"`);
|
||||
- chop($info_size=`dpkg -I $archivename | wc -c`);
|
||||
+ chop($info_size=`dpkg -I $qarchivename | wc -c`);
|
||||
$install_size=length($pressinstall);
|
||||
|
||||
print "dr-xr-xr-x 1 root root 0 $date CONTENTS\n";
|
||||
@@ -36,7 +43,7 @@
|
||||
print "-r--r--r-- 1 root root $info_size $date INFO\n";
|
||||
print "-r-xr--r-- 1 root root $install_size $date INSTALL\n";
|
||||
|
||||
- if ( open(PIPEIN, "dpkg-deb -c $archivename |") )
|
||||
+ if ( open(PIPEIN, "dpkg-deb -c $qarchivename |") )
|
||||
{
|
||||
while(<PIPEIN>)
|
||||
{
|
||||
@@ -81,7 +88,7 @@
|
||||
}
|
||||
}
|
||||
# begin from Patrik Rak
|
||||
- if ( open(PIPEIN, "dpkg-deb -I $archivename |") )
|
||||
+ if ( open(PIPEIN, "dpkg-deb -I $qarchivename |") )
|
||||
{
|
||||
while(<PIPEIN>)
|
||||
{
|
||||
@@ -109,16 +116,19 @@
|
||||
sub mcdebfs_copyout
|
||||
{
|
||||
local($archive,$filename,$destfile)=@_;
|
||||
+ local $qarchive = quote($archive);
|
||||
+ local $qfilename = quote($filename);
|
||||
+ local $qdestfile = quote($destfile);
|
||||
|
||||
if($filename eq "INFO")
|
||||
{
|
||||
- system("dpkg-deb -I $archive > $destfile");
|
||||
+ system("dpkg-deb -I $qarchive > $qdestfile");
|
||||
# begin from Patrik Rak
|
||||
}
|
||||
elsif($filename =~ /^DEBIAN/)
|
||||
{
|
||||
- $filename=~s!^DEBIAN/!!;
|
||||
- system("dpkg-deb -I $archive $filename > $destfile");
|
||||
+ $qfilename=~s!^DEBIAN/!!;
|
||||
+ system("dpkg-deb -I $qarchive $qfilename > $qdestfile");
|
||||
# end from Patrik Rak
|
||||
|
||||
}
|
||||
@@ -128,36 +138,32 @@
|
||||
{
|
||||
print FILEOUT $pressinstall;
|
||||
close FILEOUT;
|
||||
- system("chmod a+x $destfile");
|
||||
+ system("chmod a+x $qdestfile");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
# files can be prepended with ./ or not, depending on the version of tar
|
||||
- $filename=~s!^CONTENTS/!!;
|
||||
- system("dpkg-deb --fsys-tarfile $archive | tar xOf - $filename ./$filename > $destfile 2>/dev/null");
|
||||
+ $qfilename=~s!^CONTENTS/!!;
|
||||
+ system("dpkg-deb --fsys-tarfile $qarchive | tar xOf - $qfilename ./$qfilename > $qdestfile 2>/dev/null");
|
||||
}
|
||||
}
|
||||
|
||||
sub mcdebfs_run
|
||||
{
|
||||
local($archive,$filename)=@_;
|
||||
+ local $qarchive = quote($archive);
|
||||
if($filename eq "INSTALL")
|
||||
{
|
||||
print "Installing $archive\n";
|
||||
- system("dpkg -i $archive");
|
||||
+ system("dpkg -i $qarchive");
|
||||
}
|
||||
else
|
||||
{
|
||||
- $suffix = "aaa";
|
||||
- while (1) {
|
||||
- $tmpdir = "/tmp/mcdebfs.run".$$.$suffix;
|
||||
- last if mkdir $tmpdir, 0700;
|
||||
- $suffix++;
|
||||
- # Somebody is being really nasty, give up
|
||||
- exit 1 if $suffix eq "zzz";
|
||||
- }
|
||||
-
|
||||
+ use File::Temp qw(mkdtemp);
|
||||
+ my $template = "/tmp/mcdebfs.run.XXXXXX";
|
||||
+ $template="$ENV{MC_TMPDIR}/mcdebfs.XXXXXX" if ($ENV{MC_TMPDIR});
|
||||
+ $tmpdir = mkdtemp($template);
|
||||
$tmpcmd="$tmpdir/run";
|
||||
&mcdebfs_copyout($archive, $filename, $tmpcmd);
|
||||
system("chmod u+x $tmpcmd");
|
@ -1,165 +0,0 @@
|
||||
--- vfs/extfs/deba.in.orig Thu Dec 12 22:15:30 2002
|
||||
+++ vfs/extfs/deba.in Fri Sep 10 16:09:30 2004
|
||||
@@ -6,111 +6,25 @@
|
||||
#
|
||||
# deba
|
||||
|
||||
-sub bt
|
||||
-{
|
||||
- my ($dt) = @_;
|
||||
- my (@time);
|
||||
- @time = localtime($dt);
|
||||
- $bt = sprintf "%02d-%02d-%d %02d:%02d", $time[4] + 1, $time[3],
|
||||
- $time[5] + 1900, $time[2], $time[1];
|
||||
- return $bt;
|
||||
-}
|
||||
-
|
||||
-
|
||||
-sub ft
|
||||
-{
|
||||
- my ($f) = @_;
|
||||
- return "d" if -d $f;
|
||||
- return "l" if -l $f;
|
||||
- return "p" if -p $f;
|
||||
- return "S" if -S $f;
|
||||
- return "b" if -b $f;
|
||||
- return "c" if -c $f;
|
||||
- return "-";
|
||||
-}
|
||||
-
|
||||
-sub fm
|
||||
-{
|
||||
- my ($n) = @_;
|
||||
- my ($m);
|
||||
-
|
||||
- if( $n & 0400 ) {
|
||||
- $m .= "r";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
- if( $n & 0200 ) {
|
||||
- $m .= "w";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
- if( $n & 04000 ) {
|
||||
- $m .= "s";
|
||||
- } elsif( $n & 0100 ) {
|
||||
- $m .= "x";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
-
|
||||
- if( $n & 0040 ) {
|
||||
- $m .= "r";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
- if( $n & 0020 ) {
|
||||
- $m .= "w";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
- if( $n & 02000 ) {
|
||||
- $m .= "s";
|
||||
- } elsif( $n & 0010 ) {
|
||||
- $m .= "x";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
-
|
||||
- if( $n & 0004 ) {
|
||||
- $m .= "r";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
- if( $n & 0002 ) {
|
||||
- $m .= "w";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
- if( $n & 01000 ) {
|
||||
- $m .= "t";
|
||||
- } elsif( $n & 0001 ) {
|
||||
- $m .= "x";
|
||||
- } else {
|
||||
- $m .= "-";
|
||||
- }
|
||||
-
|
||||
- return $m;
|
||||
-}
|
||||
-
|
||||
-sub ls {
|
||||
- my ($file) = @_;
|
||||
- my @stat = stat($file);
|
||||
- # mode, nlink, uid, gid, size, mtime, filename
|
||||
- printf "%s%s %d %d %d %d %s CONTENTS%s\n", ft($file), fm($stat[2] & 07777),
|
||||
- $stat[3], $stat[4], $stat[5], $stat[7], bt($stat[9]), $file;
|
||||
+sub quote {
|
||||
+ $_ = shift(@_);
|
||||
+ s/([^\w\/.+-])/\\$1/g;
|
||||
+ return($_);
|
||||
}
|
||||
|
||||
sub list
|
||||
{
|
||||
- my($archive)=@_;
|
||||
+ my($qarchive)=@_;
|
||||
+ $qarchive = quote($qarchive);
|
||||
chop($date=`LC_ALL=C date "+%b %d %Y %H:%M"`);
|
||||
- chop($info_size=`apt-cache show $archive | wc -c`);
|
||||
+ chop($info_size=`apt-cache show $qarchive | wc -c`);
|
||||
$install_size=length($pressinstall);
|
||||
$upgrade_size=length($pressupgrade);
|
||||
|
||||
print "-r--r--r-- 1 root root $info_size $date INFO\n";
|
||||
|
||||
- chop($debd = `dpkg -s $archive | grep -i ^Version | sed 's/^version: //i'`);
|
||||
- chop($deba = `apt-cache show $archive | grep -i ^Version | sed 's/^version: //i'`);
|
||||
+ chop($debd = `dpkg -s $qarchive | grep -i ^Version | sed 's/^version: //i'`);
|
||||
+ chop($deba = `apt-cache show $qarchive | grep -i ^Version | sed 's/^version: //i'`);
|
||||
if( ! $debd ) {
|
||||
print "-r-xr--r-- 1 root root $install_size $date INSTALL\n";
|
||||
} elsif( $debd ne $deba ) {
|
||||
@@ -121,20 +35,21 @@
|
||||
sub copyout
|
||||
{
|
||||
my($archive,$filename,$destfile)=@_;
|
||||
-
|
||||
+ my $qarchive = quote($archive);
|
||||
+ my $qdestfile = quote($destfile);
|
||||
if($filename eq "INFO") {
|
||||
- system("apt-cache show $archive > $destfile");
|
||||
+ system("apt-cache show $qarchive > $qdestfile");
|
||||
} elsif($filename eq "INSTALL") {
|
||||
- if ( open(FILEOUT,">$destfile") ) {
|
||||
+ if ( open(FILEOUT, "> $destfile") ) {
|
||||
print FILEOUT $pressinstall;
|
||||
close FILEOUT;
|
||||
- system("chmod a+x $destfile");
|
||||
+ system("chmod a+x $qdestfile");
|
||||
}
|
||||
} elsif($filename eq "UPGRADE") {
|
||||
- if ( open(FILEOUT,">$destfile") ) {
|
||||
+ if ( open(FILEOUT, ">, $destfile") ) {
|
||||
print FILEOUT $pressupgrade;
|
||||
close FILEOUT;
|
||||
- system("chmod a+x $destfile");
|
||||
+ system("chmod a+x $qdestfile");
|
||||
}
|
||||
} else {
|
||||
die "extfs: $filename: No such file or directory\n";
|
||||
@@ -144,10 +59,11 @@
|
||||
sub run
|
||||
{
|
||||
my($archive,$filename)=@_;
|
||||
+ my $qarchive = quote($archive);
|
||||
if($filename eq "INSTALL") {
|
||||
- system("apt-get install $archive");
|
||||
+ system("apt-get install $qarchive");
|
||||
} elsif($filename eq "UPGRADE") {
|
||||
- system("apt-get install $archive");
|
||||
+ system("apt-get install $qarchive");
|
||||
} else {
|
||||
die "extfs: $filename: Permission denied\n";
|
||||
}
|
@ -1,148 +0,0 @@
|
||||
--- vfs/extfs/debd.in.orig Thu Dec 12 22:15:30 2002
|
||||
+++ vfs/extfs/debd.in Fri Sep 10 16:09:30 2004
|
||||
@@ -6,6 +6,12 @@
|
||||
#
|
||||
# debd
|
||||
|
||||
+sub quote {
|
||||
+ $_ = shift(@_);
|
||||
+ s/([^\w\/.+-])/\\$1/g;
|
||||
+ return($_);
|
||||
+}
|
||||
+
|
||||
sub bt
|
||||
{
|
||||
my ($dt) = @_;
|
||||
@@ -102,8 +108,9 @@
|
||||
sub list
|
||||
{
|
||||
my($archive)=@_;
|
||||
+ my $qarchive = quote($archive);
|
||||
chop($date=`LC_ALL=C date "+%b %d %Y %H:%M"`);
|
||||
- chop($info_size=`dpkg -s $archive | wc -c`);
|
||||
+ chop($info_size=`dpkg -s $qarchive | wc -c`);
|
||||
$repack_size=length($pressrepack);
|
||||
$reinstall_size=length($pressreinstall);
|
||||
$remove_size=length($pressremove);
|
||||
@@ -118,7 +125,7 @@
|
||||
print "-r--r--r-- 1 root root $info_size $date INFO\n";
|
||||
print "-r-xr--r-- 1 root root $purge_size $date DPKG-PURGE\n";
|
||||
|
||||
- chop($status = `dpkg -s $archive | grep ^Status`);
|
||||
+ chop($status = `dpkg -s $qarchive | grep ^Status`);
|
||||
if( $status =~ /deinstall/ ) {
|
||||
print "-r-xr--r-- 1 root root $select_size $date DPKG-SELECT\n";
|
||||
} elsif( $status =~ /install/ ) {
|
||||
@@ -141,7 +148,7 @@
|
||||
|
||||
|
||||
|
||||
- if ( open(PIPEIN, "LANG=C ls -l /var/lib/dpkg/info/$archive.* |") ) {
|
||||
+ if ( open(PIPEIN, "LANG=C ls -l /var/lib/dpkg/info/$qarchive.* |") ) {
|
||||
while(<PIPEIN>) {
|
||||
chop;
|
||||
next if /\.list$/;
|
||||
@@ -163,35 +170,38 @@
|
||||
sub copyout
|
||||
{
|
||||
my($archive,$filename,$destfile)=@_;
|
||||
+ my $qarchive = quote($archive);
|
||||
+ my $qfilename = quote($filename);
|
||||
+ my $qdestfile = quote($destfile);
|
||||
|
||||
if($filename eq "INFO") {
|
||||
- system("dpkg -s $archive > $destfile");
|
||||
+ system("dpkg -s $qarchive > $qdestfile");
|
||||
} elsif($filename eq "DPKG-REPACK") {
|
||||
if ( open(FILEOUT,">$destfile") ) {
|
||||
print FILEOUT $pressrepack;
|
||||
close FILEOUT;
|
||||
- system("chmod a+x $destfile");
|
||||
+ system("chmod a+x $qdestfile");
|
||||
}
|
||||
} elsif($filename =~ /^DEBIAN/) {
|
||||
$filename=~s!^DEBIAN/!!;
|
||||
- system("cat /var/lib/dpkg/info/$archive.$filename > $destfile");
|
||||
+ system("cat /var/lib/dpkg/info/$qarchive.$qfilename > $qdestfile");
|
||||
} elsif($filename eq "DPKG-REMOVE" || $filename eq "APT-REMOVE") {
|
||||
if ( open(FILEOUT,">$destfile") ) {
|
||||
print FILEOUT $pressremove;
|
||||
close FILEOUT;
|
||||
- system("chmod a+x $destfile");
|
||||
+ system("chmod a+x $qdestfile");
|
||||
}
|
||||
} elsif($filename eq "DPKG-PURGE" || $filename eq "APT-PURGE") {
|
||||
if ( open(FILEOUT,">$destfile") ) {
|
||||
print FILEOUT $presspurge;
|
||||
close FILEOUT;
|
||||
- system("chmod a+x $destfile");
|
||||
+ system("chmod a+x $qdestfile");
|
||||
}
|
||||
} elsif($filename eq "DPKG-RECONFIGURE") {
|
||||
if ( open(FILEOUT,">$destfile") ) {
|
||||
print FILEOUT $pressreconfigure;
|
||||
close FILEOUT;
|
||||
- system("chmod a+x $destfile");
|
||||
+ system("chmod a+x $qdestfile");
|
||||
}
|
||||
} elsif($filename eq "APT-REINSTALL") {
|
||||
if ( open(FILEOUT,">$destfile") ) {
|
||||
@@ -209,41 +219,43 @@
|
||||
if ( open(FILEOUT,">$destfile") ) {
|
||||
print FILEOUT $pressunselect;
|
||||
close FILEOUT;
|
||||
- system("chmod a+x $destfile");
|
||||
+ system("chmod a+x $qdestfile");
|
||||
}
|
||||
} else {
|
||||
- $filename=~s!^CONTENTS!!;
|
||||
- system("cat $filename > $destfile");
|
||||
+ $qfilename=~s!^CONTENTS!!;
|
||||
+ system("cat $qfilename > $qdestfile");
|
||||
}
|
||||
}
|
||||
|
||||
sub run
|
||||
{
|
||||
my($archive,$filename)=@_;
|
||||
+ my $qarchive = quote($archive);
|
||||
+ my $qfilename = quote($filename);
|
||||
if($filename eq "DPKG-REMOVE") {
|
||||
- system("dpkg --remove $archive");
|
||||
+ system("dpkg --remove $qarchive");
|
||||
} elsif($filename eq "APT-REMOVE") {
|
||||
- system("apt-get remove $archive");
|
||||
+ system("apt-get remove $qarchive");
|
||||
} elsif($filename eq "DPKG-PURGE") {
|
||||
- system("dpkg --purge $archive");
|
||||
+ system("dpkg --purge $qarchive");
|
||||
} elsif($filename eq "APT-PURGE") {
|
||||
- system("apt-get --purge remove $archive");
|
||||
+ system("apt-get --purge remove $qarchive");
|
||||
} elsif($filename eq "DPKG-REPACK") {
|
||||
- system("dpkg-repack $archive");
|
||||
+ system("dpkg-repack $qarchive");
|
||||
} elsif($filename eq "DPKG-SELECT") {
|
||||
- system("echo $archive install | dpkg --set-selections");
|
||||
+ system("echo $aqrchive install | dpkg --set-selections");
|
||||
} elsif($filename eq "DPKG-UNSELECT") {
|
||||
- system("echo $archive deinstall | dpkg --set-selections");
|
||||
+ system("echo $qarchive deinstall | dpkg --set-selections");
|
||||
} elsif($filename eq "APT-REINSTALL") {
|
||||
- system("apt-get -u --reinstall install $archive");
|
||||
+ system("apt-get -u --reinstall install $qarchive");
|
||||
} elsif($filename eq "DPKG-RECONFIGURE") {
|
||||
- system("dpkg-reconfigure $archive");
|
||||
+ system("dpkg-reconfigure $qarchive");
|
||||
} elsif($filename=~/^DEBIAN/) {
|
||||
$filename=~s!^DEBIAN!!;
|
||||
- system("/var/lib/dpkg/info/$archive.$filename");
|
||||
+ system("/var/lib/dpkg/info/$qarchive.$qfilename");
|
||||
} else {
|
||||
- $filename=~s!^CONTENTS!!;
|
||||
- system($filename);
|
||||
+ $qfilename=~s!^CONTENTS!!;
|
||||
+ system($qfilename);
|
||||
}
|
||||
}
|
||||
|
@ -1,74 +0,0 @@
|
||||
--- vfs/extfs/dpkg.in.orig Tue Dec 24 12:33:46 2002
|
||||
+++ vfs/extfs/dpkg.in Fri Sep 10 16:09:30 2004
|
||||
@@ -6,6 +6,12 @@
|
||||
#
|
||||
# dpkg
|
||||
|
||||
+sub quote {
|
||||
+ $_ = shift(@_);
|
||||
+ s/([^\w\/.+-])/\\$1/g;
|
||||
+ return($_);
|
||||
+}
|
||||
+
|
||||
sub bt
|
||||
{
|
||||
my ($dt) = @_;
|
||||
@@ -183,20 +189,21 @@
|
||||
sub copyout
|
||||
{
|
||||
my($archive,$filename) = @_;
|
||||
+ my $qfilename = quote($filename);
|
||||
if( $archive eq 'DIVERSIONS' ) {
|
||||
- system("dpkg-divert --list > $filename 2>/dev/null");
|
||||
+ system("dpkg-divert --list > $qfilename 2>/dev/null");
|
||||
} elsif( $archive eq 'ARCHITECTURE' ) {
|
||||
- system("dpkg-architecture > $filename 2>/dev/null");
|
||||
+ system("dpkg-architecture > $qfilename 2>/dev/null");
|
||||
} elsif( $archive eq 'LIST' ) {
|
||||
- system("dpkg -l '*' > $filename 2>/dev/null");
|
||||
+ system("dpkg -l '*' > $qfilename 2>/dev/null");
|
||||
} elsif( $archive eq 'AUDIT' ) {
|
||||
- system("dpkg --audit > $filename 2>/dev/null");
|
||||
+ system("dpkg --audit > $qfilename 2>/dev/null");
|
||||
} elsif( $archive eq 'GET-SELECTIONS' ) {
|
||||
- system("dpkg --get-selections > $filename 2>/dev/null");
|
||||
+ system("dpkg --get-selections > $qfilename 2>/dev/null");
|
||||
} elsif( $archive eq 'STATUS' ) {
|
||||
- system("cp /var/lib/dpkg/status $filename");
|
||||
+ system("cp /var/lib/dpkg/status $qfilename");
|
||||
} elsif( $archive eq 'AVAILABLE' ) {
|
||||
- system("cp /var/lib/dpkg/available $filename");
|
||||
+ system("cp /var/lib/dpkg/available $qfilename");
|
||||
} elsif( $archive eq 'CONFIGURE' ) {
|
||||
open O, ">$filename";
|
||||
print O $pressconfigure;
|
||||
@@ -224,8 +231,9 @@
|
||||
sub copyin
|
||||
{
|
||||
my($archive,$filename) = @_;
|
||||
+ my $qfilename = quote($filename);
|
||||
if( $archive =~ /\.deb$/ ) {
|
||||
- system("dpkg -i $filename>/dev/null");
|
||||
+ system("dpkg -i $qfilename>/dev/null");
|
||||
} else {
|
||||
die "extfs: cannot create regular file \`$archive\': Permission denied\n";
|
||||
}
|
||||
@@ -252,12 +260,12 @@
|
||||
{
|
||||
my($archive) = @_;
|
||||
if( $archive =~ /\.debd?$/ ) {
|
||||
- my $name = $archive;
|
||||
- $name =~ s%.*/%%g;
|
||||
- $name =~ s%_.*%%g;
|
||||
- system("if dpkg -s $name | grep ^Status | grep -qs config-files; \
|
||||
- then dpkg --purge $name>/dev/null; \
|
||||
- else dpkg --remove $name>/dev/null; fi");
|
||||
+ my $qname = quote($archive);
|
||||
+ $qname =~ s%.*/%%g;
|
||||
+ $qname =~ s%_.*%%g;
|
||||
+ system("if dpkg -s $qname | grep ^Status | grep -qs config-files; \
|
||||
+ then dpkg --purge $qname>/dev/null; \
|
||||
+ else dpkg --remove $qname>/dev/null; fi");
|
||||
die("extfs: $archive: Operation not permitted\n") if $? != 0;
|
||||
} else {
|
||||
die "extfs: $archive: Operation not permitted\n";
|
@ -1,26 +0,0 @@
|
||||
--- vfs/extfs.c.orig Thu Dec 26 03:42:59 2002
|
||||
+++ vfs/extfs.c Tue Jun 15 03:15:09 2004
|
||||
@@ -888,8 +888,7 @@
|
||||
if (!*info)
|
||||
return NULL;
|
||||
|
||||
- strncpy(dir.dent.d_name, (*info)->name, MC_MAXPATHLEN);
|
||||
- dir.dent.d_name[MC_MAXPATHLEN] = 0;
|
||||
+ g_strlcpy(dir.dent.d_name, (*info)->name, MC_MAXPATHLEN);
|
||||
|
||||
compute_namelen(&dir.dent);
|
||||
*info = (*info)->next_in_dir;
|
||||
@@ -1002,10 +1001,10 @@
|
||||
if (entry == NULL)
|
||||
return -1;
|
||||
if (!S_ISLNK (entry->inode->mode)) ERRNOR (EINVAL, -1);
|
||||
- if (size > (i = strlen (entry->inode->linkname))) {
|
||||
- size = i;
|
||||
+ if (size < (i = strlen (entry->inode->linkname))) {
|
||||
+ i = size;
|
||||
}
|
||||
- strncpy (buf, entry->inode->linkname, i);
|
||||
+ memcpy (buf, entry->inode->linkname, i);
|
||||
return i;
|
||||
}
|
||||
|
@ -1,21 +0,0 @@
|
||||
--- vfs/fish.c.orig Thu Dec 26 08:21:43 2002
|
||||
+++ vfs/fish.c Tue Jun 15 03:15:09 2004
|
||||
@@ -96,8 +96,7 @@
|
||||
if (strncmp(answer, "### ", 4)) {
|
||||
was_garbage = 1;
|
||||
if (string_buf) {
|
||||
- strncpy(string_buf, answer, string_len - 1);
|
||||
- *(string_buf + string_len - 1) = 0;
|
||||
+ g_strlcpy(string_buf, answer, string_len);
|
||||
}
|
||||
} else return decode_reply(answer+4, was_garbage);
|
||||
}
|
||||
@@ -668,7 +667,7 @@
|
||||
{
|
||||
int r;
|
||||
|
||||
- r = command (me, super, WAIT_REPLY, cmd);
|
||||
+ r = command (me, super, WAIT_REPLY, "%s", cmd);
|
||||
vfs_add_noncurrent_stamps (&vfs_fish_ops, (vfsid) super, NULL);
|
||||
if (r != COMPLETE) ERRNOR (E_REMOTE, -1);
|
||||
if (flags & OPT_FLUSH)
|
52
misc/mc/files/patch-vfs-ftpfs-bug3727
Normal file
52
misc/mc/files/patch-vfs-ftpfs-bug3727
Normal file
@ -0,0 +1,52 @@
|
||||
--- vfs/ftpfs.c.orig 2004-11-03 03:54:00.000000000 +0200
|
||||
+++ vfs/ftpfs.c 2005-02-07 17:34:25.000000000 +0200
|
||||
@@ -316,6 +316,8 @@
|
||||
va_list ap;
|
||||
char *cmdstr;
|
||||
int status, cmdlen;
|
||||
+ static int retry = 0;
|
||||
+ static int level = 0; /* ftpfs_login_server() use ftpfs_command() */
|
||||
|
||||
va_start (ap, fmt);
|
||||
cmdstr = g_strdup_vprintf (fmt, ap);
|
||||
@@ -343,7 +345,6 @@
|
||||
code = 421;
|
||||
|
||||
if (errno == EPIPE) { /* Remote server has closed connection */
|
||||
- static int level = 0; /* ftpfs_login_server() use ftpfs_command() */
|
||||
if (level == 0) {
|
||||
level = 1;
|
||||
status = ftpfs_reconnect (me, super);
|
||||
@@ -359,14 +360,30 @@
|
||||
disable_interrupt_key ();
|
||||
return TRANSIENT;
|
||||
}
|
||||
+ retry = 0;
|
||||
ok:
|
||||
- g_free (cmdstr);
|
||||
disable_interrupt_key ();
|
||||
|
||||
if (wait_reply)
|
||||
- return ftpfs_get_reply (me, SUP.sock,
|
||||
+ {
|
||||
+ status = ftpfs_get_reply (me, SUP.sock,
|
||||
(wait_reply & WANT_STRING) ? reply_str : NULL,
|
||||
sizeof (reply_str) - 1);
|
||||
+ if ((wait_reply & WANT_STRING) && !retry && !level && code == 421)
|
||||
+ {
|
||||
+ retry = 1;
|
||||
+ level = 1;
|
||||
+ status = ftpfs_reconnect (me, super);
|
||||
+ level = 0;
|
||||
+ if (status && (write (SUP.sock, cmdstr, cmdlen) > 0)) {
|
||||
+ goto ok;
|
||||
+ }
|
||||
+ }
|
||||
+ retry = 0;
|
||||
+ g_free (cmdstr);
|
||||
+ return status;
|
||||
+ }
|
||||
+ g_free (cmdstr);
|
||||
return COMPLETE;
|
||||
}
|
||||
|
@ -1,131 +0,0 @@
|
||||
--- vfs/ftpfs.c.orig Thu Dec 26 08:21:43 2002
|
||||
+++ vfs/ftpfs.c Tue Jun 15 03:15:09 2004
|
||||
@@ -266,8 +266,7 @@
|
||||
switch (sscanf(answer, "%d", &code)){
|
||||
case 0:
|
||||
if (string_buf) {
|
||||
- strncpy (string_buf, answer, string_len - 1);
|
||||
- *(string_buf + string_len - 1) = 0;
|
||||
+ g_strlcpy (string_buf, answer, string_len);
|
||||
}
|
||||
code = 500;
|
||||
return 5;
|
||||
@@ -286,8 +285,7 @@
|
||||
}
|
||||
}
|
||||
if (string_buf){
|
||||
- strncpy (string_buf, answer, string_len - 1);
|
||||
- *(string_buf + string_len - 1) = 0;
|
||||
+ g_strlcpy (string_buf, answer, string_len);
|
||||
}
|
||||
return code / 100;
|
||||
}
|
||||
@@ -321,28 +319,28 @@
|
||||
va_list ap;
|
||||
char *str, *fmt_str;
|
||||
int status;
|
||||
- int sock = SUP.sock;
|
||||
+ int cmdlen;
|
||||
|
||||
va_start (ap, fmt);
|
||||
fmt_str = g_strdup_vprintf (fmt, ap);
|
||||
va_end (ap);
|
||||
|
||||
- status = strlen (fmt_str);
|
||||
- str = g_realloc (fmt_str, status + 3);
|
||||
- strcpy (str + status, "\r\n");
|
||||
+ cmdlen = strlen (fmt_str);
|
||||
+ str = g_realloc (fmt_str, cmdlen + 3);
|
||||
+ strcpy (str + cmdlen, "\r\n");
|
||||
|
||||
if (logfile){
|
||||
if (strncmp (str, "PASS ", 5) == 0){
|
||||
fputs ("PASS <Password not logged>\r\n", logfile);
|
||||
} else
|
||||
- fwrite (str, status + 2, 1, logfile);
|
||||
+ fwrite (str, cmdlen + 2, 1, logfile);
|
||||
|
||||
fflush (logfile);
|
||||
}
|
||||
|
||||
got_sigpipe = 0;
|
||||
enable_interrupt_key ();
|
||||
- status = write (SUP.sock, str, status + 2);
|
||||
+ status = write (SUP.sock, str, cmdlen + 2);
|
||||
|
||||
if (status < 0){
|
||||
code = 421;
|
||||
@@ -353,7 +351,7 @@
|
||||
level = 1;
|
||||
status = reconnect (me, super);
|
||||
level = 0;
|
||||
- if (status && write (SUP.sock, str, status + 2) > 0)
|
||||
+ if (status && write (SUP.sock, str, cmdlen + 2) > 0)
|
||||
goto ok;
|
||||
}
|
||||
got_sigpipe = 1;
|
||||
@@ -367,7 +365,7 @@
|
||||
disable_interrupt_key ();
|
||||
|
||||
if (wait_reply)
|
||||
- return get_reply (me, sock, (wait_reply & WANT_STRING) ? reply_str : NULL, sizeof (reply_str)-1);
|
||||
+ return get_reply (me, SUP.sock, (wait_reply & WANT_STRING) ? reply_str : NULL, sizeof (reply_str)-1);
|
||||
return COMPLETE;
|
||||
}
|
||||
|
||||
@@ -903,23 +901,29 @@
|
||||
int data, len = sizeof(data_addr);
|
||||
struct protoent *pe;
|
||||
|
||||
- getsockname(SUP.sock, (struct sockaddr *) &data_addr, &len);
|
||||
- data_addr.sin_port = 0;
|
||||
-
|
||||
pe = getprotobyname("tcp");
|
||||
if (pe == NULL)
|
||||
ERRNOR (EIO, -1);
|
||||
+again:
|
||||
+ if (getsockname(SUP.sock, (struct sockaddr *) &data_addr, &len) == -1)
|
||||
+ ERRNOR (EIO, -1);
|
||||
+ data_addr.sin_port = 0;
|
||||
+
|
||||
data = socket (AF_INET, SOCK_STREAM, pe->p_proto);
|
||||
if (data < 0)
|
||||
ERRNOR (EIO, -1);
|
||||
|
||||
if (SUP.use_passive_connection){
|
||||
- if ((SUP.use_passive_connection = setup_passive (me, super, data, &data_addr)))
|
||||
+ if (setup_passive (me, super, data, &data_addr))
|
||||
return data;
|
||||
|
||||
SUP.use_source_route = 0;
|
||||
SUP.use_passive_connection = 0;
|
||||
print_vfs_message (_("ftpfs: could not setup passive mode"));
|
||||
+
|
||||
+ /* data or data_addr may be damaged by setup_passive */
|
||||
+ close (data);
|
||||
+ goto again;
|
||||
}
|
||||
|
||||
/* If passive setup fails, fallback to active connections */
|
||||
@@ -971,11 +975,12 @@
|
||||
data = s;
|
||||
else {
|
||||
data = accept (s, (struct sockaddr *)&from, &fromlen);
|
||||
- close(s);
|
||||
if (data < 0) {
|
||||
my_errno = errno;
|
||||
+ close(s);
|
||||
return -1;
|
||||
}
|
||||
+ close(s);
|
||||
}
|
||||
disable_interrupt_key();
|
||||
return data;
|
||||
@@ -1019,6 +1024,7 @@
|
||||
gettimeofday (&tim, NULL);
|
||||
if (tim.tv_sec > start_tim.tv_sec + ABORT_TIMEOUT) {
|
||||
/* server keeps sending, drop the connection and reconnect */
|
||||
+ close (dsock);
|
||||
reconnect (me, super);
|
||||
return;
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
--- vfs/mcfs.c.orig Fri Nov 15 13:49:39 2002
|
||||
+++ vfs/mcfs.c Tue Jun 15 03:15:09 2004
|
||||
@@ -756,8 +756,7 @@
|
||||
return NULL;
|
||||
}
|
||||
dirent_dest = mcfs_readdir_data.dent.d_name;
|
||||
- strncpy (dirent_dest, mcfs_info->current->text, MC_MAXPATHLEN);
|
||||
- dirent_dest[MC_MAXPATHLEN] = 0;
|
||||
+ g_strlcpy (dirent_dest, mcfs_info->current->text, MC_MAXPATHLEN);
|
||||
cached_lstat_info = &mcfs_info->current->my_stat;
|
||||
mcfs_info->current = mcfs_info->current->next;
|
||||
|
||||
@@ -985,9 +984,12 @@
|
||||
if (!rpc_get (mc->sock, RPC_STRING, &stat_str, RPC_END))
|
||||
return the_error (-1, EIO);
|
||||
|
||||
- strncpy (buf, stat_str, size);
|
||||
+ status = strlen (stat_str);
|
||||
+ if (status < size)
|
||||
+ size = status;
|
||||
+ memcpy (buf, stat_str, size);
|
||||
g_free (stat_str);
|
||||
- return strlen (buf);
|
||||
+ return size;
|
||||
}
|
||||
|
||||
static int
|
@ -1,11 +0,0 @@
|
||||
--- vfs/mcserv.c.orig Sun Dec 8 07:12:30 2002
|
||||
+++ vfs/mcserv.c Tue Jun 15 03:15:09 2004
|
||||
@@ -582,7 +582,7 @@
|
||||
int n;
|
||||
|
||||
rpc_get (msock, RPC_STRING, &file, RPC_END);
|
||||
- n = readlink (file, buffer, 2048);
|
||||
+ n = readlink (file, buffer, 2048 - 1);
|
||||
send_status (n, errno);
|
||||
if (n >= 0) {
|
||||
buffer[n] = 0;
|
@ -1,28 +0,0 @@
|
||||
--- vfs/names.c.orig Fri Nov 15 12:19:34 2002
|
||||
+++ vfs/names.c Tue Jun 15 03:15:09 2004
|
||||
@@ -31,6 +31,7 @@
|
||||
#include <stdio.h>
|
||||
#include <pwd.h>
|
||||
#include <grp.h>
|
||||
+#include <glib.h>
|
||||
|
||||
#include "names.h"
|
||||
|
||||
@@ -59,7 +60,7 @@
|
||||
|
||||
if (uname[0] != saveuname[0] /* Quick test w/o proc call */
|
||||
||0 != strncmp (uname, saveuname, TUNMLEN)) {
|
||||
- strncpy (saveuname, uname, TUNMLEN);
|
||||
+ g_strlcpy (saveuname, uname, TUNMLEN);
|
||||
pw = getpwnam (uname);
|
||||
if (pw) {
|
||||
saveuid = pw->pw_uid;
|
||||
@@ -77,7 +78,7 @@
|
||||
|
||||
if (gname[0] != savegname[0] /* Quick test w/o proc call */
|
||||
||0 != strncmp (gname, savegname, TUNMLEN)) {
|
||||
- strncpy (savegname, gname, TUNMLEN);
|
||||
+ g_strlcpy (savegname, gname, TUNMLEN);
|
||||
gr = getgrnam (gname);
|
||||
if (gr) {
|
||||
savegid = gr->gr_gid;
|
@ -1,35 +0,0 @@
|
||||
--- vfs/samba/lib/util.c.orig Fri Nov 15 23:02:44 2002
|
||||
+++ vfs/samba/lib/util.c Tue Jun 15 03:15:09 2004
|
||||
@@ -114,7 +114,7 @@
|
||||
char *tmpdir(void)
|
||||
{
|
||||
char *p;
|
||||
- if ((p = getenv("TMPDIR"))) {
|
||||
+ if ((p = getenv("MC_TMPDIR")) || (p = getenv("TMPDIR"))) {
|
||||
return p;
|
||||
}
|
||||
return "/tmp";
|
||||
@@ -1885,20 +1885,17 @@
|
||||
|
||||
char *nis_map = (char *)lp_nis_home_map_name();
|
||||
|
||||
- char nis_domain[NIS_MAXNAMELEN + 1];
|
||||
char buffer[NIS_MAXATTRVAL + 1];
|
||||
nis_result *result;
|
||||
nis_object *object;
|
||||
entry_obj *entry;
|
||||
|
||||
- strncpy(nis_domain, (char *)nis_local_directory(), NIS_MAXNAMELEN);
|
||||
- nis_domain[NIS_MAXNAMELEN] = '\0';
|
||||
-
|
||||
- DEBUG(5, ("NIS+ Domain: %s\n", nis_domain));
|
||||
+ DEBUG(5, ("NIS+ Domain: %s\n", (char *)nis_local_directory()));
|
||||
|
||||
if (strcmp(user_name, last_key))
|
||||
{
|
||||
- slprintf(buffer, sizeof(buffer)-1, "[%s=%s]%s.%s", "key", user_name, nis_map, nis_domain);
|
||||
+ slprintf(buffer, sizeof(buffer)-1, "[%s=%s]%s.%s", "key", user_name, nis_map,
|
||||
+ (char *)nis_local_directory());
|
||||
DEBUG(5, ("NIS+ querystring: %s\n", buffer));
|
||||
|
||||
if (result = nis_list(buffer, RETURN_RESULT, NULL, NULL))
|
@ -1,12 +0,0 @@
|
||||
--- vfs/smbfs.c.orig Sat Jan 25 03:37:29 2003
|
||||
+++ vfs/smbfs.c Tue Jun 15 03:15:09 2004
|
||||
@@ -785,8 +785,7 @@
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
- strncpy(dirent_dest, smbfs_info->current->text, MC_MAXPATHLEN);
|
||||
- dirent_dest[MC_MAXPATHLEN] = 0;
|
||||
+ g_strlcpy(dirent_dest, smbfs_info->current->text, MC_MAXPATHLEN);
|
||||
smbfs_info->current = smbfs_info->current->next;
|
||||
|
||||
compute_namelen(&smbfs_readdir_data.dent);
|
@ -1,49 +0,0 @@
|
||||
--- vfs/tar.c.orig Sun Dec 8 07:12:30 2002
|
||||
+++ vfs/tar.c Tue Jun 15 03:15:09 2004
|
||||
@@ -264,19 +264,26 @@
|
||||
char *bp, *data;
|
||||
int size, written;
|
||||
|
||||
+ if (hstat.st_size > MC_MAXPATHLEN) {
|
||||
+ message_1s (1, MSG_ERROR, _("Inconsistent tar archive"));
|
||||
+ return STATUS_BADCHECKSUM;
|
||||
+ }
|
||||
+
|
||||
longp = ((header->header.linkflag == LF_LONGNAME)
|
||||
? &next_long_name
|
||||
: &next_long_link);
|
||||
|
||||
if (*longp)
|
||||
g_free (*longp);
|
||||
- bp = *longp = g_malloc (hstat.st_size);
|
||||
+ bp = *longp = g_malloc (hstat.st_size + 1);
|
||||
|
||||
for (size = hstat.st_size;
|
||||
size > 0;
|
||||
size -= written) {
|
||||
data = get_next_record (archive, tard)->charptr;
|
||||
if (data == NULL) {
|
||||
+ g_free (*longp);
|
||||
+ *longp = NULL;
|
||||
message_1s (1, MSG_ERROR, _("Unexpected EOF on archive file"));
|
||||
return STATUS_BADCHECKSUM;
|
||||
}
|
||||
@@ -287,10 +294,14 @@
|
||||
memcpy (bp, data, written);
|
||||
bp += written;
|
||||
}
|
||||
-#if 0
|
||||
- if (hstat.st_size > 1)
|
||||
- bp [hstat.st_size - 1] = 0; /* just to make sure */
|
||||
-#endif
|
||||
+
|
||||
+ if (bp - *longp == MC_MAXPATHLEN && bp[-1] != '\0') {
|
||||
+ g_free (*longp);
|
||||
+ *longp = NULL;
|
||||
+ message_1s (1, MSG_ERROR, _("Inconsistent tar archive"));
|
||||
+ return STATUS_BADCHECKSUM;
|
||||
+ }
|
||||
+ *bp = 0;
|
||||
goto recurse;
|
||||
} else {
|
||||
struct stat st;
|
@ -1,12 +0,0 @@
|
||||
--- vfs/vfs.c.orig Thu Dec 26 08:21:43 2002
|
||||
+++ vfs/vfs.c Tue Jun 15 03:15:09 2004
|
||||
@@ -637,8 +637,7 @@
|
||||
{
|
||||
const char *cwd = mc_return_cwd();
|
||||
|
||||
- strncpy (buffer, cwd, size - 1);
|
||||
- buffer [size - 1] = 0;
|
||||
+ g_strlcpy (buffer, cwd, size);
|
||||
return buffer;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
bin/mcmfmt
|
||||
bin/mc
|
||||
%%EDITOR%%bin/mcedit
|
||||
bin/mcmfmt
|
||||
bin/mcview
|
||||
bin/midc
|
||||
share/locale/az/LC_MESSAGES/mc.mo
|
||||
@ -19,7 +19,9 @@ share/locale/hu/LC_MESSAGES/mc.mo
|
||||
share/locale/it/LC_MESSAGES/mc.mo
|
||||
share/locale/ja/LC_MESSAGES/mc.mo
|
||||
share/locale/ko/LC_MESSAGES/mc.mo
|
||||
share/locale/lt/LC_MESSAGES/mc.mo
|
||||
share/locale/lv/LC_MESSAGES/mc.mo
|
||||
share/locale/mn/LC_MESSAGES/mc.mo
|
||||
share/locale/nl/LC_MESSAGES/mc.mo
|
||||
share/locale/no/LC_MESSAGES/mc.mo
|
||||
share/locale/pl/LC_MESSAGES/mc.mo
|
||||
@ -29,6 +31,7 @@ share/locale/ro/LC_MESSAGES/mc.mo
|
||||
share/locale/ru/LC_MESSAGES/mc.mo
|
||||
share/locale/sk/LC_MESSAGES/mc.mo
|
||||
share/locale/sl/LC_MESSAGES/mc.mo
|
||||
share/locale/sr/LC_MESSAGES/mc.mo
|
||||
share/locale/sv/LC_MESSAGES/mc.mo
|
||||
share/locale/ta/LC_MESSAGES/mc.mo
|
||||
share/locale/tr/LC_MESSAGES/mc.mo
|
||||
@ -54,6 +57,7 @@ share/mc/extfs/debd
|
||||
share/mc/extfs/dpkg
|
||||
share/mc/extfs/extfs.ini
|
||||
share/mc/extfs/hp48
|
||||
share/mc/extfs/iso9660
|
||||
share/mc/extfs/lslR
|
||||
share/mc/extfs/mailfs
|
||||
share/mc/extfs/patchfs
|
||||
@ -78,6 +82,7 @@ share/mc/mc.hint.it
|
||||
share/mc/mc.hint.nl
|
||||
share/mc/mc.hint.pl
|
||||
share/mc/mc.hint.ru
|
||||
share/mc/mc.hint.sr
|
||||
share/mc/mc.hint.uk
|
||||
share/mc/mc.hint.zh
|
||||
share/mc/mc.hlp
|
||||
@ -86,21 +91,29 @@ share/mc/mc.hlp.hu
|
||||
share/mc/mc.hlp.it
|
||||
share/mc/mc.hlp.pl
|
||||
share/mc/mc.hlp.ru
|
||||
share/mc/mc.hlp.sr
|
||||
share/mc/mc.lib
|
||||
share/mc/mc.menu
|
||||
share/mc/mc.menu.sr
|
||||
share/mc/syntax/Syntax
|
||||
share/mc/syntax/ada95.syntax
|
||||
share/mc/syntax/aspx.syntax
|
||||
share/mc/syntax/assembler.syntax
|
||||
share/mc/syntax/c.syntax
|
||||
share/mc/syntax/changelog.syntax
|
||||
share/mc/syntax/cs.syntax
|
||||
share/mc/syntax/diff.syntax
|
||||
share/mc/syntax/dos.syntax
|
||||
share/mc/syntax/eiffel.syntax
|
||||
share/mc/syntax/fortran.syntax
|
||||
share/mc/syntax/html.syntax
|
||||
share/mc/syntax/idl.syntax
|
||||
share/mc/syntax/java.syntax
|
||||
share/mc/syntax/js.syntax
|
||||
share/mc/syntax/latex.syntax
|
||||
share/mc/syntax/lisp.syntax
|
||||
share/mc/syntax/lsm.syntax
|
||||
share/mc/syntax/lua.syntax
|
||||
share/mc/syntax/m4.syntax
|
||||
share/mc/syntax/mail.syntax
|
||||
share/mc/syntax/makefile.syntax
|
||||
@ -111,7 +124,9 @@ share/mc/syntax/pascal.syntax
|
||||
share/mc/syntax/perl.syntax
|
||||
share/mc/syntax/php.syntax
|
||||
share/mc/syntax/po.syntax
|
||||
share/mc/syntax/povray.syntax
|
||||
share/mc/syntax/python.syntax
|
||||
share/mc/syntax/ruby.syntax
|
||||
share/mc/syntax/sh.syntax
|
||||
share/mc/syntax/slang.syntax
|
||||
share/mc/syntax/smalltalk.syntax
|
||||
@ -123,29 +138,7 @@ share/mc/syntax/tcl.syntax
|
||||
share/mc/syntax/texinfo.syntax
|
||||
share/mc/syntax/unknown.syntax
|
||||
share/mc/syntax/xml.syntax
|
||||
share/mc/term/README.xterm
|
||||
share/mc/term/ansi.ti
|
||||
share/mc/term/linux.ti
|
||||
share/mc/term/vt100.ti
|
||||
share/mc/term/xterm.ad
|
||||
share/mc/term/xterm.tcap
|
||||
share/mc/term/xterm.ti
|
||||
@dirrm share/mc/syntax
|
||||
@dirrm share/mc/term
|
||||
@dirrm share/mc/extfs
|
||||
@dirrm share/mc/bin
|
||||
@dirrm share/mc
|
||||
@unexec rmdir %D/share/locale/wa/LC_MESSAGES 2>/dev/null || true
|
||||
@unexec rmdir %D/share/locale/wa 2>/dev/null || true
|
||||
@unexec rmdir %D/man/es/man1 2>/dev/null || true
|
||||
@unexec rmdir %D/man/es/cat1 2>/dev/null || true
|
||||
@unexec rmdir %D/man/es 2>/dev/null || true
|
||||
@unexec rmdir %D/man/hu/man1 2>/dev/null || true
|
||||
@unexec rmdir %D/man/hu/cat1 2>/dev/null || true
|
||||
@unexec rmdir %D/man/hu 2>/dev/null || true
|
||||
@unexec rmdir %D/man/it/man1 2>/dev/null || true
|
||||
@unexec rmdir %D/man/it/cat1 2>/dev/null || true
|
||||
@unexec rmdir %D/man/it 2>/dev/null || true
|
||||
@unexec rmdir %D/man/pl/man1 2>/dev/null || true
|
||||
@unexec rmdir %D/man/pl/cat1 2>/dev/null || true
|
||||
@unexec rmdir %D/man/pl 2>/dev/null || true
|
||||
|
Loading…
Reference in New Issue
Block a user