summaryrefslogtreecommitdiff
path: root/summainlib.py
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2013-02-09 10:44:03 +0000
committerLars Wirzenius <liw@liw.fi>2013-02-09 10:44:03 +0000
commit2f35fb1fd3888bf84f586b093b450b26af86c8df (patch)
treeb08345f2c183f142fe8e91ff548afdd4706b29da /summainlib.py
parentf1bf6c79cfba0117a0f4cf94b851200b079447a9 (diff)
downloadsummain-2f35fb1fd3888bf84f586b093b450b26af86c8df.tar.gz
Encode binary xattr values
Diffstat (limited to 'summainlib.py')
-rw-r--r--summainlib.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/summainlib.py b/summainlib.py
index 07895e1..e148760 100644
--- a/summainlib.py
+++ b/summainlib.py
@@ -14,6 +14,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+import base64
import grp
import hashlib
import hmac
@@ -220,7 +221,14 @@ class FilesystemObject(object):
def _compute_xattrs(self): # pragma: no cover
if len(self._xattrs) == 0:
return ''
- parts = [' %s=%s' % (k, self._xattrs[k]) for k in self._xattrs]
+
+ def quote(s):
+ if s.isalnum():
+ return '"%s"' % s
+ else:
+ return '0s' + base64.urlsafe_b64encode(s)
+
+ parts = [' %s=%s' % (k, quote(self._xattrs[k])) for k in self._xattrs]
return '\n' + '\n'.join(parts)
def format_time(self, secs, nsecs):