Monday, November 08, 2010 at 12:06 AM.

system.verbs.builtins.tcp.ftp.readResponse

on readResponse (adrconnectiontable) {
	local (buffer = "");
	local (done = false);
	local (i, ct);
	loop { // we read data until the complete command has come in
		buffer = buffer + string (tcp.ftp.read (adrconnectiontable^.commandStream));
		if buffer endsWith cr+lf { // possibly done
			if buffer [4] == " " { // if a space here, we are done
				done = true}
			else {
				ct = sizeOf (buffer);
				for i = ct-1 downTo 1 { // back up, looking for previous line's lf character
					if buffer[i] == lf { // found it!
						if i != ct { // if it's not the first line of multi-line response
							if buffer[i+4] == " " { // a multi-line response is done
								done = true;
								break}}}}}};
		if done {
			break};
		tcp.ftp.yieldProcessor ()};
	buffer = string.replaceAll (buffer, cr+lf, cr);
	buffer = string.popTrailing (buffer, cr);
	if adrconnectiontable^.flmessages {
		msg (buffer)};
	return (buffer)}



This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.