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: |