fixes en melon-watch-dir para correr en hyades
authorjorgormo <jorgormo@node001.(none)>
Mon, 30 Jun 2008 14:53:43 +0000 (16:53 +0200)
committerjorgormo <jorgormo@node001.(none)>
Mon, 30 Jun 2008 14:53:43 +0000 (16:53 +0200)
melon-watch-dir.py

index 45a9420e7a27ceee05453f562d35f5a1dca752d9..3a3cd0a571ec34e342f2042b4f3f571587296b1b 100755 (executable)
@@ -4,30 +4,47 @@ import sys
 import time
 import os
 import tempfile
+import random
 
 dst_dirname = sys.argv[1]
 name = sys.argv[2]
 dirname = sys.argv[3]
 total = int(sys.argv[4])
-user = os.getlogin()
+try:
+       user = os.getlogin()
+except:
+       user = "jorgormo"
 hostname = os.uname()[1]
 
-if "NamedTemporaryFile" in dir(tempfile):
-       outfile=tempfile.NamedTemporaryFile("w+b",-1,".melon","log-",dst_dirname)
-else:
-       outfile=file(dst_dirname + os.sep + tempfile.mktemp(".melon"), "w+b", 0)
+# this is not secure, race conditions are possible
+def tempname(suffix, preffix, dirname):
+       l = os.listdir(dirname)
+       name = preffix+("%05d"%random.randint(0,99999))+suffix
+       while name in l:
+               name = preffix+("%05d"%random.randint(0,99999))+suffix
+       return dirname+os.sep+name
 
-old_count = -1
-count = len(os.listdir(dirname))
 
-while count < total:
-       if old_count != count:
-               outfile.write("!!%s&%s&%s&%s&%d!!\n"%(name, user, hostname, dirname+" "+str(count)+"/"+str(total), (100*count)/total))
-               outfile.flush()
-       time.sleep(2)
-       old_count = count
+if "NamedTemporaryFile" in dir(tempfile):
+       outfile=tempfile.NamedTemporaryFile("w+b",-1,"","melon-",dst_dirname)
+else:
+       outfilename=tempname(".melon", "log-", dst_dirname)
+       outfile=file(outfilename, "w+b", 0)
+try:
+       old_count = -1
        count = len(os.listdir(dirname))
 
+       while count < total:
+               if old_count != count:
+                       outfile.write("!!%s&%s&%s&%s&%d!!\n"%(name, user, hostname, dirname+" "+str(count)+"/"+str(total), (100*count)/total))
+                       outfile.flush()
+               time.sleep(2)
+               old_count = count
+               count = len(os.listdir(dirname))
+except:
+       if "NamedTemporaryFile" not in dir(tempfile):
+               os.remove(outfilename)
+