summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Client/Tools/POSIX/File.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-21 13:32:51 -0400
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2012-08-21 13:33:20 -0400
commit22016ee593d6047855964734a17120d2aea6b5a5 (patch)
tree92adbca098e89295d4217561ee53454134b781a2 /src/lib/Bcfg2/Client/Tools/POSIX/File.py
parentd6bf20100848dc61b971844e21d24da44b9f65f7 (diff)
downloadbcfg2-22016ee593d6047855964734a17120d2aea6b5a5.tar.gz
bcfg2-22016ee593d6047855964734a17120d2aea6b5a5.tar.bz2
bcfg2-22016ee593d6047855964734a17120d2aea6b5a5.zip
lots of various py3k fixes
Diffstat (limited to 'src/lib/Bcfg2/Client/Tools/POSIX/File.py')
-rw-r--r--src/lib/Bcfg2/Client/Tools/POSIX/File.py24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/lib/Bcfg2/Client/Tools/POSIX/File.py b/src/lib/Bcfg2/Client/Tools/POSIX/File.py
index 1b5535d28..bba72791d 100644
--- a/src/lib/Bcfg2/Client/Tools/POSIX/File.py
+++ b/src/lib/Bcfg2/Client/Tools/POSIX/File.py
@@ -3,10 +3,9 @@ import sys
import stat
import time
import difflib
-import binascii
import tempfile
-from base import POSIXTool
-from Bcfg2.Bcfg2Py3k import unicode
+from .base import POSIXTool
+from Bcfg2.Bcfg2Py3k import unicode, b64encode, b64decode
class POSIXFile(POSIXTool):
__req__ = ['name', 'perms', 'owner', 'group']
@@ -20,6 +19,9 @@ class POSIXFile(POSIXTool):
for char in strng:
if ord(char) < 9 or ord(char) > 13 and ord(char) < 32:
return False
+ if not hasattr(strng, "decode"):
+ # py3k
+ return True
try:
strng.decode(encoding)
return True
@@ -29,13 +31,14 @@ class POSIXFile(POSIXTool):
def _get_data(self, entry):
is_binary = False
if entry.get('encoding', 'ascii') == 'base64':
- tempdata = binascii.a2b_base64(entry.text)
+ tempdata = b64decode(entry.text)
is_binary = True
+
elif entry.get('empty', 'false') == 'true':
tempdata = ''
else:
tempdata = entry.text
- if isinstance(tempdata, unicode):
+ if isinstance(tempdata, unicode) and unicode != str:
try:
tempdata = tempdata.encode(self.setup['encoding'])
except UnicodeEncodeError:
@@ -163,7 +166,7 @@ class POSIXFile(POSIXTool):
if is_binary:
# don't compute diffs if the file is binary
prompt.append('Binary file, no printable diff')
- attrs['current_bfile'] = binascii.b2a_base64(content)
+ attrs['current_bfile'] = b64encode(content)
else:
if interactive:
diff = self._diff(content, self._get_data(entry)[0],
@@ -171,8 +174,10 @@ class POSIXFile(POSIXTool):
filename=entry.get("name"))
if diff:
udiff = ''.join(diff)
+ if hasattr(udiff, "decode"):
+ udiff = udiff.decode(self.setup['encoding'])
try:
- prompt.append(udiff.decode(self.setup['encoding']))
+ prompt.append(udiff)
except UnicodeEncodeError:
prompt.append("Could not encode diff")
else:
@@ -182,10 +187,9 @@ class POSIXFile(POSIXTool):
diff = self._diff(content, self._get_data(entry)[0],
difflib.ndiff, filename=entry.get("name"))
if diff:
- attrs["current_bdiff"] = \
- binascii.b2a_base64("\n".join(diff))
+ attrs["current_bdiff"] = b64encode("\n".join(diff))
else:
- attrs['current_bfile'] = binascii.b2a_base64(content)
+ attrs['current_bfile'] = b64encode(content)
if interactive:
entry.set("qtext", "\n".join(prompt))
if not sensitive: