diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Makefile.in | 2 | ||||
-rw-r--r-- | lib/common.sh | 50 | ||||
-rw-r--r-- | lib/load.sh | 48 |
3 files changed, 99 insertions, 1 deletions
diff --git a/lib/Makefile.in b/lib/Makefile.in index 78cdc44..c8d0b07 100644 --- a/lib/Makefile.in +++ b/lib/Makefile.in @@ -35,7 +35,7 @@ sed_script = s&@@PACKAGE_NAME@@&$(package_name)&;\ .SUFFIXES: .SUFFIXES: .sh .sm -SRCS = +SRCS = load.sh common.sh OBJS = $(SRCS:.sh=.sm) distdir = ../$(package_name)-$(package_version)/lib diff --git a/lib/common.sh b/lib/common.sh new file mode 100644 index 0000000..14762db --- /dev/null +++ b/lib/common.sh @@ -0,0 +1,50 @@ +# opkhelper +# lib/common +# Functions for stack memory management. +# +# 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 2 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/>. + +[ -n "${_OH_COMMON_SM}" ] && return 0 +_OH_COMMON_SM='true' + +_OH_STACK_VARS= +_OH_SAVED_IFS= + +_oh_local() +{ + # Push the variable list onto the stack. + _OH_STACK_VARS="${_OH_STACK_VARS}|${*}" + + # Save the old IFS value, if any, and set it to its default. + _OH_SAVED_IFS="${IFS}" + IFS=' +' +} + +_oh_return() +{ + # Unset the variables at the top of the stack. + IFS=' ' + unset -v ${_OH_STACK_VARS##*|} + + # Pop the variable list from the top of the stack. + _OH_STACK_VARS="${_OH_STACK_VARS%|*}" + + # Restore the saved IFS. + IFS="${_OH_SAVED_IFS}" + + return ${1} +} diff --git a/lib/load.sh b/lib/load.sh new file mode 100644 index 0000000..2a71036 --- /dev/null +++ b/lib/load.sh @@ -0,0 +1,48 @@ +# opkhelper +# lib/load +# Functions for loading library modules. +# +# 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 2 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/>. + +[ -n "${_OH_LOAD_SM}" ] && return 0 +_OH_LOAD_SM='true' + +# The "common" module is used by this and all other modules. +# We have to manually load the "common" module so we can use it in oh_use. +. '@@LIBOPKHELPER@@/common.sm' + +oh_use() +{ + _oh_local _ohu_module + + if [ ${#} -eq 1 ]; then + _ohu_module="${1}" + else + _oh_return 125 + return ${?} + fi + + _ohu_module='@@LIBOPKHELPER@@'"/${_ohu_module}.sm" + if [ -r "${_ohu_module}" ]; then + . "${_ohu_module}" + else + _oh_return 1 + return ${?} + fi + + _oh_return 0 + return ${?} +} |