diff options
author | Daniel Mueller <deso@posteo.net> | 2017-03-26 17:31:28 -0700 |
---|---|---|
committer | Daniel Mueller <deso@posteo.net> | 2017-03-26 17:31:28 -0700 |
commit | de5ae8656387267bb4614bbab6b62784323f23c0 (patch) | |
tree | 7be8d72b26b0ae355d5e157c2f36ccb30d6fa347 /nitrocli/src/error.rs | |
parent | cd6e41862cea59ec306e7c9c578270575eb2a73b (diff) | |
download | nitrocli-de5ae8656387267bb4614bbab6b62784323f23c0.tar.gz nitrocli-de5ae8656387267bb4614bbab6b62784323f23c0.tar.bz2 |
Discover and open nictrokey using libhidapi
This change uses the 'hid' crate to discover and open the Nitrokey
Storage device. 'hid' is a wrapper around libhidapi (its libusb back-end
in particular).
Being a command line application some sort of parameter handling needs
to happen. The approach we take is very simple for now to minimize the
number of dependencies: we just compare the first argument against the
expected ones and raise an error if no match was found. Because we only
have positional arguments right now this is all we need.
Diffstat (limited to 'nitrocli/src/error.rs')
-rw-r--r-- | nitrocli/src/error.rs | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/nitrocli/src/error.rs b/nitrocli/src/error.rs new file mode 100644 index 0000000..65992f0 --- /dev/null +++ b/nitrocli/src/error.rs @@ -0,0 +1,45 @@ +// error.rs + +// ************************************************************************* +// * Copyright (C) 2017 Daniel Mueller (deso@posteo.net) * +// * * +// * This program is free software: you can redistribute it and/or modify * +// * it under the terms of the GNU General Public License as published by * +// * the Free Software Foundation, either version 3 of the License, or * +// * (at your option) any later version. * +// * * +// * This program is distributed in the hope that it will be useful, * +// * but WITHOUT ANY WARRANTY; without even the implied warranty of * +// * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +// * GNU General Public License for more details. * +// * * +// * You should have received a copy of the GNU General Public License * +// * along with this program. If not, see <http://www.gnu.org/licenses/>. * +// ************************************************************************* + +use libhid; +use std::fmt; + + +#[derive(Debug)] +pub enum Error { + HidError(libhid::Error), + Error(String), +} + + +impl From<libhid::Error> for Error { + fn from(e: libhid::Error) -> Error { + return Error::HidError(e); + } +} + + +impl fmt::Display for Error { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match *&self { + &Error::HidError(ref e) => return write!(f, "hidapi error: {}", e), + &Error::Error(ref e) => return write!(f, "{}", e), + } + } +} |