aboutsummaryrefslogtreecommitdiff
path: root/nitrocli/src/error.rs
diff options
context:
space:
mode:
authorDaniel Mueller <deso@posteo.net>2017-03-26 17:31:28 -0700
committerDaniel Mueller <deso@posteo.net>2017-03-26 17:31:28 -0700
commitde5ae8656387267bb4614bbab6b62784323f23c0 (patch)
tree7be8d72b26b0ae355d5e157c2f36ccb30d6fa347 /nitrocli/src/error.rs
parentcd6e41862cea59ec306e7c9c578270575eb2a73b (diff)
downloadnitrocli-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.rs45
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),
+ }
+ }
+}