Carl Read wrote:
> Grrrr!

Grrrr is right!

You were correct in that the error occurs in the parse-dir-list function in the 
ftp protocol.  The code closes the "port/sub-port" and then tries to use that 
port/sub-port specification.  Whoops!

The corrected function is as follows (as usual watch for line wraps):

parse-dir-list: func [] [
    all [not passive not proxy listen-port port/sub-port: first listen-port] 
    if all [not passive proxy listen-port] [
        net-utils/accept-proxy port/sub-port
    ] 
    temp: 'list 
    file-list: make string! 2000 
    while [line: system/words/pick port/sub-port 1] [append file-list join 
line "^/"] 
    net-utils/confirm/multiline port/locals/cmd-port transfer-check 
    if empty? file-list [
        data-connect 
        port/locals/dir-cache: system/words/copy [] 
        insert port/locals/cmd-port "NLST" 
        if (first system/words/pick port/locals/cmd-port 1) <> #"5" [
            while [line: system/words/pick port/sub-port 1] [
            append file-list join line "^/"
        ] 
        temp: 'nlist 
        net-utils/confirm/multiline port/locals/cmd-port transfer-check
    ]
    system/words/close port/sub-port 
    port/locals/dir-cache: parse-files file-list temp 
    foreach temp [%./ %../] [
        if loc: find port/locals/dir-cache temp [loop 2 [system/words/remove 
loc]]
    ] 
    port/state/tail: length? port/locals/dir-cache
]

My bindology skills are rusty at best, so perhaps a bindologist would be so 
kind as to create a patch for this.  The way I do it, when I forget bindology 
(which is usually within two days of learning it), is to print the network 
scheme to disk, patch the scheme and then read it back in.

One way to do this is to:

1) at a console prompt:
    type "echo %/path-to-file/ftp-scheme.txt"
    type "probe system/schemes/ftp"
    type "quit"
2) open the ftp-scheme.txt file and change the opening to read:
  system/schemes/ftp: make object! [
    scheme: 'FTP
    host: none ...
3) replace the parse-dir-list function
4) clean the ">> " from the end of the file and save.
5) this file may be then pasted into a console or "do" the file (adding a rebol 
header)

I look forward to seeing the "bind" version of the patch (I don't have time to 
refigure out the bind command again).

Hope that helps!

--Scott Jones
-- 
To unsubscribe from this list, just send an email to
[EMAIL PROTECTED] with unsubscribe as the subject.

Reply via email to