avoid problems with missing acl.cfg and user.cfg
This commit is contained in:
		@ -540,9 +540,13 @@ pub fn cached_config() -> Result<Arc<AclTree>, Error> {
 | 
			
		||||
            ConfigCache { data: None, last_mtime: 0, last_mtime_nsec: 0 });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let stat = nix::sys::stat::stat(ACL_CFG_FILENAME)?;
 | 
			
		||||
    let stat = match nix::sys::stat::stat(ACL_CFG_FILENAME) {
 | 
			
		||||
        Ok(stat) => Some(stat),
 | 
			
		||||
        Err(nix::Error::Sys(nix::errno::Errno::ENOENT)) => None,
 | 
			
		||||
        Err(err) => bail!("unable to stat '{}' - {}", ACL_CFG_FILENAME, err),
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    { // limit scope
 | 
			
		||||
    if let Some(stat) = stat {
 | 
			
		||||
        let cache = CACHED_CONFIG.read().unwrap();
 | 
			
		||||
        if stat.st_mtime == cache.last_mtime && stat.st_mtime_nsec == cache.last_mtime_nsec {
 | 
			
		||||
            if let Some(ref config) = cache.data {
 | 
			
		||||
@ -555,8 +559,10 @@ pub fn cached_config() -> Result<Arc<AclTree>, Error> {
 | 
			
		||||
    let config = Arc::new(config);
 | 
			
		||||
 | 
			
		||||
    let mut cache = CACHED_CONFIG.write().unwrap();
 | 
			
		||||
    cache.last_mtime = stat.st_mtime;
 | 
			
		||||
    cache.last_mtime_nsec = stat.st_mtime_nsec;
 | 
			
		||||
    if let Some(stat) = stat {
 | 
			
		||||
        cache.last_mtime = stat.st_mtime;
 | 
			
		||||
        cache.last_mtime_nsec = stat.st_mtime_nsec;
 | 
			
		||||
    }
 | 
			
		||||
    cache.data = Some(config.clone());
 | 
			
		||||
 | 
			
		||||
    Ok(config)
 | 
			
		||||
 | 
			
		||||
@ -154,9 +154,13 @@ pub fn cached_config() -> Result<Arc<SectionConfigData>, Error> {
 | 
			
		||||
            ConfigCache { data: None, last_mtime: 0, last_mtime_nsec: 0 });
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    let stat = nix::sys::stat::stat(USER_CFG_FILENAME)?;
 | 
			
		||||
    let stat = match nix::sys::stat::stat(USER_CFG_FILENAME) {
 | 
			
		||||
        Ok(stat) => Some(stat),
 | 
			
		||||
        Err(nix::Error::Sys(nix::errno::Errno::ENOENT)) => None,
 | 
			
		||||
        Err(err) => bail!("unable to stat '{}' - {}", USER_CFG_FILENAME, err),
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    { // limit scope
 | 
			
		||||
    if let Some(stat) = stat {
 | 
			
		||||
        let cache = CACHED_CONFIG.read().unwrap();
 | 
			
		||||
        if stat.st_mtime == cache.last_mtime && stat.st_mtime_nsec == cache.last_mtime_nsec {
 | 
			
		||||
            if let Some(ref config) = cache.data {
 | 
			
		||||
@ -169,8 +173,10 @@ pub fn cached_config() -> Result<Arc<SectionConfigData>, Error> {
 | 
			
		||||
    let config = Arc::new(config);
 | 
			
		||||
 | 
			
		||||
    let mut cache = CACHED_CONFIG.write().unwrap();
 | 
			
		||||
    cache.last_mtime = stat.st_mtime;
 | 
			
		||||
    cache.last_mtime_nsec = stat.st_mtime_nsec;
 | 
			
		||||
    if let Some(stat) = stat {
 | 
			
		||||
        cache.last_mtime = stat.st_mtime;
 | 
			
		||||
        cache.last_mtime_nsec = stat.st_mtime_nsec;
 | 
			
		||||
    }
 | 
			
		||||
    cache.data = Some(config.clone());
 | 
			
		||||
 | 
			
		||||
    Ok(config)
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user