From 88ed0878a7beb8254ef87d33c8a4a870ff7f4bd8 Mon Sep 17 00:00:00 2001 From: Alex Bennee Date: Mon, 21 Dec 2009 13:03:00 +0000 Subject: [PATCH] Make pycl handle pre-python 2.6 --- servers/pycl.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/servers/pycl.py b/servers/pycl.py index a5a542c..ad82a02 100755 --- a/servers/pycl.py +++ b/servers/pycl.py @@ -17,10 +17,13 @@ import cgi, urlparse import subprocess import tempfile, time -import os +import os, sys from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer +temp_has_delete=True + class Handler(BaseHTTPRequestHandler): + global temp_has_delete def do_GET(self): self.send_error(404, "Not Found: %s" % self.path) @@ -47,14 +50,21 @@ def do_POST(self): print l # write text into file - f = tempfile.NamedTemporaryFile(delete=False, suffix='.txt') + if temp_has_delete==True: + f = tempfile.NamedTemporaryFile(delete=False, suffix='.txt') + fname = f.name + else: + tf = tempfile.mkstemp(suffix='.txt') + f = os.fdopen(tf[0],"w") + fname = tf[1] + f.write(body) f.close() # spawn editor... - print "Spawning editor... ", f.name + print "Spawning editor... ", fname - p = subprocess.Popen(["/usr/bin/emacsclient", "-c", f.name], close_fds=True) + p = subprocess.Popen(["/usr/bin/emacsclient", "-c", fname], close_fds=True) # hold connection open until editor finishes p.wait() @@ -62,25 +72,28 @@ def do_POST(self): self.send_response(200) self.end_headers() - f = file(f.name, 'r') + f = file(fname, 'r') s = f.read() f.close() + try: os.unlink(fname) except : + print "Unable to unlink:", fname pass self.wfile.write(s) except : + print "Error: ", sys.exc_info()[0] self.send_error(404, "Not Found: %s" % self.path) def main(): + global temp_has_delete import platform t = platform.python_version_tuple() if int(t[0]) == 2 and int(t[1]) < 6: - print "Python 2.6+ required" - # uses tempfile.NamedTemporaryFile delete param - return + temp_has_delete = False; + print "Handling lack of delete for NamedTemporaryFile:", temp_has_delete try: httpserv = HTTPServer(('localhost', 9292), Handler) httpserv.table = {}