Browse Source

make startup file creation fail more explicitly (#7)

* add explicit permission error handling

* create error_helpers as mod to keep main.rs succint

* rename error_helpers -> startup_helpers
checkpoints
Za Wilcox 5 years ago
committed by adityapk00
parent
commit
201b47af5c
  1. 1
      lib/src/lib.rs
  2. 20
      lib/src/startup_helpers.rs
  3. 9
      src/main.rs

1
lib/src/lib.rs

@ -1,6 +1,7 @@
#[macro_use]
extern crate rust_embed;
pub mod startup_helpers;
pub mod lightclient;
pub mod grpcconnector;
pub mod lightwallet;

20
lib/src/startup_helpers.rs

@ -0,0 +1,20 @@
pub fn report_permission_error() {
let user = std::env::var("USER").expect(
"Unexpected error reading value of $USER!");
let home = std::env::var("HOME").expect(
"Unexpected error reading value of $HOME!");
let current_executable = std::env::current_exe()
.expect("Unexpected error reporting executable path!");
eprintln!("USER: {}", user);
eprintln!("HOME: {}", home);
eprintln!("Executable: {}", current_executable.display());
if home == "/" {
eprintln!("User {} must have permission to write to '{}.zcash/' .",
user,
home);
} else {
eprintln!("User {} must have permission to write to '{}/.zcash/' .",
user,
home);
}
}

9
src/main.rs

@ -2,7 +2,7 @@ use std::io::{Result, Error, ErrorKind};
use std::sync::Arc;
use std::sync::mpsc::{channel, Sender, Receiver};
use zecwalletlitelib::{commands,
use zecwalletlitelib::{commands, startup_helpers,
lightclient::{self, LightClient, LightClientConfig},
};
@ -111,12 +111,17 @@ pub fn main() {
let dangerous = matches.is_present("dangerous");
let nosync = matches.is_present("nosync");
let (command_tx, resp_rx) = match startup(server, dangerous, seed, !nosync, command.is_none()) {
Ok(c) => c,
Err(e) => {
eprintln!("Error during startup: {}", e);
error!("Error during startup: {}", e);
match e.raw_os_error() {
Some(13) => {
startup_helpers::report_permission_error();
},
_ => eprintln!("Something else!")
}
return;
}
};

Loading…
Cancel
Save