summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPatrick McDermott <patrick.mcdermott@libiquity.com>2019-03-13 02:51:56 (EDT)
committer Patrick McDermott <patrick.mcdermott@libiquity.com>2019-03-13 02:56:19 (EDT)
commit9033d4b6b9b85ab3e502b376daf66ae566c026b6 (patch)
tree5933fa9a313caff0ec5a0aa38e4087cba777c6d8
parente153a4a392e2f6e616b2c94b77eb683eff9e644a (diff)
libopkbuild: Abort on invalid function arguments
Shift arguments and abort instead of returning 125. Incorrect numbers of function arguments suggest application/library incompatibilities or serious errors by the application developer. Either way, the application developer should be made immediately aware of this (and not allowed to simply not check return values), and continuing to run and handle any further API calls may be unsafe.
-rw-r--r--TODO4
-rw-r--r--lib/changelog.sh26
-rw-r--r--lib/control.sh67
-rw-r--r--lib/deps.sh32
-rw-r--r--lib/locale.sh45
-rw-r--r--lib/metadata.sh124
-rw-r--r--lib/metadata/proteanos.sh65
-rw-r--r--lib/output.sh12
-rw-r--r--lib/package.sh117
-rw-r--r--lib/package/2.sh23
10 files changed, 159 insertions, 356 deletions
diff --git a/TODO b/TODO
index 3bf6738..4f8cfa3 100644
--- a/TODO
+++ b/TODO
@@ -40,9 +40,7 @@ Tasks
* Drop mksysconf.
* In executables, print error (using `printf`) and exit if
`ob_set_text_domain()` fails.
- * Make `set -e` and drop `return 125` from library functions. `shift`
- arguments, and exit (with `kill`) if `shift` returns non-zero (POSIX only
- says the shell "may exit").
+ * Make `set -e`.
* Make `ob_error()` non-fatal and use in libopkbuild in places where functions
return on error.
diff --git a/lib/changelog.sh b/lib/changelog.sh
index 7cb6c0b..3216f94 100644
--- a/lib/changelog.sh
+++ b/lib/changelog.sh
@@ -19,16 +19,12 @@
_ob_parse_changelog_error()
{
- local file=
- local line_nr=
- local msg_id=
+ local file="${1}"
+ local line_nr="${2}"
+ local msg_id="${3}"
+ shift 3 || _ob_abort
local file_info=
- file="${1}"
- line_nr="${2}"
- msg_id="${3}"
- shift 3
-
file_info="$(printf '%20s(l%d)' "${file}" "${line_nr}")"
_ob_warn_msg "${msg_id}" "${file_info}" "${@}"
@@ -57,15 +53,16 @@ _ob_get_changelog_expect_str()
## \fIchangelog\fP file or when \fIentry_cb\fP returns non-zero.
## @operand file req The file to parse, or "-" for standard input.
## @operand entry_cb req Callback to run for each entry.
-## @return Returns 0 after parsing, or 125 on missing arguments.
+## @return Returns 0 after parsing.
## @stderr Prints error messages on parse errors.
## @pure maybe This function has no side effects. Whether this function is
## subshell-safe in practice depends on whether \fIentry_cb\fP is
## subshell-safe.
ob_parse_changelog()
{
- local file=
- local entry_cb=
+ local file="${1}"
+ local entry_cb="${2}"
+ shift 2 || _ob_abort
local line_nr=
local line=
local line_=
@@ -78,13 +75,6 @@ ob_parse_changelog()
local maintainer=
local date=
- if [ ${#} -eq 2 ]; then
- file="${1}"
- entry_cb="${2}"
- else
- return 125
- fi
-
# Parsing logic based on that of dpkg.
line_nr=0
diff --git a/lib/control.sh b/lib/control.sh
index 58bf68b..c29d4a0 100644
--- a/lib/control.sh
+++ b/lib/control.sh
@@ -21,15 +21,11 @@ _OB_SUBSTVARS_MAX_DEPTH=50
_ob_parse_control_error()
{
- local file=
- local line_nr=
- local msg_id=
- local file_info=
-
file="${1}"
line_nr="${2}"
msg_id="${3}"
- shift 3
+ shift 3 || _ob_abort
+ local file_info=
if [ ${line_nr} -eq 0 ]; then
file_info="$(printf '%20s' "${file}")"
@@ -61,20 +57,20 @@ _ob_parse_control_error()
## @operand user_data req Data to pass to \fIfield_cb\fP.
## @operand req_fields opt Required fields that must appear in the control file.
## @operand opt_fields opt Optional fields that may appear in the control file.
-## @return Returns 0 after parsing, or 125 if called with an incorrect number of
-## arguments.
+## @return Returns 0 after parsing.
## @stderr Prints error messages on parse errors.
## @pure maybe This function has no side effects. Whether this function is
## subshell-safe in practice depends on whether \fIfield_cb\fP is
## subshell-safe.
ob_parse_control()
{
- local file=
- local field_cb=
- local user_data=
+ local file="${1}"
+ local field_cb="${2}"
+ local user_data="${3}"
+ shift 3 || _ob_abort
+ local check_fields=
local req_fields=
local opt_fields=
- local check_fields=
local got_fields=
local line_nr=
local line=
@@ -82,20 +78,11 @@ ob_parse_control()
local value=
local sep=
- if [ ${#} -eq 3 ]; then
- file="${1}"
- field_cb="${2}"
- user_data="${3}"
- check_fields='false'
- elif [ ${#} -eq 5 ]; then
- file="${1}"
- field_cb="${2}"
- user_data="${3}"
- req_fields=" ${4} "
- opt_fields=" ${5} "
+ check_fields='false'
+ if [ ${#} -eq 2 ]; then
+ req_fields=" ${1} "
+ opt_fields=" ${2} "
check_fields='true'
- else
- return 125
fi
got_fields=' '
@@ -195,24 +182,18 @@ ob_parse_control()
## of uppercase and lowercase Latin letters, digits, and
## hyphens and must be at least one character long.
## @operand value req The value of the substitution variable.
-## @return Returns 0 on success, or 125 if called with an incorrect number of
-## arguments or if \fIname\fP is empty or contains invalid characters.
+## @return Returns 0 on success, or 1 if \fIname\fP is empty or contains invalid
+## characters.
## @pure no This function sets an internal global variable.
ob_set_substvar()
{
- local name=
- local value=
-
- if [ ${#} -eq 2 ]; then
- name="${1}"
- value="${2}"
- else
- return 125
- fi
+ local name="${1}"
+ local value="${2}"
+ shift 2 || _ob_abort
# Convert variable name to uppercase and validate.
case "${name}" in *[!A-Za-z0-9-]* | '')
- return 125
+ return 1
esac
name="$(tr 'a-z-' 'A-Z_' <<-EOF
${name}
@@ -234,13 +215,13 @@ ob_set_substvar()
## \fBob_set_substvar\fP(3) in a string. The format for variable
## substitutions is \fI${var}\fP, and substitutions can be nested.
## @operand string req The string in which to substitute variables.
-## @return Returns 0 on success, 1 on possible recursion, or 125 if called with
-## an incorrect number of arguments.
+## @return Returns 0 on success or 1 on possible recursion.
## @stderr Prints a warning on possible recursion.
## @pure yes This function has no side effects.
ob_substvars()
{
- local string=
+ local string="${1}"
+ shift 1 || _ob_abort
local depth=
local lhs=
local name=
@@ -248,12 +229,6 @@ ob_substvars()
local old_rhs=
local value=
- if [ ${#} -eq 1 ]; then
- string="${1}"
- else
- return 125
- fi
-
# Logic inspired by that of dpkg's Dpkg::Substvars::substvars() subroutine.
depth=0
diff --git a/lib/deps.sh b/lib/deps.sh
index 64553aa..348839a 100644
--- a/lib/deps.sh
+++ b/lib/deps.sh
@@ -79,37 +79,37 @@ ob_parse_dep()
p)
pkg_var="${OPTARG}"
if ! _ob_validate_var_name "${pkg_var}"; then
- return 125
+ _ob_abort
fi
;;
q)
archqual_var="${OPTARG}"
if ! _ob_validate_var_name "${archqual_var}"; then
- return 125
+ _ob_abort
fi
;;
r)
rel_var="${OPTARG}"
if ! _ob_validate_var_name "${rel_var}"; then
- return 125
+ _ob_abort
fi
;;
v)
ver_var="${OPTARG}"
if ! _ob_validate_var_name "${ver_var}"; then
- return 125
+ _ob_abort
fi
;;
A)
arches_var="${OPTARG}"
if ! _ob_validate_var_name "${arches_var}"; then
- return 125
+ _ob_abort
fi
;;
l)
plats_var="${OPTARG}"
if ! _ob_validate_var_name "${plats_var}"; then
- return 125
+ _ob_abort
fi
;;
a)
@@ -119,17 +119,14 @@ ob_parse_dep()
host_plat="${OPTARG}"
;;
?)
- return 125
+ _ob_abort
;;
esac
done
shift $(($OPTIND - 1))
- if [ ${#} -eq 1 ]; then
- dep="${1}"
- else
- return 125
- fi
+ dep="${1}"
+ shift 1 || _ob_abort
# pkg[:archqual] [(rel ver)] [\[arches\]] [<plats>]
dep_re='s/^ *([^ \(\[<]+) *(\((<<|<=|=|>=|>>) *(.+)\))?'
@@ -200,7 +197,7 @@ ob_parse_dep()
## Required.
## @option -u - Treat \fIdeps\fP as a union list.
## @operand deps req The list of dependencies to reduce.
-## @return Returns 0 on success or 125 on invalid option or missing \fIdeps\fP.
+## @return Returns 0 on success.
## @stdout Prints the reduced list of dependencies.
## @pure yes This function has no side effects.
ob_reduce_deps()
@@ -230,17 +227,14 @@ ob_reduce_deps()
union='true'
;;
?)
- return 125
+ _ob_abort
;;
esac
done
shift $(($OPTIND - 1))
- if [ ${#} -eq 1 ]; then
- deps="${1}"
- else
- return 125
- fi
+ local deps="${1}"
+ shift 1 || _ob_abort
IFS=','
for dep_and in ${deps}; do
diff --git a/lib/locale.sh b/lib/locale.sh
index e6132d2..3628670 100644
--- a/lib/locale.sh
+++ b/lib/locale.sh
@@ -24,15 +24,11 @@ _OB_LOCALE_PATH="${LOCALEDIR}/%s/LC_MESSAGES/%s.ms"
## @brief Get the current message domain
## @details \fBob_get_text_domain\fP prints the currently loaded message domain.
-## @return Returns 0 on success or 125 if any arguments are given.
+## @return Returns 0 on success.
## @stdout Prints the name of the currently loaded message domain.
## @pure yes This function has no side effects.
ob_get_text_domain()
{
- if [ ${#} -ne 0 ]; then
- return 125
- fi
-
printf '%s' "${_ob_text_domain}"
return 0
}
@@ -62,20 +58,19 @@ _ob_try_load_messages()
## should have its own message domain. libopkbuild also has its own
## message domain and temporarily switches to it when needed.
## @operand text_domain req The message domain to load.
-## @return Returns 0 on success, 1 if the message domain cannot be loaded, or
-## 125 if \fItext_domain\fP is missing or invalid.
+## @return Returns 0 on success or 1 if \fItext_domain\fP is missing or invalid
+## or if the message domain cannot be loaded.
## @pure no This function sets an internal global variable and loads a message
## catalog that sets numerous message variables.
ob_set_text_domain()
{
- if [ ${#} -eq 1 ]; then
- _ob_text_domain="${1}"
- else
- return 125
- fi
- case "${_ob_text_domain}" in *[!A-Za-z0-9_]*)
- return 125
+ local text_domain="${1}"
+ shift 1 || _ob_abort
+
+ case "${text_domain}" in *[!A-Za-z0-9_]* | '')
+ return 1
esac
+ _ob_text_domain="${text_domain}"
# Make sure LC_MESSAGES is set.
if [ -z "${LC_MESSAGES}" ]; then
@@ -108,13 +103,8 @@ ob_set_text_domain()
ob_set_locale_path()
{
- local format=
-
- if [ ${#} -eq 1 ]; then
- format="${1}"
- else
- return 125
- fi
+ local format="${1}"
+ shift 1 || _ob_abort
_OB_LOCALE_PATH="${format}"
@@ -125,18 +115,13 @@ ob_set_locale_path()
## @details \fBob_get_msg\fP prints a message, identified by a message ID, from
## the currently loaded message catalog.
## @operand msgid req The ID of the message to print
-## @return Returns 0 on success or 125 if \fImsgid\fP is missing.
+## @return Returns 0 on success.
## @stdout Prints the requested message from the current message domain.
## @pure yes This function has no side effects.
ob_get_msg()
{
- local msgid=
-
- if [ ${#} -eq 1 ]; then
- msgid="${1}"
- else
- return 125
- fi
+ local msgid="${1}"
+ shift 1 || _ob_abort
eval "printf '%s' \"\${msg_${_ob_text_domain}_${msgid}}\""
@@ -146,7 +131,7 @@ ob_get_msg()
_ob_get_msg()
{
local msgid="${1}"
- shift 1
+ shift 1 || _ob_abort
local orig_text_domain=
orig_text_domain="$(ob_get_text_domain)"
diff --git a/lib/metadata.sh b/lib/metadata.sh
index 2ca3eeb..c6f5a16 100644
--- a/lib/metadata.sh
+++ b/lib/metadata.sh
@@ -19,10 +19,8 @@
_ob_metadata_do()
{
- local func=
-
- func="${1}"
- shift 1
+ local func="${1}"
+ shift 1 || _ob_abort
"_ob_${func}" "${@}"
@@ -34,18 +32,12 @@ _ob_metadata_do()
## against the rules of the metadata plugin selected at libopkbuild's
## build time.
## @operand name req The source package name to validate.
-## @return Returns 0 if valid, 1 if invalid, or 125 if given an incorrect number
-## of arguments.
+## @return Returns 0 if valid or 1 if invalid.
## @pure yes This function has no side effects.
ob_validate_source_name()
{
- local name=
-
- if [ ${#} -eq 1 ]; then
- name="${1}"
- else
- return 125
- fi
+ local name="${1}"
+ shift 1 || _ob_abort
_ob_metadata_do 'validate_source_name' "${name}"
@@ -57,18 +49,12 @@ ob_validate_source_name()
## against the rules of the metadata plugin selected at libopkbuild's
## build time.
## @operand name req The binary package name to validate.
-## @return Returns 0 if valid, 1 if invalid, or 125 if given an incorrect number
-## of arguments.
+## @return Returns 0 if valid or 1 if invalid.
## @pure yes This function has no side effects.
ob_validate_binary_name()
{
- local name=
-
- if [ ${#} -eq 1 ]; then
- name="${1}"
- else
- return 125
- fi
+ local name="${1}"
+ shift 1 || _ob_abort
_ob_metadata_do 'validate_binary_name' "${name}"
@@ -85,9 +71,7 @@ ob_validate_binary_name()
## @option -d distrev_var The name of the variable in which to store the
## distribution revision.
## @operand version req The version to validate and parse.
-## @return Returns 0 on success; 1 on invalid \fIversion\fP; or 125 if given an
-## invalid variable name as an argument to \fB-u\fP or \fB-d\fP, an
-## invalid option, or an incorrect number of operands.
+## @return Returns 0 on success or 1 on invalid \fIversion\fP.
## @pure maybe This function has side effects when used with either or both of
## the \fB-u\fP and \fB-d\fP options. Without these options, this
## function only validates a version identifier. The purpose of
@@ -107,27 +91,24 @@ ob_parse_version()
u)
upstreamver_var="${OPTARG}"
if ! _ob_validate_var_name "${upstreamver_var}"; then
- return 125
+ _ob_abort
fi
;;
d)
distrev_var="${OPTARG}"
if ! _ob_validate_var_name "${distrev_var}"; then
- return 125
+ _ob_abort
fi
;;
?)
- return 125
+ _ob_abort
;;
esac
done
shift $(($OPTIND - 1))
- if [ ${#} -eq 1 ]; then
- version="${1}"
- else
- return 125
- fi
+ version="${1}"
+ shift 1 || _ob_abort
if ! _ob_metadata_do 'validate_version' "${version}"; then
return 1
@@ -149,16 +130,12 @@ ob_parse_version()
## @details \fBob_get_system_arch\fP gets the architecture of the build
## (running) system using the metadata plugin selected at libopkbuild's
## build time.
-## @return Returns 0 on success, 1 if the system's architecture cannot be
-## determined, or 125 if given any arguments.
+## @return Returns 0 on success or 1 if the system's architecture cannot be
+## determined.
## @stdout Prints the system's architecture.
## @pure yes This function has no side effects.
ob_get_system_arch()
{
- if [ ${#} -gt 0 ]; then
- return 125
- fi
-
_ob_metadata_do 'get_system_arch'
return ${?}
@@ -168,16 +145,12 @@ ob_get_system_arch()
## @details \fBob_get_system_arch\fP gets the platform of the build (running)
## system using the metadata plugin selected at libopkbuild's build
## time.
-## @return Returns 0 on success, 1 if the system's platform cannot be
-## determined, or 125 if given any arguments.
+## @return Returns 0 on success or 1 if the system's platform cannot be
+## determined.
## @stdout Prints the system's platform.
## @pure yes This function has no side effects.
ob_get_system_plat()
{
- if [ ${#} -gt 0 ]; then
- return 125
- fi
-
_ob_metadata_do 'get_system_plat'
return ${?}
@@ -185,21 +158,15 @@ ob_get_system_plat()
ob_match_arch()
{
- local match_arch=
- local arch_field=
+ local match_arch="${1}"
+ local arch_field="${2}"
+ shift 2 || _ob_abort
local field_arch=
local match_arch_rest=
local field_arch_rest=
local match_arch_part=
local field_arch_part=
- if [ ${#} -eq 2 ]; then
- match_arch="${1}"
- arch_field="${2}"
- else
- return 125
- fi
-
for field_arch in ${arch_field}; do
# "all" == "all"
@@ -242,17 +209,11 @@ ob_match_arch()
ob_match_plat()
{
- local plat=
- local plat_field=
+ local plat="${1}"
+ local plat_field="${2}"
+ shift 2 || _ob_abort
local p=
- if [ ${#} -eq 2 ]; then
- plat="${1}"
- plat_field="${2}"
- else
- return 125
- fi
-
for p in ${plat_field}; do
if [ "${plat}" = 'all' ]; then
if [ "${p}" = 'all' ]; then
@@ -274,19 +235,13 @@ ob_match_plat()
ob_arch_is_concerned()
{
- local host_arch=
- local arches=
+ local host_arch="${1}"
+ local arches="${2}"
+ shift 2 || _ob_abort
local arch=
local not_arch=
local seen_arch=
- if [ ${#} -eq 2 ]; then
- host_arch="${1}"
- arches="${2}"
- else
- return 125
- fi
-
if [ "x${arches}" = 'x' ]; then
return 0
elif [ "x${host_arch}" = 'xall' ]; then
@@ -318,19 +273,13 @@ ob_arch_is_concerned()
ob_plat_is_concerned()
{
- local host_plat=
- local plats=
+ local host_plat="${1}"
+ local plats="${2}"
+ shift 2 || _ob_abort
local plat=
local not_plat=
local seen_plat=
- if [ ${#} -eq 2 ]; then
- host_plat="${1}"
- plats="${2}"
- else
- return 125
- fi
-
if [ "x${plats}" = 'x' ]; then
return 0
elif [ "x${host_plat}" = 'xall' ]; then
@@ -371,20 +320,13 @@ ob_plat_is_concerned()
## @operand path_id req One of \fBpackage-source\fP, \fBpackage-docs\fP,
## \fBbuildflags\fP, or \fBplatconf\fP.
## @operand args req Additional arguments specific to each \fIpath_id\fP.
-## @return Returns 0 on success, or 125 if given an incorrect number of
-## arguments.
+## @return Returns 0 on success.
## @stdout Prints the requested path with \fIargs\fP.
## @pure yes This function has no side effects.
ob_get_system_path()
{
- local path_id=
-
- if [ ${#} -ge 1 ]; then
- path_id="${1}"
- shift 1
- else
- return 125
- fi
+ local path_id="${1}"
+ shift 1 || _ob_abort
_ob_metadata_do 'get_system_path' "${path_id}" "${@}"
diff --git a/lib/metadata/proteanos.sh b/lib/metadata/proteanos.sh
index 514f8cb..4152847 100644
--- a/lib/metadata/proteanos.sh
+++ b/lib/metadata/proteanos.sh
@@ -27,9 +27,8 @@ _OB_VERSION_RE_PROTEANOS=${_OB_VERSION_RE_PROTEANOS}'$'
_ob_validate_source_name()
{
- local name=
-
- name="${1}"
+ local name="${1}"
+ shift 1 || _ob_abort
if grep -E "${_OB_NAME_RE_PROTEANOS}" >/dev/null 2>&1 <<-EOF
${name}
@@ -49,9 +48,8 @@ _ob_validate_source_name()
_ob_validate_binary_name()
{
- local name=
-
- name="${1}"
+ local name="${1}"
+ shift 1 || _ob_abort
if grep -E "${_OB_NAME_RE_PROTEANOS}" >/dev/null 2>&1 <<-EOF
${name}
@@ -71,9 +69,8 @@ _ob_validate_binary_name()
_ob_validate_version()
{
- local version=
-
- version="${1}"
+ local version="${1}"
+ shift 1 || _ob_abort
grep -E "${_OB_VERSION_RE_PROTEANOS}" >/dev/null 2>&1 <<-EOF
${version}
@@ -84,9 +81,8 @@ _ob_validate_version()
_ob_get_upstreamver()
{
- local version=
-
- version="${1}"
+ local version="${1}"
+ shift 1 || _ob_abort
printf '%s' "${version%-*}"
@@ -95,9 +91,8 @@ _ob_get_upstreamver()
_ob_get_distrev()
{
- local version=
-
- version="${1}"
+ local version="${1}"
+ shift 1 || _ob_abort
printf '%s' "${version##*-}"
@@ -120,47 +115,33 @@ _ob_get_system_plat()
_ob_get_system_path()
{
- local path_id=
+ local path_id="${1}"
+ shift 1 || _ob_abort
local pkgver=
- path_id="${1}"
- shift 1
-
case "${path_id}" in
'package-source')
# source version
- if [ ${#} -eq 2 ]; then
- printf '/usr/src/%s_%s' "${1}" "${2}"
- else
- return 125
- fi
+ [ ${#} -eq 2 ] || _ob_abort
+ printf '/usr/src/%s_%s' "${1}" "${2}"
;;
'package-docs')
# source version
- if [ ${#} -eq 2 ]; then
- printf '/usr/share/doc/%s' "${1}"
- else
- return 125
- fi
+ [ ${#} -eq 2 ] || _ob_abort
+ printf '/usr/share/doc/%s' "${1}"
;;
'buildflags')
# arch
- if [ ${#} -eq 1 ]; then
- printf "${DATADIR}/opkbuild/buildflags/%s" "${1}"
- else
- return 125
- fi
+ [ ${#} -eq 1 ] || _ob_abort
+ printf "${DATADIR}/opkbuild/buildflags/%s" "${1}"
;;
'platconf')
# source version plat
- if [ ${#} -eq 3 ]; then
- ob_parse_version -u 'pkgver' "${2}"
- printf "${DATADIR}/platconf/%s/%s\n" "${3}" "${1}"
- printf "${DATADIR}/platconf/%s/%s_%s\n" "${3}" "${1}" \
- "${pkgver}"
- else
- return 125
- fi
+ [ ${#} -eq 3 ] || _ob_abort
+ ob_parse_version -u 'pkgver' "${2}"
+ printf "${DATADIR}/platconf/%s/%s\n" "${3}" "${1}"
+ printf "${DATADIR}/platconf/%s/%s_%s\n" "${3}" "${1}" \
+ "${pkgver}"
;;
esac
diff --git a/lib/output.sh b/lib/output.sh
index 4fe45f1..9d08759 100644
--- a/lib/output.sh
+++ b/lib/output.sh
@@ -32,7 +32,7 @@
ob_error()
{
local format="${1}"
- shift 1
+ shift 1 || _ob_abort
printf "$(_get_msg 'output_error_format')\n" "${0##*/}" "${@}" >&2
@@ -52,7 +52,7 @@ ob_error()
ob_warn()
{
local format="${1}"
- shift 1
+ shift 1 || _ob_abort
printf "$(_get_msg 'output_warning_format')\n" "${0##*/}" "${@}" >&2
@@ -72,7 +72,7 @@ ob_warn()
ob_info()
{
local format="${1}"
- shift 1
+ shift 1 || _ob_abort
printf "$(_get_msg 'output_info_format')\n" "${0##*/}" "${@}" >&2
@@ -82,7 +82,7 @@ ob_info()
_ob_error_msg()
{
local msgid="${1}"
- shift 1
+ shift 1 || _ob_abort
ob_error "$(_ob_get_msg "${msgid}")" "${@}"
@@ -92,7 +92,7 @@ _ob_error_msg()
_ob_warn_msg()
{
local msgid="${1}"
- shift 1
+ shift 1 || _ob_abort
ob_warn "$(_ob_get_msg "${msgid}")" "${@}"
@@ -102,7 +102,7 @@ _ob_warn_msg()
_ob_info_msg()
{
local msgid="${1}"
- shift 1
+ shift 1 || _ob_abort
ob_info "$(_ob_get_msg "${msgid}")" "${@}"
diff --git a/lib/package.sh b/lib/package.sh
index 8664c99..1a07019 100644
--- a/lib/package.sh
+++ b/lib/package.sh
@@ -25,13 +25,8 @@ _OB_BINARY_PARAMETERS=
ob_init_package()
{
- local dir=
-
- if [ ${#} -eq 1 ]; then
- dir="${1}"
- else
- return 125
- fi
+ local dir="${1}"
+ shift 1 || _ob_abort
_OB_PACKAGE_DIR="$(cd "${dir}" && pwd)"
@@ -55,10 +50,8 @@ ob_init_package()
_ob_package_do()
{
- local func=
-
- func="${1}"
- shift 1
+ local func="${1}"
+ shift 1 || _ob_abort
"_ob_${func}_${_OB_PACKAGE_FORMAT}" "${@}"
@@ -81,16 +74,12 @@ ob_parse_package_metadata()
cache_file="${OPTARG}"
;;
?)
- return 125
+ _ob_abort
;;
esac
done
shift $(($OPTIND - 1))
- if [ ${#} -gt 0 ]; then
- return 125
- fi
-
# Load a previously saved cache file, if any.
if [ -n "${cache_file}" -a -r "${cache_file}" ]; then
if [ "${cache_file#*/}" != "${cache_file}" ]; then
@@ -151,16 +140,12 @@ ob_get_binary_packages()
host_plat="${OPTARG}"
;;
?)
- return 125
+ _ob_abort
;;
esac
done
shift $(($OPTIND - 1))
- if [ ${#} -gt 0 ]; then
- return 125
- fi
-
# NB: If a source package lists no binary packages, this will be true each
# call.
if [ -z "${_OB_BINARY_PACKAGES}" ]; then
@@ -218,17 +203,12 @@ ob_get_binary_packages()
ob_get_source_parameter()
{
- local name=
-
- if [ ${#} -eq 1 ]; then
- name="${1}"
- else
- return 125
- fi
+ local name="${1}"
+ shift 1 || _ob_abort
# Convert field name to uppercase and validate.
case "${name}" in *[!A-Za-z0-9-]* | '')
- return 125
+ return 1
esac
name="$(tr 'a-z-' 'A-Z_' <<-EOF
${name}
@@ -242,18 +222,12 @@ ob_get_source_parameter()
ob_get_binary_parameter()
{
- local package=
- local name=
-
- if [ ${#} -eq 2 ]; then
- package="${1}"
- name="${2}"
- else
- return 125
- fi
+ local package="${1}"
+ local name="${2}"
+ shift 2 || _ob_abort
if ! ob_validate_binary_name "${package}"; then
- return 125
+ return 1
fi
# Convert package name to its uppercase "clean" form.
@@ -264,7 +238,7 @@ ob_get_binary_parameter()
# Convert field name to uppercase and validate.
case "${name}" in *[!A-Za-z0-9-]* | '')
- return 125
+ return 1
esac
name="$(tr 'a-z-' 'A-Z_' <<-EOF
${name}
@@ -278,10 +252,6 @@ ob_get_binary_parameter()
ob_get_doc_package()
{
- if [ ${#} -gt 0 ]; then
- return 125
- fi
-
_ob_package_do 'get_doc_package'
return ${?}
@@ -289,15 +259,9 @@ ob_get_doc_package()
ob_get_doc_files()
{
- local arch=
- local plat=
-
- if [ ${#} -eq 2 ]; then
- arch="${1}"
- plat="${2}"
- else
- return 125
- fi
+ local arch="${1}"
+ local plat="${2}"
+ shift 2 || _ob_abort
_ob_package_do 'get_doc_files' "${arch}" "${plat}"
@@ -306,10 +270,6 @@ ob_get_doc_files()
ob_summarize_package_arch()
{
- if [ ${#} -gt 0 ]; then
- return 125
- fi
-
# XXX: Stub.
return 0
@@ -317,10 +277,6 @@ ob_summarize_package_arch()
ob_summarize_package_plat()
{
- if [ ${#} -gt 0 ]; then
- return 125
- fi
-
# XXX: Stub.
return 0
@@ -328,13 +284,8 @@ ob_summarize_package_plat()
ob_set_package_substvars()
{
- local pkg=
-
- if [ ${#} -eq 1 ]; then
- pkg="${1}"
- else
- return 125
- fi
+ local pkg="${1}"
+ shift 1 || _ob_abort
_ob_package_do 'set_package_substvars' "${pkg}"
@@ -343,9 +294,8 @@ ob_set_package_substvars()
_ob_set_binary_packages()
{
- local packages=
-
- packages="${1}"
+ local packages="${1}"
+ shift 1 || _ob_abort
_OB_BINARY_PACKAGES="${packages}"
@@ -354,15 +304,13 @@ _ob_set_binary_packages()
_ob_set_source_parameter()
{
- local name=
- local value=
-
- name="${1}"
- value="${2}"
+ local name="${1}"
+ local value="${2}"
+ shift 2 || _ob_abort
# Convert field name to uppercase and validate.
case "${name}" in *[!A-Za-z0-9-]* | '')
- return 125
+ return 1
esac
name="$(tr 'a-z-' 'A-Z_' <<-EOF
${name}
@@ -378,16 +326,13 @@ _ob_set_source_parameter()
_ob_set_binary_parameter()
{
- local package=
- local name=
- local value=
-
- package="${1}"
- name="${2}"
- value="${3}"
+ local package="${1}"
+ local name="${2}"
+ local value="${3}"
+ shift 3 || _ob_abort
if ! ob_validate_binary_name "${package}"; then
- return 125
+ return 1
fi
# Convert package name to its uppercase "clean" form.
@@ -398,7 +343,7 @@ _ob_set_binary_parameter()
# Convert field name to uppercase and validate.
case "${name}" in *[!A-Za-z0-9-]* | '')
- return 125
+ return 1
esac
name="$(tr 'a-z-' 'A-Z_' <<-EOF
${name}
diff --git a/lib/package/2.sh b/lib/package/2.sh
index 551f199..3e362f4 100644
--- a/lib/package/2.sh
+++ b/lib/package/2.sh
@@ -70,7 +70,7 @@ _ob_srcfield_2()
local name="${1}"
local value="${2}"
local user_data="${3}"
- shift 3
+ shift 3 || _ob_abort
_ob_set_source_parameter "${name}" "${value}"
@@ -95,7 +95,7 @@ _ob_binfield_2()
local name="${1}"
local value="${2}"
local pkg="${3}"
- shift 3
+ shift 3 || _ob_abort
_ob_set_binary_parameter "${pkg}" "${name}" "${value}"
@@ -127,13 +127,11 @@ _ob_get_doc_package_2()
_ob_get_doc_files_2()
{
- local arch=
- local plat=
+ local arch="${1}"
+ local plat="${2}"
+ shift 2 || _ob_abort
local doc_pkg=
- arch="${1}"
- plat="${2}"
-
doc_pkg="$(_ob_get_doc_package_2)"
cat <<-EOF
@@ -148,13 +146,8 @@ _ob_get_doc_files_2()
_ob_set_package_substvars_2()
{
- local pkg=
-
- if [ ${#} -eq 1 ]; then
- pkg="${1}"
- else
- return 125
- fi
+ local pkg="${1}"
+ shift 1 || _ob_abort
if [ -f "${_OB_PACKAGE_DIR}/substvars" ]; then
ob_parse_control "${_OB_PACKAGE_DIR}/substvars" \
@@ -174,7 +167,7 @@ _ob_substvar_2()
local name="${1}"
local value="${2}"
local user_data="${3}"
- shift 3
+ shift 3 || _ob_abort
ob_set_substvar "${name}" "${value}"