summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/error.sh52
-rw-r--r--lib/local.mk1
-rw-r--r--man/local.mk1
3 files changed, 54 insertions, 0 deletions
diff --git a/lib/error.sh b/lib/error.sh
new file mode 100644
index 0000000..91d1b5a
--- /dev/null
+++ b/lib/error.sh
@@ -0,0 +1,52 @@
+# Error handling callbacks
+#
+# Copyright (C) 2019 Patrick McDermott
+#
+# This file is part of opkbuild.
+#
+# opkbuild 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.
+#
+# opkbuild 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 opkbuild. If not, see <http://www.gnu.org/licenses/>.
+
+_ob_parse_error_cb=''
+
+## @brief Set the parse error callback
+## @details \fBob_set_parse_error_cb\fP sets the function to be called upon
+## parse errors.
+## @operand cb req The callback function name. Must accept at least three
+## arguments: a file name, a line number, and an error ID.
+## @return 0 This function returns 0.
+## @pure no This function sets an internal global variable.
+ob_set_parse_error_cb()
+{
+ local cb="${1}"
+ shift 1
+
+ _ob_parse_error_cb="${cb}"
+
+ return 0
+}
+
+_ob_run_parse_error_cb()
+{
+ local file="${1}"
+ local line="${2}"
+ local err_id="${3}"
+ shift 3
+
+ if [ -n "${_ob_parse_error_cb}" ]; then
+ "${_ob_parse_error_cb}" "${file}" "${line}" "${err_id}" "${@}"
+ return ${?}
+ else
+ return 0
+ fi
+}
diff --git a/lib/local.mk b/lib/local.mk
index e0ab8cc..47d8c3e 100644
--- a/lib/local.mk
+++ b/lib/local.mk
@@ -20,6 +20,7 @@ libopkbuild_sources = \
%reldir%/common.sh \
%reldir%/locale.sh \
%reldir%/output.sh \
+ %reldir%/error.sh \
%reldir%/package.sh \
%reldir%/metadata.sh \
%reldir%/control.sh \
diff --git a/man/local.mk b/man/local.mk
index 62d8b7a..23b322d 100644
--- a/man/local.mk
+++ b/man/local.mk
@@ -42,6 +42,7 @@ man3_MANS = \
%reldir%/ob_parse_dep.3 \
%reldir%/ob_parse_version.3 \
%reldir%/ob_reduce_deps.3 \
+ %reldir%/ob_set_parse_error_cb.3 \
%reldir%/ob_set_substvar.3 \
%reldir%/ob_set_text_domain.3 \
%reldir%/ob_substvars.3 \