'Read bytes from self.fp and return or write them to a file.
If the \'fp_out\' argument is None (the default), all bytes read are
returned in a single byte string.
If the \'fp_out\' argument is not None, it must be a file-like
object that supports the \'write\' method; all bytes read will be
written to the fp, and that fp is returned.'

def read_lines_to_boundary(self, fp_out=None):

    endmarker = (self.boundary + ntob('--'))
    delim = ntob('')
    prev_lf = True
    lines = []
    seen = 0
    while True:
        line = self.fp.readline((1 << 16))
        if (not line):
            raise EOFError('Illegal    end    of    multipart    body.')
        if (line.startswith(ntob('--')) and prev_lf):
            strippedline = line.strip()
            if (strippedline == self.boundary):
                break
            if (strippedline == endmarker):
                self.fp.finish()
                break
        line = (delim + line)
        if line.endswith(ntob('\r\n')):
            delim = ntob('\r\n')
            line = line[:(-2)]
            prev_lf = True
        elif line.endswith(ntob('\n')):
            delim = ntob('\n')
            line = line[:(-1)]
            prev_lf = True
        else:
            delim = ntob('')
            prev_lf = False
        if (fp_out is None):
            lines.append(line)
            seen += len(line)
            if (seen > self.maxrambytes):
                fp_out = self.make_file()
                for line in lines:
                    fp_out.write(line)
        else:
            fp_out.write(line)
    if (fp_out is None):
        result = ntob('').join(lines)
        for charset in self.attempt_charsets:
            try:
                result = result.decode(charset)
            except UnicodeDecodeError:
                pass
            else:
                self.charset = charset
                return result
        else:
            raise cherrypy.HTTPError(400, ('The    request    entity    could    not    be    decoded.    The    following    charsets    were    attempted:    %s' % repr(self.attempt_charsets)))
    else:
        fp_out.seek(0)
        return fp_out
