Add file names and line numbers to error messages.
[pspp] / rust / tests / sack.rs
index 407f2ec9a1a149d996a65dc9d0c6bf19438a9d33..4f6e9680a069dfd7ff74e59430d73dac1c616189 100644 (file)
@@ -59,12 +59,12 @@ struct Args {
     le: bool,
 
     /// Input file.
-    #[arg(required = true)]
-    input: PathBuf,
+    #[arg(required = true, name = "input")]
+    input_file_name: PathBuf,
 }
 
 fn main() -> Result<()> {
-    let Args { be, le, input } = Args::parse();
+    let Args { be, le, input_file_name } = Args::parse();
     if stdout().is_terminal() {
         return Err(anyhow!(
             "not writing binary data to a terminal; redirect to a file"
@@ -75,8 +75,9 @@ fn main() -> Result<()> {
         (false, true) => Endian::Little,
         (true, true) => return Err(anyhow!("can't use both `--be` and `--le`")),
     };
-    let input = read_to_string(&input)?;
-    let output = sack(&input, endian)?;
-    stdout().write(&output)?;
+    let input = read_to_string(&input_file_name)?;
+    let input_file_name = input_file_name.to_string_lossy();
+    let output = sack(&input, Some(&input_file_name), endian)?;
+    stdout().write_all(&output)?;
     Ok(())
 }