+ def control_facc(self):
+ """Controls file access.
+ This is relevant only for file provided through the configuration file
+ since files provided on the command line are already checked with
+ argparse.
+ """
+ ok = True
+ for op, ftochk in [('logfile', self.config.get('log','logfile')),
+ ('pidfile', self.config.get('daemon', 'pidfile')),]:
+ if not ftochk:
+ continue
+ if isdir(ftochk):
+ self.log.critical('Need a file not a directory: "{}"'.format(ftochk))
+ ok = False
+ if not exists(ftochk):
+ # Is parent directory writable then
+ filedir = dirname(ftochk)
+ if not access(filedir, W_OK):
+ self.log.critical('no write access to "{0}" ({1})'.format(filedir, op))
+ ok = False
+ else:
+ if not access(ftochk, W_OK):
+ self.log.critical('no write access to "{0}" ({1})'.format(ftochk, op))
+ ok = False
+ if not ok:
+ if exists(self.conf_file):
+ self.log.warning('Try to check the configuration file: {}'.format(self.conf_file))
+ sys.exit(2)
+