mirror of
				https://git.proxmox.com/git/proxmox
				synced 2025-10-31 07:34:02 +00:00 
			
		
		
		
	sys: formatting
Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
This commit is contained in:
		
							parent
							
								
									c280f73793
								
							
						
					
					
						commit
						b213dbb7c8
					
				| @ -1,4 +1,3 @@ | ||||
| 
 | ||||
| use std::borrow::Borrow; | ||||
| use std::os::unix::io::{AsRawFd, FromRawFd, IntoRawFd, RawFd}; | ||||
| 
 | ||||
| @ -107,4 +106,3 @@ impl AsRawFd for FdRef { | ||||
|         unsafe { *(self as *const Self as *const RawFd) } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
|  | ||||
| @ -97,8 +97,11 @@ impl Iterator for ReadDir { | ||||
| 
 | ||||
|     fn next(&mut self) -> Option<Self::Item> { | ||||
|         self.iter.next().map(|res| { | ||||
|             res.map(|entry| ReadDirEntry { entry, parent_fd: self.dir_fd }) | ||||
|                 .map_err(Error::from) | ||||
|             res.map(|entry| ReadDirEntry { | ||||
|                 entry, | ||||
|                 parent_fd: self.dir_fd, | ||||
|             }) | ||||
|             .map_err(Error::from) | ||||
|         }) | ||||
|     } | ||||
| } | ||||
| @ -157,7 +160,6 @@ where | ||||
|     Ok(()) | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| /// Helper trait to provide a combinators for directory entry iterators.
 | ||||
| pub trait FileIterOps<T, E> | ||||
| where | ||||
| @ -255,7 +257,7 @@ where | ||||
|                     } | ||||
|                     // file did not match regex or isn't valid utf-8
 | ||||
|                     continue; | ||||
|                 }, | ||||
|                 } | ||||
|                 Err(_) => return Some(item), | ||||
|             } | ||||
|         } | ||||
| @ -288,24 +290,34 @@ fn do_lock_dir_noblock( | ||||
|     would_block_msg: &str, | ||||
|     exclusive: bool, | ||||
| ) -> Result<DirLockGuard, Error> { | ||||
|     let mut handle = Dir::open(path, OFlag::O_RDONLY, Mode::empty()) | ||||
|         .map_err(|err| { | ||||
|             format_err!("unable to open {} directory {:?} for locking - {}", what, path, err) | ||||
|         })?; | ||||
|     let mut handle = Dir::open(path, OFlag::O_RDONLY, Mode::empty()).map_err(|err| { | ||||
|         format_err!( | ||||
|             "unable to open {} directory {:?} for locking - {}", | ||||
|             what, | ||||
|             path, | ||||
|             err | ||||
|         ) | ||||
|     })?; | ||||
| 
 | ||||
|     // acquire in non-blocking mode, no point in waiting here since other
 | ||||
|     // backups could still take a very long time
 | ||||
|     crate::fs::lock_file(&mut handle, exclusive, Some(std::time::Duration::from_nanos(0))) | ||||
|         .map_err(|err| { | ||||
|             format_err!( | ||||
|                 "unable to acquire lock on {} directory {:?} - {}", what, path, | ||||
|                 if err.would_block() { | ||||
|                     String::from(would_block_msg) | ||||
|                 } else { | ||||
|                     err.to_string() | ||||
|                 } | ||||
|             ) | ||||
|         })?; | ||||
|     crate::fs::lock_file( | ||||
|         &mut handle, | ||||
|         exclusive, | ||||
|         Some(std::time::Duration::from_nanos(0)), | ||||
|     ) | ||||
|     .map_err(|err| { | ||||
|         format_err!( | ||||
|             "unable to acquire lock on {} directory {:?} - {}", | ||||
|             what, | ||||
|             path, | ||||
|             if err.would_block() { | ||||
|                 String::from(would_block_msg) | ||||
|             } else { | ||||
|                 err.to_string() | ||||
|             } | ||||
|         ) | ||||
|     })?; | ||||
| 
 | ||||
|     Ok(handle) | ||||
| } | ||||
|  | ||||
| @ -81,23 +81,21 @@ pub fn flistxattr(fd: RawFd) -> Result<ListXAttr, nix::errno::Errno> { | ||||
|     // it gets dynamically increased until big enough.
 | ||||
|     let mut size = 256; | ||||
|     let mut buffer = vec::undefined(size); | ||||
|     let mut bytes = unsafe { | ||||
|         libc::flistxattr(fd, buffer.as_mut_ptr() as *mut libc::c_char, buffer.len()) | ||||
|     }; | ||||
|     let mut bytes = | ||||
|         unsafe { libc::flistxattr(fd, buffer.as_mut_ptr() as *mut libc::c_char, buffer.len()) }; | ||||
|     while bytes < 0 { | ||||
|         let err = Errno::last(); | ||||
|         match err { | ||||
|             Errno::ERANGE => { | ||||
|                 // Buffer was not big enough to fit the list, retry with double the size
 | ||||
|                 size = size.checked_mul(2).ok_or(Errno::ENOMEM)?; | ||||
|             }, | ||||
|             } | ||||
|             _ => return Err(err), | ||||
|         } | ||||
|         // Retry to read the list with new buffer
 | ||||
|         buffer.resize(size, 0); | ||||
|         bytes = unsafe { | ||||
|             libc::flistxattr(fd, buffer.as_mut_ptr() as *mut libc::c_char, buffer.len()) | ||||
|         }; | ||||
|         bytes = | ||||
|             unsafe { libc::flistxattr(fd, buffer.as_mut_ptr() as *mut libc::c_char, buffer.len()) }; | ||||
|     } | ||||
|     buffer.truncate(bytes as usize); | ||||
| 
 | ||||
| @ -112,7 +110,12 @@ pub fn fgetxattr(fd: RawFd, name: &CStr) -> Result<Vec<u8>, nix::errno::Errno> { | ||||
|     let mut size = 256; | ||||
|     let mut buffer = vec::undefined(size); | ||||
|     let mut bytes = unsafe { | ||||
|         libc::fgetxattr(fd, name.as_ptr(), buffer.as_mut_ptr() as *mut core::ffi::c_void, buffer.len()) | ||||
|         libc::fgetxattr( | ||||
|             fd, | ||||
|             name.as_ptr(), | ||||
|             buffer.as_mut_ptr() as *mut core::ffi::c_void, | ||||
|             buffer.len(), | ||||
|         ) | ||||
|     }; | ||||
|     while bytes < 0 { | ||||
|         let err = Errno::last(); | ||||
| @ -120,12 +123,17 @@ pub fn fgetxattr(fd: RawFd, name: &CStr) -> Result<Vec<u8>, nix::errno::Errno> { | ||||
|             Errno::ERANGE => { | ||||
|                 // Buffer was not big enough to fit the value, retry with double the size
 | ||||
|                 size = size.checked_mul(2).ok_or(Errno::ENOMEM)?; | ||||
|             }, | ||||
|             } | ||||
|             _ => return Err(err), | ||||
|         } | ||||
|         buffer.resize(size, 0); | ||||
|         bytes = unsafe { | ||||
|             libc::fgetxattr(fd, name.as_ptr() as *const libc::c_char, buffer.as_mut_ptr() as *mut core::ffi::c_void, buffer.len()) | ||||
|             libc::fgetxattr( | ||||
|                 fd, | ||||
|                 name.as_ptr() as *const libc::c_char, | ||||
|                 buffer.as_mut_ptr() as *mut core::ffi::c_void, | ||||
|                 buffer.len(), | ||||
|             ) | ||||
|         }; | ||||
|     } | ||||
|     buffer.resize(bytes as usize, 0); | ||||
| @ -136,7 +144,13 @@ pub fn fgetxattr(fd: RawFd, name: &CStr) -> Result<Vec<u8>, nix::errno::Errno> { | ||||
| /// Set an extended attribute on a file descriptor.
 | ||||
| pub fn fsetxattr(fd: RawFd, name: &CStr, data: &[u8]) -> Result<(), nix::errno::Errno> { | ||||
|     let result = unsafe { | ||||
|         libc::fsetxattr(fd, name.as_ptr(), data.as_ptr() as *const libc::c_void, data.len(), 0) | ||||
|         libc::fsetxattr( | ||||
|             fd, | ||||
|             name.as_ptr(), | ||||
|             data.as_ptr() as *const libc::c_void, | ||||
|             data.len(), | ||||
|             0, | ||||
|         ) | ||||
|     }; | ||||
|     if result < 0 { | ||||
|         return Err(Errno::last()); | ||||
| @ -156,7 +170,7 @@ pub fn is_security_capability(name: &CStr) -> bool { | ||||
| 
 | ||||
| pub fn is_acl(name: &CStr) -> bool { | ||||
|     name.to_bytes() == xattr_acl_access().to_bytes() | ||||
|     || name.to_bytes() == xattr_acl_default().to_bytes() | ||||
|         || name.to_bytes() == xattr_acl_default().to_bytes() | ||||
| } | ||||
| 
 | ||||
| /// Check if the passed name buffer starts with a valid xattr namespace prefix
 | ||||
| @ -203,7 +217,10 @@ mod tests { | ||||
|         assert!(fsetxattr(fd, c_str!("user.empty"), b"").is_ok()); | ||||
| 
 | ||||
|         if nix::unistd::Uid::current() != nix::unistd::ROOT { | ||||
|             assert_eq!(fsetxattr(fd, c_str!("trusted.attribute0"), b"value0"), Err(Errno::EPERM)); | ||||
|             assert_eq!( | ||||
|                 fsetxattr(fd, c_str!("trusted.attribute0"), b"value0"), | ||||
|                 Err(Errno::EPERM) | ||||
|             ); | ||||
|         } | ||||
| 
 | ||||
|         let v0 = fgetxattr(fd, c_str!("user.attribute0")).unwrap(); | ||||
| @ -211,7 +228,10 @@ mod tests { | ||||
| 
 | ||||
|         assert_eq!(v0, b"value0".as_ref()); | ||||
|         assert_eq!(v1, b"".as_ref()); | ||||
|         assert_eq!(fgetxattr(fd, c_str!("user.attribute1")), Err(Errno::ENODATA)); | ||||
|         assert_eq!( | ||||
|             fgetxattr(fd, c_str!("user.attribute1")), | ||||
|             Err(Errno::ENODATA) | ||||
|         ); | ||||
| 
 | ||||
|         std::fs::remove_file(&path).unwrap(); | ||||
|     } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Wolfgang Bumiller
						Wolfgang Bumiller