mirror of
https://git.freebsd.org/ports.git
synced 2025-07-18 17:59:20 -04:00
- Fix CAN-2004-0226, CAN-2004-0231, CAN-2004-0232.
- Do not use :: in patch file names. - Patch for CAN-2003-1023 is now contained in patch-vfs-direntry.c. - Bump PORTREVISION. Submitted by: Jakub Jelinek <jakub@redhat.com>
This commit is contained in:
parent
2a3ddc3dc7
commit
694ecd186a
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=111487
48 changed files with 3439 additions and 82 deletions
|
@ -7,7 +7,7 @@
|
|||
|
||||
PORTNAME= mc
|
||||
PORTVERSION= 4.6.0
|
||||
PORTREVISION= 9
|
||||
PORTREVISION= 10
|
||||
CATEGORIES= misc shells
|
||||
MASTER_SITES= ${MASTER_SITE_SUNSITE}
|
||||
MASTER_SITE_SUBDIR= utils/file/managers/mc/
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
--- vfs/direntry.c.orig 2002-12-25 21:21:43.000000000 -0500
|
||||
+++ vfs/direntry.c 2004-01-21 09:38:53.000000000 -0500
|
||||
@@ -375,21 +375,31 @@ vfs_s_resolve_symlink (vfs *me, vfs_s_en
|
||||
|
||||
/* 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);
|
|
@ -1,5 +1,5 @@
|
|||
--- doc/ru/Makefile.in.orig Tue Aug 12 01:13:27 2003
|
||||
+++ doc/ru/Makefile.in Tue Aug 12 01:12:53 2003
|
||||
--- 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 @@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
232
misc/mc/files/patch-edit-editcmd.c
Normal file
232
misc/mc/files/patch-edit-editcmd.c
Normal file
|
@ -0,0 +1,232 @@
|
|||
--- 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);
|
||||
|
218
misc/mc/files/patch-edit-syntax.c
Normal file
218
misc/mc/files/patch-edit-syntax.c
Normal file
|
@ -0,0 +1,218 @@
|
|||
--- 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;
|
11
misc/mc/files/patch-lib-cedit.menu
Normal file
11
misc/mc/files/patch-lib-cedit.menu
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- 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
|
37
misc/mc/files/patch-lib-mc.menu
Normal file
37
misc/mc/files/patch-lib-mc.menu
Normal file
|
@ -0,0 +1,37 @@
|
|||
--- 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
|
18
misc/mc/files/patch-mc-wrapper
Normal file
18
misc/mc/files/patch-mc-wrapper
Normal file
|
@ -0,0 +1,18 @@
|
|||
--- lib/mc-wrapper.csh.in.orig Wed Nov 6 00:46:12 2002
|
||||
+++ lib/mc-wrapper.csh.in Tue Jun 15 03:16:29 2004
|
||||
@@ -14,5 +14,5 @@
|
||||
unsetenv MC_PWD
|
||||
endif
|
||||
|
||||
-rm -f "$MC_PWD_FILE"
|
||||
+/bin/rm -f "$MC_PWD_FILE"
|
||||
unsetenv MC_PWD_FILE
|
||||
--- lib/mc-wrapper.sh.in.orig Wed Nov 6 00:46:12 2002
|
||||
+++ lib/mc-wrapper.sh.in Tue Jun 15 03:16:29 2004
|
||||
@@ -9,5 +9,5 @@
|
||||
unset MC_PWD
|
||||
fi
|
||||
|
||||
-rm -f "$MC_PWD_FILE"
|
||||
+/bin/rm -f "$MC_PWD_FILE"
|
||||
unset MC_PWD_FILE
|
75
misc/mc/files/patch-mc.1
Normal file
75
misc/mc/files/patch-mc.1
Normal file
|
@ -0,0 +1,75 @@
|
|||
--- 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
|
1021
misc/mc/files/patch-po
Normal file
1021
misc/mc/files/patch-po
Normal file
File diff suppressed because it is too large
Load diff
18
misc/mc/files/patch-slang-sltermin.c
Normal file
18
misc/mc/files/patch-slang-sltermin.c
Normal file
|
@ -0,0 +1,18 @@
|
|||
--- 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,5 +1,5 @@
|
|||
--- src/Makefile.in.orig Mon Feb 10 02:00:05 2003
|
||||
+++ src/Makefile.in Mon Feb 10 02:00:19 2003
|
||||
--- src/Makefile.in.orig Thu Feb 6 00:09:09 2003
|
||||
+++ src/Makefile.in Tue Jun 15 03:14:17 2004
|
||||
@@ -700,7 +700,7 @@
|
||||
|
||||
install-data-am:
|
11
misc/mc/files/patch-src-background.c
Normal file
11
misc/mc/files/patch-src-background.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- 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)
|
11
misc/mc/files/patch-src-cmd.c
Normal file
11
misc/mc/files/patch-src-cmd.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- 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);
|
11
misc/mc/files/patch-src-command.c
Normal file
11
misc/mc/files/patch-src-command.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- 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");
|
||||
|
30
misc/mc/files/patch-src-complete.c
Normal file
30
misc/mc/files/patch-src-complete.c
Normal file
|
@ -0,0 +1,30 @@
|
|||
--- 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,11 +1,5 @@
|
|||
Index: cons.handler.c
|
||||
===================================================================
|
||||
RCS file: /cvs/gnome/mc/src/cons.handler.c,v
|
||||
retrieving revision 1.13
|
||||
retrieving revision 1.17
|
||||
diff -u -p -r1.13 -r1.17
|
||||
--- src/cons.handler.c 23 Sep 2002 06:43:23 -0000 1.13
|
||||
+++ src/cons.handler.c 5 Mar 2003 09:29:31 -0000 1.17
|
||||
--- 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. */
|
||||
|
@ -79,7 +73,7 @@ diff -u -p -r1.13 -r1.17
|
|||
cons_saver_pid = 0;
|
||||
console_flag = 0;
|
||||
return;
|
||||
@@ -75,9 +86,9 @@ void show_console_contents (int starty,
|
||||
@@ -75,9 +86,9 @@
|
||||
read (pipefd2[0], &bytes, 2);
|
||||
|
||||
/* Read the bytes and output them */
|
||||
|
@ -91,7 +85,7 @@ diff -u -p -r1.13 -r1.17
|
|||
read (pipefd2[0], &message, 1);
|
||||
addch (message);
|
||||
}
|
||||
@@ -86,16 +97,15 @@ void show_console_contents (int starty,
|
||||
@@ -86,16 +97,15 @@
|
||||
read (pipefd2[0], &message, 1);
|
||||
}
|
||||
|
||||
|
@ -111,7 +105,7 @@ diff -u -p -r1.13 -r1.17
|
|||
/* 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 @@ void handle_console (unsigned char actio
|
||||
@@ -104,7 +114,7 @@
|
||||
pipe (pipefd2);
|
||||
/* Get the console saver running */
|
||||
cons_saver_pid = fork ();
|
||||
|
@ -120,7 +114,7 @@ diff -u -p -r1.13 -r1.17
|
|||
/* Cannot fork */
|
||||
/* Delete pipes */
|
||||
close (pipefd1[1]);
|
||||
@@ -112,14 +122,14 @@ void handle_console (unsigned char actio
|
||||
@@ -112,14 +122,14 @@
|
||||
close (pipefd2[1]);
|
||||
close (pipefd2[0]);
|
||||
console_flag = 0;
|
||||
|
@ -137,7 +131,7 @@ diff -u -p -r1.13 -r1.17
|
|||
close (pipefd1[1]);
|
||||
close (pipefd2[0]);
|
||||
waitpid (cons_saver_pid, &status, 0);
|
||||
@@ -152,33 +162,31 @@ void handle_console (unsigned char actio
|
||||
@@ -152,33 +162,31 @@
|
||||
close (1);
|
||||
close (0);
|
||||
_exit (3);
|
||||
|
@ -177,7 +171,7 @@ diff -u -p -r1.13 -r1.17
|
|||
waitpid (cons_saver_pid, &status, 0);
|
||||
console_flag = 0;
|
||||
}
|
||||
@@ -186,221 +194,371 @@ void handle_console (unsigned char actio
|
||||
@@ -186,221 +194,371 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -393,13 +387,11 @@ diff -u -p -r1.13 -r1.17
|
|||
+ case CONSOLE_DONE:
|
||||
+ console_shutdown ();
|
||||
+ break;
|
||||
|
||||
- saved_attr = ioctl(FD_OUT, GIO_ATTR, 0);
|
||||
+
|
||||
+ case CONSOLE_SAVE:
|
||||
+ console_save ();
|
||||
+ break;
|
||||
|
||||
- vidbuf = (unsigned short*) ioctl(FD_OUT, MAPCONS, 0);
|
||||
+
|
||||
+ case CONSOLE_RESTORE:
|
||||
+ console_restore ();
|
||||
+ break;
|
||||
|
@ -408,18 +400,14 @@ diff -u -p -r1.13 -r1.17
|
|||
+ }
|
||||
+}
|
||||
|
||||
- mi.size = sizeof(struct m6845_info);
|
||||
- ioctl(FD_OUT, CONS_6845INFO, &mi);
|
||||
- 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;
|
||||
|
||||
- {
|
||||
- unsigned short* start = vidbuf + mi.screen_top;
|
||||
- memcpy(screen, start, width * height * 2);
|
||||
- }
|
||||
- vidbuf = (unsigned short*) ioctl(FD_OUT, MAPCONS, 0);
|
||||
+ attrset (DEFAULT_COLOR);
|
||||
+ for (i = 0; i < len; i++) {
|
||||
+ if ((i % width) == 0)
|
||||
|
@ -427,9 +415,15 @@ diff -u -p -r1.13 -r1.17
|
|||
+ 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>
|
||||
|
@ -694,7 +688,7 @@ diff -u -p -r1.13 -r1.17
|
|||
{
|
||||
standend ();
|
||||
|
||||
@@ -408,14 +566,28 @@ void show_console_contents (int starty,
|
||||
@@ -408,14 +566,28 @@
|
||||
show_rxvt_contents (starty, begin_line, end_line);
|
||||
return;
|
||||
}
|
53
misc/mc/files/patch-src-dir.c
Normal file
53
misc/mc/files/patch-src-dir.c
Normal file
|
@ -0,0 +1,53 @@
|
|||
--- 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);
|
50
misc/mc/files/patch-src-ext.c
Normal file
50
misc/mc/files/patch-src-ext.c
Normal file
|
@ -0,0 +1,50 @@
|
|||
--- 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;
|
31
misc/mc/files/patch-src-file.c
Normal file
31
misc/mc/files/patch-src-file.c
Normal file
|
@ -0,0 +1,31 @@
|
|||
--- 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 =
|
97
misc/mc/files/patch-src-find.c
Normal file
97
misc/mc/files/patch-src-find.c
Normal file
|
@ -0,0 +1,97 @@
|
|||
--- 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--;
|
||||
}
|
20
misc/mc/files/patch-src-info.c
Normal file
20
misc/mc/files/patch-src-info.c
Normal file
|
@ -0,0 +1,20 @@
|
|||
--- 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
|
||||
}
|
||||
|
11
misc/mc/files/patch-src-main.c
Normal file
11
misc/mc/files/patch-src-main.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- 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;
|
12
misc/mc/files/patch-src-man2hlp.c
Normal file
12
misc/mc/files/patch-src-man2hlp.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
--- 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:
|
12
misc/mc/files/patch-src-profile.c
Normal file
12
misc/mc/files/patch-src-profile.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
--- 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;
|
||||
}
|
52
misc/mc/files/patch-src-screen.c
Normal file
52
misc/mc/files/patch-src-screen.c
Normal file
|
@ -0,0 +1,52 @@
|
|||
--- 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)
|
21
misc/mc/files/patch-src-subshell.c
Normal file
21
misc/mc/files/patch-src-subshell.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
--- 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);
|
183
misc/mc/files/patch-src-user.c
Normal file
183
misc/mc/files/patch-src-user.c
Normal file
|
@ -0,0 +1,183 @@
|
|||
--- 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 {
|
29
misc/mc/files/patch-src-util.c
Normal file
29
misc/mc/files/patch-src-util.c
Normal file
|
@ -0,0 +1,29 @@
|
|||
--- 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);
|
11
misc/mc/files/patch-src-util.h
Normal file
11
misc/mc/files/patch-src-util.h
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- 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);
|
40
misc/mc/files/patch-src-utilunix.c
Normal file
40
misc/mc/files/patch-src-utilunix.c
Normal file
|
@ -0,0 +1,40 @@
|
|||
--- 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;
|
||||
}
|
116
misc/mc/files/patch-src-view.c
Normal file
116
misc/mc/files/patch-src-view.c
Normal file
|
@ -0,0 +1,116 @@
|
|||
--- 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;
|
24
misc/mc/files/patch-src-widget.c
Normal file
24
misc/mc/files/patch-src-widget.c
Normal file
|
@ -0,0 +1,24 @@
|
|||
--- 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;
|
||||
}
|
||||
|
12
misc/mc/files/patch-src-wtools.c
Normal file
12
misc/mc/files/patch-src-wtools.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
--- 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,11 +0,0 @@
|
|||
--- src/subshell.c.orig Tue Jul 15 20:36:24 2003
|
||||
+++ src/subshell.c Tue Jul 15 20:36:56 2003
|
||||
@@ -1166,6 +1166,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);
|
141
misc/mc/files/patch-vfs-cpio.c
Normal file
141
misc/mc/files/patch-vfs-cpio.c
Normal file
|
@ -0,0 +1,141 @@
|
|||
--- 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;
|
||||
}
|
||||
}
|
||||
|
102
misc/mc/files/patch-vfs-direntry.c
Normal file
102
misc/mc/files/patch-vfs-direntry.c
Normal file
|
@ -0,0 +1,102 @@
|
|||
--- 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)
|
351
misc/mc/files/patch-vfs-extfs
Normal file
351
misc/mc/files/patch-vfs-extfs
Normal file
|
@ -0,0 +1,351 @@
|
|||
--- vfs/extfs/deb.in.orig Thu Dec 12 02:57:00 2002
|
||||
+++ vfs/extfs/deb.in Tue Jun 15 03:15:09 2004
|
||||
@@ -149,15 +149,10 @@
|
||||
}
|
||||
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");
|
||||
--- 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"
|
26
misc/mc/files/patch-vfs-extfs.c
Normal file
26
misc/mc/files/patch-vfs-extfs.c
Normal file
|
@ -0,0 +1,26 @@
|
|||
--- 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;
|
||||
}
|
||||
|
21
misc/mc/files/patch-vfs-fish.c
Normal file
21
misc/mc/files/patch-vfs-fish.c
Normal file
|
@ -0,0 +1,21 @@
|
|||
--- 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)
|
131
misc/mc/files/patch-vfs-ftpfs.c
Normal file
131
misc/mc/files/patch-vfs-ftpfs.c
Normal file
|
@ -0,0 +1,131 @@
|
|||
--- 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;
|
||||
}
|
27
misc/mc/files/patch-vfs-mcfs.c
Normal file
27
misc/mc/files/patch-vfs-mcfs.c
Normal file
|
@ -0,0 +1,27 @@
|
|||
--- 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
|
11
misc/mc/files/patch-vfs-mcserv.c
Normal file
11
misc/mc/files/patch-vfs-mcserv.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- 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;
|
28
misc/mc/files/patch-vfs-names.c
Normal file
28
misc/mc/files/patch-vfs-names.c
Normal file
|
@ -0,0 +1,28 @@
|
|||
--- 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;
|
35
misc/mc/files/patch-vfs-samba-lib-util.c
Normal file
35
misc/mc/files/patch-vfs-samba-lib-util.c
Normal file
|
@ -0,0 +1,35 @@
|
|||
--- 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))
|
12
misc/mc/files/patch-vfs-smbfs.c
Normal file
12
misc/mc/files/patch-vfs-smbfs.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
--- 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);
|
49
misc/mc/files/patch-vfs-tar.c
Normal file
49
misc/mc/files/patch-vfs-tar.c
Normal file
|
@ -0,0 +1,49 @@
|
|||
--- 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;
|
12
misc/mc/files/patch-vfs-vfs.c
Normal file
12
misc/mc/files/patch-vfs-vfs.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
--- 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;
|
||||
}
|
||||
|
Loading…
Add table
Reference in a new issue