From e206c6620ac6c3f2fd01dd2d1b1390e6e262cd8f Mon Sep 17 00:00:00 2001 From: P. J. McDermott Date: Tue, 06 Mar 2012 13:39:44 -0500 Subject: Rename all source files. --- (limited to 'lib/controlfields.sh') 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 . + +# 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 ${?} +} -- cgit v0.9.1