[Pkg-mc-commits] r56 - trunk/debian/patches

winnie at alioth.debian.org winnie at alioth.debian.org
Tue Feb 26 15:50:28 UTC 2008


Author: winnie
Date: 2008-02-26 15:50:27 +0000 (Tue, 26 Feb 2008)
New Revision: 56

Added:
   trunk/debian/patches/57_dont_hang_on_errors.patch
Removed:
   trunk/debian/patches/57_abort_on_not_readable_file.patch
Log:
Add patch


Deleted: trunk/debian/patches/57_abort_on_not_readable_file.patch
===================================================================
--- trunk/debian/patches/57_abort_on_not_readable_file.patch	2008-02-26 13:27:36 UTC (rev 55)
+++ trunk/debian/patches/57_abort_on_not_readable_file.patch	2008-02-26 15:50:27 UTC (rev 56)
@@ -1,136 +0,0 @@
---- mc-4.6.2~pre1/vfs/fish.c	2007-08-23 15:16:40.000000000 +0200
-+++ mc-4.6.2~pre1/vfs/fish.c	2008-02-26 13:47:51.000000000 +0100
-@@ -1,7 +1,8 @@
- /* Virtual File System: FISH implementation for transfering files over
-    shell connections.
- 
--   Copyright (C) 1998 The Free Software Foundation
-+   Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-+   2007 Free Software Foundation, Inc.
-    
-    Written by: 1998 Pavel Machek
-    Spaces fix: 2000 Michal Svec
-@@ -355,6 +356,7 @@
-     struct vfs_s_entry *ent = NULL;
-     FILE *logfile;
-     char *quoted_path;
-+    int reply_code;
- 
-     logfile = MEDATA->logfile;
- 
-@@ -365,6 +367,8 @@
-     quoted_path = name_quote (remote_path, 0);
-     fish_command (me, super, NONE,
- 	    "#LIST /%s\n"
-+	    "if ls -1 /%s >/dev/null 2>&1 ;\n"
-+	    "then\n"
- 	    "ls -lLan /%s 2>/dev/null | grep '^[^cbt]' | (\n"
- 	      "while read p l u g s m d y n; do\n"
- 	        "echo \"P$p $u.$g\nS$s\nd$m $d $y\n:$n\n\"\n"
-@@ -375,8 +379,11 @@
- 	        "echo \"P$p $u.$g\nE$a$i\nd$m $d $y\n:$n\n\"\n"
- 	      "done\n"
- 	    ")\n"
--	    "echo '### 200'\n",
--	    remote_path, quoted_path, quoted_path);
-+	    "echo '### 200'\n"
-+	    "else\n"
-+	    "echo '### 500'\n"
-+	    "fi\n",
-+	    remote_path, quoted_path, quoted_path, quoted_path);
-     g_free (quoted_path);
-     ent = vfs_s_generate_entry(me, NULL, dir, 0);
-     while (1) {
-@@ -455,17 +462,21 @@
-     }
-     
-     vfs_s_free_entry (me, ent);
--    me->verrno = E_REMOTE;
--    if (fish_decode_reply(buffer+4, 0) == COMPLETE) {
-+    reply_code = fish_decode_reply(buffer + 4, 0);
-+    if (reply_code == COMPLETE) {
- 	g_free (SUP.cwdir);
- 	SUP.cwdir = g_strdup (remote_path);
- 	print_vfs_message (_("%s: done."), me->name);
- 	return 0;
-+    } else if (reply_code == ERROR) {
-+	me->verrno = EACCES;
-+    } else {
-+	me->verrno = E_REMOTE;
-     }
- 
- error:
-     print_vfs_message (_("%s: failure"), me->name);
--    return 1;
-+    return -1;
- }
- 
- static int
-@@ -618,25 +629,39 @@
-     g_free (name);
-     name = quoted_name;
-     fh->u.fish.append = 0;
-+
-+    /*
-+     * Check whether the remote file is readable by using `dd' to copy 
-+     * a single byte from the remote file to /dev/null. If `dd' completes
-+     * with exit status of 0 use `cat' to send the file contents to the
-+     * standard output (i.e. over the network).
-+     */
-     offset = fish_command (me, FH_SUPER, WANT_STRING,
- 		"#RETR /%s\n"
-+		"if dd if=/%s of=/dev/null bs=1 count=1 2>/dev/null ;\n"
-+		"then\n"
- 		"ls -ln /%s 2>/dev/null | (\n"
- 		  "read p l u g s r\n"
- 		  "echo \"$s\"\n"
- 		")\n"
- 		"echo '### 100'\n"
- 		"cat /%s\n"
--		"echo '### 200'\n", 
--		name, name, name );
-+		"echo '### 200'\n"
-+		"else\n"
-+		"echo '### 500'\n" 
-+		"fi\n",
-+		name, name, name, name );
-     g_free (name);
-     if (offset != PRELIM) ERRNOR (E_REMOTE, 0);
-     fh->linear = LS_LINEAR_OPEN;
-     fh->u.fish.got = 0;
--#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 || (defined _LARGE_FILES && _LARGE_FILES)
--    if (sscanf( reply_str, "%llu", &fh->u.fish.total )!=1)
-+    errno = 0;
-+#if SIZEOF_OFF_T == SIZEOF_LONG
-+    fh->u.fish.total = strtol (reply_str, NULL, 10);
- #else
--    if (sscanf( reply_str, "%u", &fh->u.fish.total )!=1)
-+    fh->u.fish.total = strtoll (reply_str, NULL, 10);
- #endif
-+    if (errno != 0)
- 	ERRNOR (E_REMOTE, 0);
-     return 1;
- }
-@@ -760,7 +785,7 @@
-     POSTFIX(OPT_FLUSH);
- }
- 
--#define FISH_OP(name, chk, string) \
-+#define FISH_OP(name, string) \
- static int fish_##name (struct vfs_class *me, const char *path1, const char *path2) \
- { \
-     char buf[BUF_LARGE]; \
-@@ -786,11 +811,10 @@
-     return fish_send_command(me, super2, buf, OPT_FLUSH); \
- }
- 
--#define XTEST if (bucket1 != bucket2) { ERRNOR (EXDEV, -1); }
--FISH_OP(rename, XTEST, "#RENAME /%s /%s\n"
-+FISH_OP(rename, "#RENAME /%s /%s\n"
- 		       "mv /%s /%s 2>/dev/null\n"
- 		       "echo '### 000'" )
--FISH_OP(link,   XTEST, "#LINK /%s /%s\n"
-+FISH_OP(link,   "#LINK /%s /%s\n"
- 		       "ln /%s /%s 2>/dev/null\n"
- 		       "echo '### 000'" )
- 

Added: trunk/debian/patches/57_dont_hang_on_errors.patch
===================================================================
--- trunk/debian/patches/57_dont_hang_on_errors.patch	                        (rev 0)
+++ trunk/debian/patches/57_dont_hang_on_errors.patch	2008-02-26 15:50:27 UTC (rev 56)
@@ -0,0 +1,127 @@
+diff -Nurwd mc-4.6.2~pre1.orig/vfs/fish.c mc-4.6.2~pre1/vfs/fish.c
+--- mc-4.6.2~pre1.orig/vfs/fish.c	2008-02-26 16:33:07.000000000 +0100
++++ mc-4.6.2~pre1/vfs/fish.c	2008-02-26 16:33:20.000000000 +0100
+@@ -355,6 +356,7 @@
+     struct vfs_s_entry *ent = NULL;
+     FILE *logfile;
+     char *quoted_path;
++    int reply_code;
+ 
+     logfile = MEDATA->logfile;
+ 
+@@ -365,6 +367,8 @@
+     quoted_path = name_quote (remote_path, 0);
+     fish_command (me, super, NONE,
+ 	    "#LIST /%s\n"
++	    "if ls -1 /%s >/dev/null 2>&1 ;\n"
++	    "then\n"
+ 	    "ls -lLan /%s 2>/dev/null | grep '^[^cbt]' | (\n"
+ 	      "while read p l u g s m d y n; do\n"
+ 	        "echo \"P$p $u.$g\nS$s\nd$m $d $y\n:$n\n\"\n"
+@@ -375,8 +379,11 @@
+ 	        "echo \"P$p $u.$g\nE$a$i\nd$m $d $y\n:$n\n\"\n"
+ 	      "done\n"
+ 	    ")\n"
+-	    "echo '### 200'\n",
+-	    remote_path, quoted_path, quoted_path);
++	    "echo '### 200'\n"
++	    "else\n"
++	    "echo '### 500'\n"
++	    "fi\n",
++	    remote_path, quoted_path, quoted_path, quoted_path);
+     g_free (quoted_path);
+     ent = vfs_s_generate_entry(me, NULL, dir, 0);
+     while (1) {
+@@ -455,17 +462,21 @@
+     }
+     
+     vfs_s_free_entry (me, ent);
+-    me->verrno = E_REMOTE;
+-    if (fish_decode_reply(buffer+4, 0) == COMPLETE) {
++    reply_code = fish_decode_reply(buffer + 4, 0);
++    if (reply_code == COMPLETE) {
+ 	g_free (SUP.cwdir);
+ 	SUP.cwdir = g_strdup (remote_path);
+ 	print_vfs_message (_("%s: done."), me->name);
+ 	return 0;
++    } else if (reply_code == ERROR) {
++	me->verrno = EACCES;
++    } else {
++	me->verrno = E_REMOTE;
+     }
+ 
+ error:
+     print_vfs_message (_("%s: failure"), me->name);
+-    return 1;
++    return -1;
+ }
+ 
+ static int
+@@ -618,25 +629,39 @@
+     g_free (name);
+     name = quoted_name;
+     fh->u.fish.append = 0;
++
++    /*
++     * Check whether the remote file is readable by using `dd' to copy 
++     * a single byte from the remote file to /dev/null. If `dd' completes
++     * with exit status of 0 use `cat' to send the file contents to the
++     * standard output (i.e. over the network).
++     */
+     offset = fish_command (me, FH_SUPER, WANT_STRING,
+ 		"#RETR /%s\n"
++		"if dd if=/%s of=/dev/null bs=1 count=1 2>/dev/null ;\n"
++		"then\n"
+ 		"ls -ln /%s 2>/dev/null | (\n"
+ 		  "read p l u g s r\n"
+ 		  "echo \"$s\"\n"
+ 		")\n"
+ 		"echo '### 100'\n"
+ 		"cat /%s\n"
+-		"echo '### 200'\n", 
+-		name, name, name );
++		"echo '### 200'\n"
++		"else\n"
++		"echo '### 500'\n" 
++		"fi\n",
++		name, name, name, name );
+     g_free (name);
+     if (offset != PRELIM) ERRNOR (E_REMOTE, 0);
+     fh->linear = LS_LINEAR_OPEN;
+     fh->u.fish.got = 0;
+-#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS == 64 || (defined _LARGE_FILES && _LARGE_FILES)
+-    if (sscanf( reply_str, "%llu", &fh->u.fish.total )!=1)
++    errno = 0;
++#if SIZEOF_OFF_T == SIZEOF_LONG
++    fh->u.fish.total = strtol (reply_str, NULL, 10);
+ #else
+-    if (sscanf( reply_str, "%u", &fh->u.fish.total )!=1)
++    fh->u.fish.total = strtoll (reply_str, NULL, 10);
+ #endif
++    if (errno != 0)
+ 	ERRNOR (E_REMOTE, 0);
+     return 1;
+ }
+@@ -760,7 +785,7 @@
+     POSTFIX(OPT_FLUSH);
+ }
+ 
+-#define FISH_OP(name, chk, string) \
++#define FISH_OP(name, string) \
+ static int fish_##name (struct vfs_class *me, const char *path1, const char *path2) \
+ { \
+     char buf[BUF_LARGE]; \
+@@ -786,11 +811,10 @@
+     return fish_send_command(me, super2, buf, OPT_FLUSH); \
+ }
+ 
+-#define XTEST if (bucket1 != bucket2) { ERRNOR (EXDEV, -1); }
+-FISH_OP(rename, XTEST, "#RENAME /%s /%s\n"
++FISH_OP(rename, "#RENAME /%s /%s\n"
+ 		       "mv /%s /%s 2>/dev/null\n"
+ 		       "echo '### 000'" )
+-FISH_OP(link,   XTEST, "#LINK /%s /%s\n"
++FISH_OP(link,   "#LINK /%s /%s\n"
+ 		       "ln /%s /%s 2>/dev/null\n"
+ 		       "echo '### 000'" )
+ 




More information about the Pkg-mc-commits mailing list