From cd17687f01420952712a500107e0f93e7ab8d5f8 Mon Sep 17 00:00:00 2001 From: Jacek Antonelli Date: Fri, 15 Aug 2008 23:45:34 -0500 Subject: Second Life viewer sources 1.19.1.0 --- linden/scripts/template_verifier.py | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) (limited to 'linden/scripts/template_verifier.py') diff --git a/linden/scripts/template_verifier.py b/linden/scripts/template_verifier.py index 73bd329..f1f3953 100755 --- a/linden/scripts/template_verifier.py +++ b/linden/scripts/template_verifier.py @@ -145,9 +145,20 @@ def cache_master(master_url): print "Cause: %s" % e return master_cache_url try: - mc = open(master_cache, 'wb') + tmpname = '%s.%d' % (master_cache, os.getpid()) + mc = open(tmpname, 'wb') mc.write(new_master_contents) mc.close() + try: + os.rename(tmpname, master_cache) + except OSError: + # We can't rename atomically on top of an existing file on + # Windows. Unlinking the existing file will fail if the + # file is being held open by a process, but there's only + # so much working around a lame I/O API one can take in + # a single day. + os.unlink(master_cache) + os.rename(tmpname, master_cache) except IOError, e: print "WARNING: Unable to write master message template to %s, proceeding without cache." % master_cache print "Cause: %s" % e @@ -160,12 +171,22 @@ def local_template_filename(): d = os.path.dirname(os.path.realpath(__file__)) return os.path.join(d, 'messages', MESSAGE_TEMPLATE) +def getuser(): + try: + # Unix-only. + import getpass + return getpass.getuser() + except ImportError: + import win32api + return win32api.GetUserName() + def local_master_cache_filename(): """Returns the location of the master template cache (which is in the system tempdir) /master_message_template_cache.msg""" import tempfile d = tempfile.gettempdir() - return os.path.join(d, 'master_message_template_cache.msg') + user = getuser() + return os.path.join(d, 'master_message_template_cache.%s.msg' % user) def run(sysargs): -- cgit v1.1