display error on module window

- Currently errors are displayed on stdout. This patch puts the
error on subscreens also.
- bug 1298171

Signed-off-by: Sanjay Singh Rawat <sanjay.rawat@linaro.org>
diff --git a/regulator.c b/regulator.c
index 9cd89fd..27d75b6 100644
--- a/regulator.c
+++ b/regulator.c
@@ -68,6 +68,7 @@
 };
 
 static struct tree *reg_tree;
+static bool regulator_error = false;
 
 static struct regulator_info *regulator_alloc(void)
 {
@@ -220,6 +221,12 @@
 
 static int regulator_display(bool refresh)
 {
+	if (regulator_error) {
+		display_message(REGULATOR,
+			"error: path " SYSFS_REGULATOR " not found");
+		return -2;
+	}
+
 	if (refresh && read_regulator_info(reg_tree))
 		return -1;
 
@@ -255,6 +262,15 @@
 
 int regulator_init(void)
 {
+	int ret = 0;
+
+	ret = display_register(REGULATOR, &regulator_ops);
+	if (!ret)
+		printf("error: regulator display register failed");
+
+	if (access(SYSFS_REGULATOR, F_OK))
+		regulator_error = true; /* set the flag */
+
 	reg_tree = tree_load(SYSFS_REGULATOR, regulator_filter_cb, false);
 	if (!reg_tree)
 		return -1;
@@ -262,5 +278,5 @@
 	if (fill_regulator_tree())
 		return -1;
 
-	return display_register(REGULATOR, &regulator_ops);
+	return ret;
 }