diff --git a/src/calibre/constants.py b/src/calibre/constants.py index 6ecdf93084..49ce83864e 100644 --- a/src/calibre/constants.py +++ b/src/calibre/constants.py @@ -84,6 +84,9 @@ if plugins is None: # }}} # config_dir {{{ + +CONFIG_DIR_MODE = 0700 + if os.environ.has_key('CALIBRE_CONFIG_DIRECTORY'): config_dir = os.path.abspath(os.environ['CALIBRE_CONFIG_DIRECTORY']) elif iswindows: @@ -98,7 +101,11 @@ elif isosx: else: bdir = os.path.abspath(os.path.expanduser(os.environ.get('XDG_CONFIG_HOME', '~/.config'))) config_dir = os.path.join(bdir, 'calibre') - if not os.access(config_dir, os.W_OK): + try: + os.makedirs(config_dir, mode=CONFIG_DIR_MODE) + except: + pass + if not os.access(config_dir, os.W_OK) or not os.access(config_dir, os.X_OK): print 'No write acces to', config_dir, 'using a temporary dir instead' import tempfile, atexit config_dir = tempfile.mkdtemp(prefix='calibre-config-') diff --git a/src/calibre/utils/config.py b/src/calibre/utils/config.py index 432018e9b3..a890d653b6 100644 --- a/src/calibre/utils/config.py +++ b/src/calibre/utils/config.py @@ -13,14 +13,12 @@ from optparse import OptionParser as _OptionParser from optparse import IndentedHelpFormatter from collections import defaultdict -from calibre.constants import terminal_controller, config_dir, \ +from calibre.constants import terminal_controller, config_dir, CONFIG_DIR_MODE, \ __appname__, __version__, __author__ from calibre.utils.lock import LockError, ExclusiveFile plugin_dir = os.path.join(config_dir, 'plugins') -CONFIG_DIR_MODE = 0700 - def make_config_dir(): if not os.path.exists(plugin_dir): os.makedirs(plugin_dir, mode=CONFIG_DIR_MODE)