diff options
Diffstat (limited to 'lib/common.sh')
-rw-r--r-- | lib/common.sh | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/lib/common.sh b/lib/common.sh new file mode 100644 index 0000000..b0c465c --- /dev/null +++ b/lib/common.sh @@ -0,0 +1,62 @@ +# 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} +} + +oh_init() +{ + ob_use locale + ob_use output + + # Since nothing other than opkhelper is supposed to use libopkhelper, we can + # do strange things like affecting application-wide locale settings from the + # library and assume that no one will play with them. + ob_set_locale_path '@@LOCALEDIR@@/%s/LC_MESSAGES/%s.ms' + ob_set_text_domain 'opkhelper' +} |