summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorP. J. McDermott <pjm@nac.net>2014-02-25 13:16:28 (EST)
committer P. J. McDermott <pjm@nac.net>2014-02-25 13:16:28 (EST)
commite4e9b382499329a499459df0022108766426c2ac (patch)
tree8df466c2609868cdfc0ba0bcb5b673921e4dd521 /lib
parent06b4ef4c6fa9f4bdbeec62a2513f0db9a93176c1 (diff)
parent2dfe7dd1fa038db1bd36247938d07e6a254fa663 (diff)
Merge branch 'feature/drop-libopkbuild-dep'.
Conflicts: configure
Diffstat (limited to 'lib')
-rw-r--r--lib/buildsystem.sh4
-rw-r--r--lib/common.sh8
-rw-r--r--lib/load.sh3
-rw-r--r--lib/local.mk2
-rw-r--r--lib/locale.sh121
-rw-r--r--lib/output.sh51
6 files changed, 180 insertions, 9 deletions
diff --git a/lib/buildsystem.sh b/lib/buildsystem.sh
index 8e6bf0a..39dcceb 100644
--- a/lib/buildsystem.sh
+++ b/lib/buildsystem.sh
@@ -114,7 +114,7 @@ oh_buildsystem_find()
done
fi
- ob_warn "$(ob_get_msg 'no_capable_build_sys')"
+ oh_warn "$(oh_get_msg 'no_capable_build_sys')"
return 1
}
@@ -165,6 +165,6 @@ oh_buildsystem_arch()
fi
done
- ob_warn "$(ob_get_msg 'no_capable_host_arch')"
+ oh_warn "$(oh_get_msg 'no_capable_host_arch')"
return 1
}
diff --git a/lib/common.sh b/lib/common.sh
index c9fdc22..52833f4 100644
--- a/lib/common.sh
+++ b/lib/common.sh
@@ -22,12 +22,12 @@ _OH_COMMON_SM='true'
oh_init()
{
- ob_use locale
- ob_use output
+ oh_use locale
+ oh_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'
+ oh_set_locale_path '@@LOCALEDIR@@/%s/LC_MESSAGES/%s.ms'
+ oh_set_text_domain 'opkhelper'
}
diff --git a/lib/load.sh b/lib/load.sh
index 6dcec88..9af4958 100644
--- a/lib/load.sh
+++ b/lib/load.sh
@@ -24,9 +24,6 @@ _OH_LOAD_SM='true'
# We have to manually load the "common" module so we can use it in oh_use.
. '@@PKGLIBDIR@@/common.sm'
-# Assume that every library module and utility uses libopkbuild.
-. '@@LIBOPKBUILD_1@@/load.sm'
-
oh_use()
{
local module=
diff --git a/lib/local.mk b/lib/local.mk
index e249963..0f7c62d 100644
--- a/lib/local.mk
+++ b/lib/local.mk
@@ -19,5 +19,7 @@
pkglib_srcs = \
lib/load.sh \
lib/common.sh \
+ lib/output.sh \
+ lib/locale.sh \
lib/buildsystem.sh \
$(lib_buildsystem_srcs)
diff --git a/lib/locale.sh b/lib/locale.sh
new file mode 100644
index 0000000..c8075ea
--- /dev/null
+++ b/lib/locale.sh
@@ -0,0 +1,121 @@
+# opkbuild
+# lib/locale
+# Locale functions.
+#
+# 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_LOCALE_SM}" ] && return 0
+_OH_LOCALE_SM='true'
+
+oh_use output
+
+_OH_DEFAULT_LOCALE='en_US'
+_OH_INTERNAL_TEXT_DOMAIN='opkhelper'
+_OH_TEXT_DOMAIN=
+_OH_LOCALE_PATH='@@LOCALEDIR@@/%s/LC_MESSAGES/%s.ms'
+
+oh_get_text_domain()
+{
+ if [ ${#} -ne 0 ]; then
+ return 125
+ fi
+
+ echo "${_OH_TEXT_DOMAIN}"
+ return 0
+}
+
+oh_set_text_domain()
+{
+ if [ ${#} -eq 1 ]; then
+ _OH_TEXT_DOMAIN="${1}"
+ else
+ return 125
+ fi
+
+ # Make sure LC_MESSAGES is set.
+ if [ -z "${LC_MESSAGES}" ]; then
+ if [ -n "${LC_ALL}" ]; then
+ LC_MESSAGES="${LC_ALL}"
+ elif [ -n "${LANG}" ]; then
+ LC_MESSAGES="${LANG}"
+ else
+ LC_MESSAGES="${_OH_DEFAULT_LOCALE}"
+ fi
+ fi
+
+ # TODO: Exit early if domain's messages have already been loaded.
+
+ # Try to load the messages.
+ if ! _oh_try_load_messages "${LC_MESSAGES%.*}"; then
+ if ! _oh_try_load_messages "${LC_MESSAGES%_*}"; then
+ if ! _oh_try_load_messages "${_OH_DEFAULT_LOCALE}"; then
+ oh_warn 'Cannot load messages in "%s" domain.' \
+ "${_OH_TEXT_DOMAIN}"
+ return 1
+ fi
+ fi
+ fi
+
+ return 0
+}
+
+oh_set_locale_path()
+{
+ local format=
+
+ if [ ${#} -eq 1 ]; then
+ format="${1}"
+ else
+ return 125
+ fi
+
+ _OH_LOCALE_PATH="${format}"
+
+ return 0
+}
+
+oh_get_msg()
+{
+ local msgid=
+
+ if [ ${#} -eq 1 ]; then
+ msgid="${1}"
+ else
+ return 125
+ fi
+
+ IFS= eval echo \$\{"msg_${_OH_TEXT_DOMAIN}_${msgid}"\}
+
+ return 0
+}
+
+_oh_try_load_messages()
+{
+ local locale=
+ local ms=
+
+ locale="${1}"
+ ms="$(printf "${_OH_LOCALE_PATH}" \
+ "${locale}" "${_OH_TEXT_DOMAIN}")"
+
+ if [ -f "${ms}" ]; then
+ . "${ms}"
+ else
+ return 1
+ fi
+
+ return 0
+}
diff --git a/lib/output.sh b/lib/output.sh
new file mode 100644
index 0000000..9459e37
--- /dev/null
+++ b/lib/output.sh
@@ -0,0 +1,51 @@
+# opkhelper
+# lib/output
+# Functions for printing messages.
+#
+# Copyright (C) 2013-2014 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_OUTPUT_SM}" ] && return 0
+_OH_OUTPUT_SM='true'
+
+oh_error()
+{
+ local fmt="${1}"
+ shift 1
+
+ printf "%s: Error: ${fmt}\n" "${0##*/}" "${@}" >&2
+
+ exit 1
+}
+
+oh_warn()
+{
+ local fmt="${1}"
+ shift 1
+
+ printf "%s: Warning: ${fmt}\n" "${0##*/}" "${@}" >&2
+
+ return 0
+}
+
+oh_info()
+{
+ local fmt="${1}"
+ shift 1
+
+ printf "%s: ${fmt}\n" "${0##*/}" "${@}" >&2
+
+ return 0
+}