summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Utils.py
diff options
context:
space:
mode:
authorAlexander Sulfrian <alexander.sulfrian@fu-berlin.de>2015-07-22 16:23:07 +0200
committerAlexander Sulfrian <alexander.sulfrian@fu-berlin.de>2015-07-22 17:14:45 +0200
commit06a6fce3f2f5c78a12937d4e52de3d824e3dd5e0 (patch)
tree137450fe991e4b774efce3ea613dceed42a8099b /src/lib/Bcfg2/Utils.py
parent0bd8cd384bbbb2062d2850923dfb33dc9c25a0b9 (diff)
downloadbcfg2-06a6fce3f2f5c78a12937d4e52de3d824e3dd5e0.tar.gz
bcfg2-06a6fce3f2f5c78a12937d4e52de3d824e3dd5e0.tar.bz2
bcfg2-06a6fce3f2f5c78a12937d4e52de3d824e3dd5e0.zip
Utils: Generalize is_string from POSIX/File
is_string from POSIX/File could be used in other situations, too. So we move it to Utils, use it from Lint/MergeFiles and replace a custom is_binary function.
Diffstat (limited to 'src/lib/Bcfg2/Utils.py')
-rw-r--r--src/lib/Bcfg2/Utils.py16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/lib/Bcfg2/Utils.py b/src/lib/Bcfg2/Utils.py
index 10057b63e..64d0d8b93 100644
--- a/src/lib/Bcfg2/Utils.py
+++ b/src/lib/Bcfg2/Utils.py
@@ -330,3 +330,19 @@ class classproperty(object): # pylint: disable=C0103
def __get__(self, instance, owner):
return self.getter(owner)
+
+
+def is_string(strng, encoding):
+ """ Returns true if the string contains no ASCII control
+ characters and can be decoded from the specified encoding. """
+ 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
+ except: # pylint: disable=W0702
+ return False