From 1c95f64aa342147387ce4b1b7269a5c8b34bd898 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Thu, 13 Jul 2017 09:01:04 -0700
Subject: [PATCH] pypredict/lm: Define error API if platform does not have it

error() API is not implemented across all libcs on linux
e.g. musl does not provide it.

Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
 Onboard/pypredict/lm/lm.cpp         |  1 -
 Onboard/pypredict/lm/lm.h           | 13 +++++++++++++
 Onboard/pypredict/lm/lm_dynamic.cpp |  2 --
 3 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/Onboard/pypredict/lm/lm.cpp b/Onboard/pypredict/lm/lm.cpp
index 2e64296..37ae241 100644
--- a/Onboard/pypredict/lm/lm.cpp
+++ b/Onboard/pypredict/lm/lm.cpp
@@ -19,7 +19,6 @@
 
 #include <stdlib.h>
 #include <stdio.h>
-#include <error.h>
 #include <algorithm>
 #include <cmath>
 #include <string>
diff --git a/Onboard/pypredict/lm/lm.h b/Onboard/pypredict/lm/lm.h
index ed4164a..b8b63ee 100644
--- a/Onboard/pypredict/lm/lm.h
+++ b/Onboard/pypredict/lm/lm.h
@@ -32,6 +32,19 @@
 #include <algorithm>
 #include <string>
 
+#if defined(HAVE_ERROR_H)
+#include <error.h>
+#else
+#include <err.h>
+#define _onboard_error(S, E, F, ...) do { \
+       if (E) \
+               err(S, F ": %s", ##__VA_ARGS__, strerror(E)); \
+       else \
+               err(S, F, ##__VA_ARGS__); \
+} while(0)
+
+#define error _onboard_error
+#endif
 
 // break into debugger
 // step twice to come back out of the raise() call into known code
diff --git a/Onboard/pypredict/lm/lm_dynamic.cpp b/Onboard/pypredict/lm/lm_dynamic.cpp
index 7c62824..e7c7f40 100644
--- a/Onboard/pypredict/lm/lm_dynamic.cpp
+++ b/Onboard/pypredict/lm/lm_dynamic.cpp
@@ -17,8 +17,6 @@
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include <error.h>
-
 #include "lm_dynamic.h"
 
 using namespace std;
-- 
2.13.2

