CC-3791: Media Monitor crash when there are media files with non-ascii name in watched folder

This commit is contained in:
Martin Konecny 2012-05-14 19:19:35 -04:00
parent 7d691a44af
commit b79f02ab88
3 changed files with 25 additions and 3 deletions

View File

@ -8,6 +8,7 @@ import os
import signal import signal
import traceback import traceback
import locale import locale
import re
from configobj import ConfigObj from configobj import ConfigObj
@ -47,7 +48,14 @@ def configure_locale():
else: else:
new_locale = default_locale new_locale = default_locale
logger.debug("New locale set to: " + locale.setlocale(locale.LC_ALL, new_locale)) test = re.compile(r"UTF-?8", re.IGNORECASE)
if re.findall(new_locale):
logger.info("New locale set to: %s", locale.setlocale(locale.LC_ALL, new_locale))
else:
logger.info("Invalid locale %s", new_locale)
sys.exit(1)
reload(sys) reload(sys)
sys.setdefaultencoding("UTF-8") sys.setdefaultencoding("UTF-8")

View File

@ -14,6 +14,7 @@ exec 2>&1
export HOME="/var/tmp/airtime/pypo/" export HOME="/var/tmp/airtime/pypo/"
export PYTHONPATH=${api_client_path}:$PYTHONPATH export PYTHONPATH=${api_client_path}:$PYTHONPATH
export LC_ALL=`cat /etc/default/locale | grep "LANG=" | cut -d= -f2 | tr -d "\n\""`
# Note the -u when calling python! we need it to get unbuffered binary stdout and stderr # Note the -u when calling python! we need it to get unbuffered binary stdout and stderr
exec python -u ${pypo_path}${pypo_script} > /var/log/airtime/pypo/py-interpreter.log 2>&1 exec python -u ${pypo_path}${pypo_script} > /var/log/airtime/pypo/py-interpreter.log 2>&1

View File

@ -11,6 +11,7 @@ import logging.config
import logging.handlers import logging.handlers
import locale import locale
import os import os
import re
from Queue import Queue from Queue import Queue
from threading import Lock from threading import Lock
@ -51,6 +52,7 @@ parser.add_option("-c", "--check", help="Check the cached schedule and exit", de
#logging.captureWarnings(True) #logging.captureWarnings(True)
def configure_locale(): def configure_locale():
logger.debug("Before %s", locale.nl_langinfo(locale.CODESET))
current_locale = locale.getlocale() current_locale = locale.getlocale()
if current_locale[1] is None: if current_locale[1] is None:
@ -69,13 +71,24 @@ def configure_locale():
else: else:
new_locale = default_locale new_locale = default_locale
logger.debug("New locale set to: " + locale.setlocale(locale.LC_ALL, new_locale)) test = re.compile(r"UTF-?8", re.IGNORECASE)
if re.findall(new_locale):
logger.info("New locale set to: %s", locale.setlocale(locale.LC_ALL, new_locale))
else:
logger.info("Invalid locale %s", new_locale)
sys.exit(1)
reload(sys)
sys.setdefaultencoding("UTF-8")
current_locale_encoding = locale.getlocale()[1].lower() current_locale_encoding = locale.getlocale()[1].lower()
logger.debug("sys default encoding %s", sys.getdefaultencoding())
logger.debug("After %s", locale.nl_langinfo(locale.CODESET))
if current_locale_encoding not in ['utf-8', 'utf8']: if current_locale_encoding not in ['utf-8', 'utf8']:
logger.error("Need a UTF-8 locale. Currently '%s'. Exiting..." % current_locale_encoding) logger.error("Need a UTF-8 locale. Currently '%s'. Exiting..." % current_locale_encoding)
sys.exit(1)
# configure logging # configure logging
try: try: