From aec0842632ea32fec9939c221fb5554d1900a3a5 Mon Sep 17 00:00:00 2001 From: "A. Wilcox" Date: Mon, 14 Oct 2019 09:21:22 -0500 Subject: hscript: A few changes [read full message] * Handle ENODEV as well as EOPNOTSUPP in NetSSID::validate. Whether iface is not wifi or doesn't exist, same result per spec. * *Failures* are fatal, but *ENODEV/EOPNOTSUPP* is not a failure. So, repair logic in Script::validate and return proper value. --- hscript/network.cc | 12 +++++++++--- hscript/script.cc | 5 +++-- 2 files changed, 12 insertions(+), 5 deletions(-) (limited to 'hscript') diff --git a/hscript/network.cc b/hscript/network.cc index e02e5df..c8f42de 100644 --- a/hscript/network.cc +++ b/hscript/network.cc @@ -324,11 +324,17 @@ bool NetSSID::validate(ScriptOptions options) const { this->_iface.size()); errno = 0; if(ioctl(my_sock, SIOCGIWNAME, &request) == -1) { - if(errno == EOPNOTSUPP) { + switch(errno) + { + case EOPNOTSUPP: output_warning("installfile:" + std::to_string(this->lineno()), "netssid: interface specified is not wireless"); - return false; - } else { + return true; + case ENODEV: + output_warning("installfile:" + std::to_string(this->lineno()), + "netssid: specified interface does not exist"); + return true; + default: output_error("installfile:" + std::to_string(this->lineno()), "netssid: error communicating with wireless device"); return false; diff --git a/hscript/script.cc b/hscript/script.cc index 29e0118..444b6c0 100644 --- a/hscript/script.cc +++ b/hscript/script.cc @@ -392,8 +392,9 @@ bool Script::validate() const { /* Runner.Validate.network.netssid */ for(auto &ssid : this->internal->ssids) { - ssid->validate(this->opts); - /* Failure is not fatal per spec. */ + if(!ssid->validate(this->opts)) { + failures++; + } } if(this->internal->repos.size() == 0) { -- cgit v1.2.3-70-g09d2