Browse Source

Make pycl handle pre-python 2.6

Alex Bennee 16 years ago
parent
commit
6fbf113270
1 changed files with 21 additions and 8 deletions
  1. 21 8
      pycl.py

+ 21 - 8
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 @@ class Handler(BaseHTTPRequestHandler):
             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 @@ class Handler(BaseHTTPRequestHandler):
             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 = {}