def PyRun_File(space, fp, filename, start, w_globals, w_locals): """This is a simplified interface to PyRun_FileExFlags() below, leaving closeit set to 0 and flags set to NULL.""" BUF_SIZE = 8192 source = "" filename = rffi.charp2str(filename) buf = lltype.malloc(rffi.CCHARP.TO, BUF_SIZE, flavor='raw') try: while True: count = fread(buf, 1, BUF_SIZE, fp) count = rffi.cast(lltype.Signed, count) source += rffi.charpsize2str(buf, count) if count < BUF_SIZE: if feof(fp): break PyErr_SetFromErrno(space, space.w_IOError) finally: lltype.free(buf, flavor='raw') return run_string(space, source, filename, start, w_globals, w_locals)
def PyRun_File(space, fp, filename, start, w_globals, w_locals): """This is a simplified interface to PyRun_FileExFlags() below, leaving closeit set to 0 and flags set to NULL.""" BUF_SIZE = 8192 source = "" filename = rffi.charp2str(filename) with rffi.scoped_alloc_buffer(BUF_SIZE) as buf: while True: try: count = fread(buf.raw, 1, BUF_SIZE, fp) except OSError: PyErr_SetFromErrno(space, space.w_IOError) return count = rffi.cast(lltype.Signed, count) source += rffi.charpsize2str(buf.raw, count) if count < BUF_SIZE: if feof(fp): break PyErr_SetFromErrno(space, space.w_IOError) return run_string(space, source, filename, start, w_globals, w_locals)