Warning: this is an htmlized version!
The original is here, and
the conversion rules are here.
-- tinyftp.lua
-- standalone version
-- by Edrx - version: 2005-12-26

-- Tenho que ser capaz de testar isso com LUA_INIT="".
-- setenv
-- (let ((process-environment `("LUA_INIT=" . ,process-environment)))


-- (find-luasocket20file "src/")
-- (find-luasocket20file "src/ftp.lua")
-- (find-luasocket20file "src/ftp.lua" "function override(t)")

-- (find-eevfile "eev-dev.el" "defun ee-expand")
ee_expand = function (path)
    path = string.gsub(path, "^~$", "$HOME/", 1)
    path = string.gsub(path, "^~/", "$HOME/", 1)
    path = string.gsub(path, "^%$(%w+)", os.getenv, 1)
    return path
  end

readfile = function (fname)
    local f = assert(io.open(fname, "rb"))
    local bigstr = f:read("*a")
    f:close()
    return bigstr
  end
writefile = function (fname, bigstr)
    local f = assert(io.open(fname, "w+b"))
    f:write(bigstr)
    f:close()
  end

fname_nondir = function (str)
    local _, _, nondir = string.find(str, "([^/]*)$")
    return nondir
  end

isdir = function (str) return fname_nondir(str) == "" end
isftp = function (str) return (string.find(str, "ftp://")) end

normalize_fname = normalize_fname or function (str)
    str = ee_expand(str)
    str = gsub(str, "\\", "/")
    str = gsub(str, "^mach1:",
                    "ftp://user1:passwd1@machine1/")
    return str
  end

-- 2005-12-12
-- tinyftp and his lower buddies
-- These functions support three kinds of "filenames": "ftp://...",
-- "-" (for stdin/stdout), and "other" (local files).
-- All ftp transfers are done in binary mode.
-- For simplicity, connections are never reused.

tinyftpwrite = function (fname, stuff)
    fname = normalize_fname(fname)
    if fname == "-"     then io.write(stuff);      return "stdout"
    elseif isftp(fname) then ftp.put(fname..";type=i", stuff); return "ftp" 
    else writefile(fname, stuff)                   return "file"
    end
  end

tinyftpread = function (fname)
    fname = normalize_fname(fname)
    if fname == "-"     then return io.read("*a"), "stdout"
    elseif isftp(fname) then return ftp.get(fname..";type=i"), "ftp"
    else                     return readfile(fname), "file"
    end
  end

tinyftpls = function (fname)
    fname = normalize_fname(fname)
    local t = {}
    local p = url.parse(fname)
    p.command = "list"
    p.sink = ltn12.sink.table(t)
    local r, e = ftp.get(p)
    t = tounix(table.concat(t))
    t = string.gsub(t, "(\nd[^\n]*)", "%1/")  -- add slashes to dirs
    return r and t, e
  end

-- (find-alides "edrx/")
-- (find-alides "src/sync_FOBA_bcorp/")

tinyftpcopy = function (arg1, arg2)
    arg1 = normalize_fname(arg1)
    arg2 = normalize_fname(arg2)
    if isdir(arg2) then
      args2 = arg2 .. fname_nondir(arg1)
    end
    local stuff, inputtype = tinyftpread(arg1)
    local outputtype = tinyftpwrite(arg2, stuff)
    return format("%s -> %d bytes -> %s", inputtype, strlen(stuff), outputtype)
  end

tinyftp = function (arg1, arg2)
    if (arg2 or "") == "" then	       -- if we only got one argument
      if isdir(normalize_fname(arg1))    -- if it is an ftp directory
      then print((tinyftpftpls(arg1)))     -- then list it
      else io.write(tinyftpread(arg1))     -- otherwise cat it
      end
    else        		       -- if we got two arguments
      if arg2 == "-"		         -- if the target is stdout
      then tinyftpcopy(arg1, arg2)	   -- then just cat the input
      else print(tinyftpcopy(arg1, arg2))  -- otherwise print "src -> nbytes -> tgt"
      end
    end
  end

-- Missing: support for "file:///" urls