]> granicus.if.org Git - curl/commitdiff
Allow ftp server alternate replies to contain backslash-escaped control
authorDan Fandrich <dan@coneharvesters.com>
Thu, 23 Aug 2007 23:24:39 +0000 (23:24 +0000)
committerDan Fandrich <dan@coneharvesters.com>
Thu, 23 Aug 2007 23:24:39 +0000 (23:24 +0000)
characters.

tests/FILEFORMAT
tests/ftpserver.pl

index b22ee84217f20726103a59fba1c9e734026f4092..2a3a16eaf585753bf4e0cab3e5a728cc82d3822a 100644 (file)
@@ -90,7 +90,8 @@ Special-commands for the server.
 For FTP, these are supported:
 
 REPLY [command] [return value] [response string]
- - Changes how the server responds to the [command]
+ - Changes how the server responds to the [command]. [response string] is
+   evaluated as a perl string, so it can contain embedded \r\n, for example.
 COUNT [command] [num]
  - Do the REPLY change for [command] only [num] times and then go back to the
    built-in approach
index 73fabcca4b99401710e607957341232d05c2aca6..e32c019bd230459ab79360b7ad8aee89a324cba8 100644 (file)
@@ -677,14 +677,13 @@ my %customreply;
 my %customcount;
 my %delayreply;
 sub customize {
-    undef %customreply;
-
     $nosave = 0; # default is to save as normal
     $controldelay = 0; # default is no delaying the responses
     $retrweirdo = 0;
     $retrnosize = 0;
     $pasvbadip = 0;
     $nosave = 0;
+    %customreply = ();
     %customcount = ();
     %delayreply = ();
 
@@ -695,7 +694,7 @@ sub customize {
 
     while(<CUSTOM>) {
         if($_ =~ /REPLY ([A-Z]+) (.*)/) {
-            $customreply{$1}=$2;
+            $customreply{$1}=eval "qq{$2}";
             logmsg "FTPD: set custom reply for $1\n";
         }
         if($_ =~ /COUNT ([A-Z]+) (.*)/) {