diff options
author | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2019-01-05 15:40:45 (EST) |
---|---|---|
committer | Patrick McDermott <patrick.mcdermott@libiquity.com> | 2019-01-05 16:27:30 (EST) |
commit | 31a6f6452e6de2bcf27b5a141613b183ee29ce63 (patch) | |
tree | 9c5636db42de16e79dd7ac1f7d0271e550bb1755 | |
parent | 0cded9197f0ca559afd1f51b4200c07e65fa76b1 (diff) |
lib/error.sh: New file
-rw-r--r-- | lib/error.sh | 52 | ||||
-rw-r--r-- | lib/local.mk | 1 | ||||
-rw-r--r-- | man/local.mk | 1 |
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 \ |