// cl_fget().

// General includes.
#include "cl_sysdep.h"

// Specification.
#include "cln/string.h"


// Implementation.

#include "cln/io.h"
#include "cl_spushstring.h"

namespace cln {

const cl_string cl_fget (std::istream& stream, char delim)
{
	var cl_spushstring buffer;
	// Handling of eofp is tricky: EOF is reached when (!stream.good()) || (stream.get()==EOF).
	while (stream.good()) {
		var int c = stream.get();
		if (c==EOF)
			break;	// std::ios::eofbit already set
		if (c==delim) {
			stream.unget();
			break;
		}
		buffer.push(c);
	}
	return buffer.contents();
}

}  // namespace cln


syntax highlighted by Code2HTML, v. 0.9.1