chiark / gitweb /
LibraryItemNotFound: Include item name in error
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 10 Jan 2021 21:24:06 +0000 (21:24 +0000)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Sun, 10 Jan 2021 23:19:44 +0000 (23:19 +0000)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/shapelib.rs
src/spec.rs

index 54fea79a6975c75cced56cab2825782158d0a808..df4054b3eab0fd66006f5b7d26908f9c7f1fa78f 100644 (file)
@@ -224,7 +224,8 @@ impl ItemSpec {
   #[throws(SpecError)]
   pub fn load(&self) -> Box<dyn Piece> {
     let lib = libs_lookup(&self.lib)?;
-    let idata = lib.items.get(&self.item).ok_or(SE::LibraryItemNotFound)?;
+    let idata = lib.items.get(&self.item)
+      .ok_or(SE::LibraryItemNotFound(self.item.clone()))?;
     lib.load1(idata, &self.item)?
   }
 }
@@ -237,7 +238,7 @@ impl Contents {
       .map_err(|e| if e.kind() == ErrorKind::NotFound {
         warn!("library item lib={} itme={} data file {:?} not found",
               &self.libname, &name, &svg_path);
-        SE::LibraryItemNotFound
+        SE::LibraryItemNotFound(name.to_owned())
       } else {
         let m = "error accessing/reading library item data file";
         error!("{}: {}: {}", &m, &svg_path, &e);
@@ -280,7 +281,7 @@ impl Contents {
     for (k,v) in &self.items {
       if !pat.matches(&k) { continue }
       let loaded = match self.load1(v, &k) {
-        Err(SpecError::LibraryItemNotFound) => continue,
+        Err(SpecError::LibraryItemNotFound(_)) => continue,
         e@ Err(_) => e?,
         Ok(r) => r,
       };
index 2c01f0141f9e3dade2ca511e6ad1adcbaf34789d..73b8ed1799e33e71df88c44a73787943754f70ca 100644 (file)
@@ -66,7 +66,7 @@ pub enum SpecError {
   InternalError(String),
   PosOffTable,
   LibraryNotFound,
-  LibraryItemNotFound,
+  LibraryItemNotFound(String),
   AclInvalidAccountGlob,
   AclEntryOverlappingAllowDeny,
   InconsistentPieceCount,