#!@@SHELL@@ # # 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 ${?} }