diff options
author | P. J. McDermott <pjm@nac.net> | 2012-03-06 13:39:44 (EST) |
---|---|---|
committer | P. J. McDermott <pjm@nac.net> | 2012-03-06 13:39:44 (EST) |
commit | e206c6620ac6c3f2fd01dd2d1b1390e6e262cd8f (patch) | |
tree | 9b386e043d6e6f6dc728b2df201e2aa7ee4f2886 /lib/controlfields.sh | |
parent | f74139e8e838a3b3d68ba3ca5f203a24241cf489 (diff) |
Rename all source files.
Diffstat (limited to 'lib/controlfields.sh')
-rw-r--r-- | lib/controlfields.sh | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/lib/controlfields.sh b/lib/controlfields.sh new file mode 100644 index 0000000..cf0075f --- /dev/null +++ b/lib/controlfields.sh @@ -0,0 +1,88 @@ +#! /bin/sh +# +# opkhelper +# lib/controlfields +# Functions for parsing control fields. +# +# Copyright (C) 2012 Patrick "P. J." McDermott +# +# This program 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. +# +# This program 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 this program. If not, see <http://www.gnu.org/licenses/>. + +# Gets a control field value. +# Parameters: +# package name (if omitted, source package control file is read) +# field name +# Output: +# field value +# Return value: +# 0 on success +# 1 on missing field +# 255 on invalid invocation +#oh_get_folded_multiline_field() +oh_get_field() +{ + case ${#} in + 1) + _control=../control + _field=${1} + ;; + 2) + _control=../${1}.pkg/control + _field=${2} + ;; + *) + return 255 + ;; + esac + + # Force the 'read' utility to read until a line break character. + _OLDIFS="${IFS}" + IFS=' +' + + # Parse the control file. + _value='' + while read -r _line; do + if [ -z "${_value}" ]; then + _value=$(echo "${_line}" | sed -n \ + "s/^${_field}:[[:space:]]*\(.*\)[[:space:]]*$/\\1/p") + else + if echo "${_line}" | grep '^ ' > /dev/null; then + _value="${_value} +${_line}" + else + break + fi + fi + done < ${_control} + + # Reset the IFS. + IFS="${_OLDIFS}" + + [ -z "${_value}" ] && return 1 + echo "${_value}" + return 0 +} + +# Validates a package name. +# Parameters: +# package name +# Return value: +# 0 on valid name +# 1 on invalid name +oh_validate_pkg_name() +{ + echo "${1}" | grep -E '^[a-z0-9][a-z0-9.+-]+$' > /dev/null + return ${?} +} |