Gentoo Archives: gentoo-commits

From: "Zac Medico (zmedico)" <zmedico@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] portage r13783 - main/trunk/pym/portage
Date: Sat, 04 Jul 2009 19:55:14
Message-Id: E1MNBKK-0006qN-P7@stork.gentoo.org
1 Author: zmedico
2 Date: 2009-07-04 19:55:12 +0000 (Sat, 04 Jul 2009)
3 New Revision: 13783
4
5 Modified:
6 main/trunk/pym/portage/util.py
7 Log:
8 Make atomic_ofstream() use codecs.open() for py3k compatible unicode handling
9 when mode does not contain 'b'.
10
11
12 Modified: main/trunk/pym/portage/util.py
13 ===================================================================
14 --- main/trunk/pym/portage/util.py 2009-07-04 19:33:30 UTC (rev 13782)
15 +++ main/trunk/pym/portage/util.py 2009-07-04 19:55:12 UTC (rev 13783)
16 @@ -869,6 +869,11 @@
17 """Opens a temporary filename.pid in the same directory as filename."""
18 ObjectProxy.__init__(self)
19 object.__setattr__(self, '_aborted', False)
20 + if 'b' in mode:
21 + open_func = open
22 + else:
23 + open_func = codecs.open
24 + kargs.setdefault('errors', 'replace')
25
26 if follow_links:
27 canonical_path = os.path.realpath(filename)
28 @@ -876,7 +881,7 @@
29 tmp_name = "%s.%i" % (canonical_path, os.getpid())
30 try:
31 object.__setattr__(self, '_file',
32 - open(tmp_name, mode=mode, **kargs))
33 + open_func(tmp_name, mode=mode, **kargs))
34 return
35 except IOError, e:
36 if canonical_path == filename:
37 @@ -887,7 +892,8 @@
38
39 object.__setattr__(self, '_real_name', filename)
40 tmp_name = "%s.%i" % (filename, os.getpid())
41 - object.__setattr__(self, '_file', open(tmp_name, mode=mode, **kargs))
42 + object.__setattr__(self, '_file',
43 + open_func(tmp_name, mode=mode, **kargs))
44
45 def _get_target(self):
46 return object.__getattribute__(self, '_file')
47 @@ -946,10 +952,10 @@
48 if base_destructor is not None:
49 base_destructor(self)
50
51 -def write_atomic(file_path, content):
52 +def write_atomic(file_path, content, **kwargs):
53 f = None
54 try:
55 - f = atomic_ofstream(file_path)
56 + f = atomic_ofstream(file_path, **kwargs)
57 f.write(content)
58 f.close()
59 except (IOError, OSError), e: