+ fn sweep_old_files(&self, dir: &Path) {
+
+ let mut handle = match nix::dir::Dir::open(
+ dir, nix::fcntl::OFlag::O_RDONLY, nix::sys::stat::Mode::empty()) {
+ Ok(h) => h,
+ Err(_) => return,
+ };
+
+ let rawfd = handle.as_raw_fd();
+
+ let now = unsafe { libc::time(std::ptr::null_mut()) };
+
+ for entry in handle.iter() {
+ match entry {
+ Ok(entry) => {
+ if let Some(file_type) = entry.file_type() {
+ if file_type == nix::dir::Type::File {
+ let filename = entry.file_name();
+ if let Ok(stat) = nix::sys::stat::fstatat(rawfd, filename, nix::fcntl::AtFlags::AT_SYMLINK_NOFOLLOW) {
+ let age = now - stat.st_atime;
+ println!("FOUND {} {:?}", age/(3600*24), filename);
+ if age/(3600*24) >= 2 {
+ println!("UNLINK {} {:?}", age/(3600*24), filename);
+ unsafe { libc::unlinkat(rawfd, filename.as_ptr(), 0); }
+ }
+ }
+ }
+ }
+ }
+ Err(_) => {
+ // fixme ??
+ }
+ }
+ }
+
+ }
+