From 4ec450d3c7fa320fbdd5abf8843137b52a8a6614 Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Tue, 9 Aug 2011 18:38:57 -0500 Subject: [PATCH] make this work on 2.4 --- Parser/asdl_c.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/Parser/asdl_c.py b/Parser/asdl_c.py index b4c31c34f5e..ce8425aa7c6 100755 --- a/Parser/asdl_c.py +++ b/Parser/asdl_c.py @@ -1,10 +1,10 @@ #! /usr/bin/env python """Generate C code from an ASDL description.""" -from __future__ import with_statement # TO DO # handle fields that have a type but no name +import errno import os import sys import StringIO @@ -1170,11 +1170,23 @@ def main(srcfile): f.write("mod_ty PyAST_obj2mod(PyObject* ast, PyArena* arena, int mode);\n") f.write("int PyAST_Check(PyObject* obj);\n") s = f.getvalue() - with open(p, "r") as fp: - write = fp.read() != s + write = True + try: + fp = open(p, "r") + except IOError as e: + if e.errno != errno.ENOENT: + raise + else: + try: + write = fp.read() != s + finally: + fp.close() if write: - with open(p, "w") as fp: - f.write(s) + fp = open(p, "w") + try: + fp.write(s) + finally: + fp.close() if SRC_DIR: p = os.path.join(SRC_DIR, str(mod.name) + "-ast.c")