diff options
author | Mike Frysinger <vapier@gentoo.org> | 2008-05-05 03:52:46 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2008-05-05 03:52:46 +0000 |
commit | 4728804b32e00283695438312dbdc0ad1fc7c4db (patch) | |
tree | 38cedd7edb88b2a67d3d90bf0007d165c0d20e06 /sys-apps/openrc | |
parent | arm/s390 stable (diff) | |
download | historical-4728804b32e00283695438312dbdc0ad1fc7c4db.tar.gz historical-4728804b32e00283695438312dbdc0ad1fc7c4db.tar.bz2 historical-4728804b32e00283695438312dbdc0ad1fc7c4db.zip |
old
Diffstat (limited to 'sys-apps/openrc')
6 files changed, 0 insertions, 516 deletions
diff --git a/sys-apps/openrc/files/openrc-0.2.1-bad--help-output.patch b/sys-apps/openrc/files/openrc-0.2.1-bad--help-output.patch deleted file mode 100644 index c982bcc00ff8..000000000000 --- a/sys-apps/openrc/files/openrc-0.2.1-bad--help-output.patch +++ /dev/null @@ -1,20 +0,0 @@ -From: Roy Marples <roy@marples.name> -Date: Mon, 7 Apr 2008 11:48:32 +0000 (+0100) -Subject: Fix rc-service --help output. -X-Git-Url: http://git.overlays.gentoo.org/gitweb/?p=proj%2Fopenrc.git;a=commitdiff_plain;h=71faee1761a57203386a7f0540cc19f5de10faa7 - -Fix rc-service --help output. ---- - -diff --git a/src/rc/rc-service.c b/src/rc/rc-service.c -index 5c6fc3d..bcbf3db 100644 ---- a/src/rc/rc-service.c -+++ b/src/rc/rc-service.c -@@ -51,6 +51,7 @@ static const struct option longopts[] = { - longopts_COMMON - }; - static const char * const longopts_help[] = { -+ "tests if the service exists or not", - "list all available services", - longopts_help_COMMON - }; diff --git a/sys-apps/openrc/files/openrc-0.2.1-empty-list-crash.patch b/sys-apps/openrc/files/openrc-0.2.1-empty-list-crash.patch deleted file mode 100644 index b8173e55d8fa..000000000000 --- a/sys-apps/openrc/files/openrc-0.2.1-empty-list-crash.patch +++ /dev/null @@ -1,103 +0,0 @@ -diff --git a/src/rc/runscript.c b/src/rc/runscript.c -index 421f432..aa4a602 100644 ---- a/src/rc/runscript.c -+++ b/src/rc/runscript.c -@@ -648,6 +648,19 @@ static void setup_types(void) - rc_stringlist_add(types_mua, "beforeme"); - } - -+static bool in_list(RC_STRINGLIST *list, char *string) -+{ -+ RC_STRING *s; -+ -+ if (! list) -+ return false; -+ TAILQ_FOREACH(s, list, entries) -+ if (strcmp(s->value, string) == 0) -+ return true; -+ return false; -+} -+ -+ - static void svc_start(bool deps) - { - bool started; -@@ -747,35 +760,29 @@ static void svc_start(bool deps) - /* Don't wait for services which went inactive but are now in - * starting state which we are after */ - if (svcs & RC_SERVICE_STARTING && -- svcs & RC_SERVICE_WASINACTIVE) { -- TAILQ_FOREACH(svc2, use_services, entries) { -- if (strcmp (svc->value, svc2->value) == 0) -- break; -- } -- if (! svc2) -+ svcs & RC_SERVICE_WASINACTIVE) -+ { -+ if (!in_list(need_services, svc->value) && -+ !in_list(use_services, svc->value)) - continue; - } - - if (! svc_wait(svc->value)) - eerror ("%s: timed out waiting for %s", - applet, svc->value); -- if (! need_services) -- continue; - if ((svcs = rc_service_state(svc->value)) & RC_SERVICE_STARTED) - continue; -- TAILQ_FOREACH(svc2, need_services, entries) { -- if (strcmp (svc->value, svc2->value) == 0) { -- if (svcs & RC_SERVICE_INACTIVE || -- svcs & RC_SERVICE_WASINACTIVE) -- { -- if (! tmplist) -- tmplist = rc_stringlist_new(); -- rc_stringlist_add(tmplist, svc->value); -- } else -- eerrorx("ERROR: cannot start %s as" -- " %s would not start", -- applet, svc->value); -- } -+ if (in_list(need_services, svc->value)) { -+ if (svcs & RC_SERVICE_INACTIVE || -+ svcs & RC_SERVICE_WASINACTIVE) -+ { -+ if (! tmplist) -+ tmplist = rc_stringlist_new(); -+ rc_stringlist_add(tmplist, svc->value); -+ } else -+ eerrorx("ERROR: cannot start %s as" -+ " %s would not start", -+ applet, svc->value); - } - } - -@@ -932,12 +939,12 @@ static void svc_stop(bool deps) - TAILQ_FOREACH_REVERSE(svc, services, rc_stringlist, entries) { - RC_SERVICE svcs = rc_service_state(svc->value); - if (svcs & RC_SERVICE_STARTED || -- svcs & RC_SERVICE_INACTIVE) -+ svcs & RC_SERVICE_INACTIVE) - { - svc_wait(svc->value); - svcs = rc_service_state(svc->value); - if (svcs & RC_SERVICE_STARTED || -- svcs & RC_SERVICE_INACTIVE) -+ svcs & RC_SERVICE_INACTIVE) - { - pid_t pid = service_stop(svc->value); - if (! rc_conf_yesno("rc_parallel")) -@@ -964,9 +971,9 @@ static void svc_stop(bool deps) - /* If shutting down, we should stop even - * if a dependant failed */ - if (runlevel && -- (strcmp(runlevel, RC_LEVEL_SHUTDOWN) == 0 || -- strcmp(runlevel, RC_LEVEL_REBOOT) == 0 || -- strcmp(runlevel, RC_LEVEL_SINGLE) == 0)) -+ (strcmp(runlevel, RC_LEVEL_SHUTDOWN) == 0 || -+ strcmp(runlevel, RC_LEVEL_REBOOT) == 0 || -+ strcmp(runlevel, RC_LEVEL_SINGLE) == 0)) - continue; - rc_service_mark(service, RC_SERVICE_FAILED); - } diff --git a/sys-apps/openrc/files/openrc-0.2.1-no-deref-null.patch b/sys-apps/openrc/files/openrc-0.2.1-no-deref-null.patch deleted file mode 100644 index 00963f0b41db..000000000000 --- a/sys-apps/openrc/files/openrc-0.2.1-no-deref-null.patch +++ /dev/null @@ -1,21 +0,0 @@ -From: DragonK <dragonk@gmail.com> -Date: Sun, 6 Apr 2008 13:21:42 +0000 (+0100) -Subject: p could be null here. -X-Git-Url: http://git.overlays.gentoo.org/gitweb/?p=proj%2Fopenrc.git;a=commitdiff_plain;h=f183081181319271bad39cb00ff2970dc4a4ae42 - -p could be null here. ---- - -diff --git a/src/rc/rc-applets.c b/src/rc/rc-applets.c -index 70f3a04..d434be4 100644 ---- a/src/rc/rc-applets.c -+++ b/src/rc/rc-applets.c -@@ -110,7 +110,7 @@ static int do_e(int argc, char **argv) - } else if (strcmp(applet, "esyslog") == 0 || - strcmp(applet, "elog") == 0) { - p = strchr(argv[0], '.'); -- if ((level = syslog_decode(p + 1, prioritynames)) == -1) -+ if (!p || (level = syslog_decode(p + 1, prioritynames)) == -1) - eerrorx("%s: invalid log level `%s'", applet, argv[0]); - - if (argc < 3) diff --git a/sys-apps/openrc/files/openrc-0.2.1-openvz-support.patch b/sys-apps/openrc/files/openrc-0.2.1-openvz-support.patch deleted file mode 100644 index 6d017e2f3a66..000000000000 --- a/sys-apps/openrc/files/openrc-0.2.1-openvz-support.patch +++ /dev/null @@ -1,53 +0,0 @@ -From: Roy Marples <roy@marples.name> -Date: Sun, 6 Apr 2008 20:06:07 +0000 (+0100) -Subject: Some systems are only detectable after /proc is mounted, so re-test if unknown. -X-Git-Url: http://git.overlays.gentoo.org/gitweb/?p=proj%2Fopenrc.git;a=commitdiff_plain;h=6a670fe8314be48994cbe1603312015a549f0e94 - -Some systems are only detectable after /proc is mounted, so re-test if unknown. ---- - -diff --git a/sh/init.sh.Linux.in b/sh/init.sh.Linux.in -index 25a3ecb..5aa5031 100644 ---- a/sh/init.sh.Linux.in -+++ b/sh/init.sh.Linux.in -@@ -96,6 +96,9 @@ if ${mountproc}; then - fi - unset mountproc - -+# Re-load RC_SYS if empty now we have /proc mounted -+[ -z "${RC_SYS}" ] && export RC_SYS="$(rc --sys)" -+ - # Read off the kernel commandline to see if there's any special settings - # especially check to see if we need to set the CDBOOT environment variable - # Note: /proc MUST be mounted -diff --git a/src/rc/rc.c b/src/rc/rc.c -index b305b2d..5ae7e1f 100644 ---- a/src/rc/rc.c -+++ b/src/rc/rc.c -@@ -935,11 +935,13 @@ static void handle_bad_signal(int sig) - static const struct option longopts[] = { - { "override", 1, NULL, 'o' }, - { "service", 1, NULL, 's' }, -+ { "sys", 0, NULL, 'S' }, - longopts_COMMON - }; - static const char * const longopts_help[] = { - "override the next runlevel to change into\nwhen leaving single user or boot runlevels", - "runs the service specified with the rest\nof the arguments", -+ "output the RC system type, if any", - longopts_help_COMMON - }; - #include "_usage.c" -@@ -1028,6 +1030,12 @@ int main(int argc, char **argv) - execv(*argv, argv); - eerrorx("%s: %s", applet, strerror(errno)); - /* NOTREACHED */ -+ case 'S': -+ bootlevel = rc_sys(); -+ if (bootlevel) -+ printf("%s\n", bootlevel); -+ exit(EXIT_SUCCESS); -+ /* NOTREACHED */ - case_RC_COMMON_GETOPT - } - } diff --git a/sys-apps/openrc/files/openrc-0.2.1-respect-fastboot.patch b/sys-apps/openrc/files/openrc-0.2.1-respect-fastboot.patch deleted file mode 100644 index f657fd7a658b..000000000000 --- a/sys-apps/openrc/files/openrc-0.2.1-respect-fastboot.patch +++ /dev/null @@ -1,43 +0,0 @@ -From: Roy Marples <roy@marples.name> -Date: Wed, 9 Apr 2008 00:21:49 +0000 (+0100) -Subject: Respect shutdown's fastboot. -X-Git-Url: http://git.overlays.gentoo.org/gitweb/?p=proj%2Fopenrc.git;a=commitdiff_plain;h=a57e9df2a084350cf18a414b5d92e9fcc8aea6ae - -Respect shutdown's fastboot. ---- - -diff --git a/init.d/fsck.in b/init.d/fsck.in -index 5bf9ba8..f469ce8 100644 ---- a/init.d/fsck.in -+++ b/init.d/fsck.in -@@ -29,6 +29,11 @@ start() - { - local reboot_opts= fsck_opts= p= - -+ if [ -e /fastboot ]; then -+ ewarn "Skipping fsck due to /fastboot" -+ return 0 -+ fi -+ - ebegin "Checking local filesystems" - for p in ${fsck_passno}; do - local IFS="${_IFS}" -diff --git a/init.d/root.in b/init.d/root.in -index c87b7f1..aba6415 100644 ---- a/init.d/root.in -+++ b/init.d/root.in -@@ -13,7 +13,7 @@ depend() - start() - { - if echo 2>/dev/null >/.test.$$; then -- rm -f /.test.$$ -+ rm -f /.test.$$ /fastboot - return 0 - fi - -@@ -23,4 +23,5 @@ start() - *) mount -u -o rw /;; - esac - eend $? "Root filesystem could not be mounted read/write" -+ rm -f /fastboot - } diff --git a/sys-apps/openrc/openrc-0.2.1-r2.ebuild b/sys-apps/openrc/openrc-0.2.1-r2.ebuild deleted file mode 100644 index 43304b420d7d..000000000000 --- a/sys-apps/openrc/openrc-0.2.1-r2.ebuild +++ /dev/null @@ -1,276 +0,0 @@ -# Copyright 1999-2008 Gentoo Foundation -# Distributed under the terms of the GNU General Public License v2 -# $Header: /var/cvsroot/gentoo-x86/sys-apps/openrc/openrc-0.2.1-r2.ebuild,v 1.6 2008/04/15 22:41:10 vapier Exp $ - -inherit eutils flag-o-matic multilib toolchain-funcs - -if [[ ${PV} == "9999" ]] ; then - EGIT_REPO_URI="git://git.overlays.gentoo.org/proj/openrc.git" - EGIT_BRANCH="master" - inherit git -else - SRC_URI="http://roy.marples.name/${PN}/${P}.tar.bz2 - mirror://gentoo/${P}.tar.bz2 - http://dev.gentoo.org/~cardoe/files/${P}.tar.bz2 - http://dev.gentoo.org/~vapier/dist/${P}.tar.bz2" -fi - -DESCRIPTION="OpenRC manages the services, startup and shutdown of a host" -HOMEPAGE="http://roy.marples.name/openrc" - -LICENSE="BSD-2" -SLOT="0" -KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd" -IUSE="debug ncurses pam unicode kernel_linux kernel_FreeBSD" - -RDEPEND="virtual/init - kernel_linux? ( >=sys-apps/module-init-tools-3.2.2-r2 ) - kernel_FreeBSD? ( sys-process/fuser-bsd ) - ncurses? ( sys-libs/ncurses ) - pam? ( virtual/pam ) - >=sys-apps/baselayout-2.0.0 - !<sys-fs/udev-118-r2" -DEPEND="${RDEPEND} - virtual/os-headers" - -pkg_setup() { - LIBDIR="lib" - [ "${SYMLINK_LIB}" = "yes" ] && LIBDIR=$(get_abi_LIBDIR "${DEFAULT_ABI}") - - MAKE_ARGS="${MAKE_ARGS} LIBNAME=${LIBDIR}" - - local brand="Unknown" - if use kernel_linux ; then - MAKE_ARGS="${MAKE_ARGS} OS=Linux" - brand="Linux" - elif use kernel_FreeBSD ; then - MAKE_ARGS="${MAKE_ARGS} OS=FreeBSD" - brand="FreeBSD" - fi - export BRANDING="Gentoo ${brand}" - - export DEBUG=$(usev debug) - export MKPAM=$(usev pam) - export MKTERMCAP=$(usev ncurses) -} - -src_unpack() { - if [[ ${PV} == "9999" ]] ; then - git_src_unpack - else - unpack ${A} - fi - cd "${S}" - epatch "${FILESDIR}"/9999/*.patch - - epatch "${FILESDIR}"/${PN}-0.2.1-empty-list-crash.patch - epatch "${FILESDIR}"/${PN}-0.2.1-no-deref-null.patch - epatch "${FILESDIR}"/${PN}-0.2.1-bad--help-output.patch - epatch "${FILESDIR}"/${PN}-0.2.1-openvz-support.patch - epatch "${FILESDIR}"/${PN}-0.2.1-respect-fastboot.patch -} - -src_compile() { - # catch people running `ebuild` w/out setup - if [[ -z ${MAKE_ARGS} ]] ; then - die "Your MAKE_ARGS is empty ... are you running 'ebuild' but forgot to execute 'setup' ?" - fi - - if [[ ${PV} == "9999" ]] ; then - local ver="git-$(git --git-dir=${EGIT_STORE_DIR}/${EGIT_PROJECT} rev-parse --verify ${EGIT_BRANCH} | cut -c1-8)" - sed -i "/^VERSION[[:space:]]*=/s:=.*:=${ver}:" Makefile - fi - - tc-export CC AR RANLIB - echo emake ${MAKE_ARGS} - emake ${MAKE_ARGS} || die "emake ${MAKE_ARGS} failed" -} - -src_install() { - emake ${MAKE_ARGS} DESTDIR="${D}" install || die "make install failed" - gen_usr_ldscript libeinfo.so - gen_usr_ldscript librc.so - - keepdir /"${LIBDIR}"/rc/init.d - keepdir /"${LIBDIR}"/rc/tmp - - # Backup our default runlevels - dodir /usr/share/"${PN}" - mv "${D}/etc/runlevels" "${D}/usr/share/${PN}" - - # Setup unicode defaults for silly unicode users - use unicode && sed -i -e '/^unicode=/s:NO:YES:' "${D}"/etc/rc.conf - - # Cater to the norm - (use x86 || use amd64) && sed -i -e '/^windowkeys=/s:NO:YES:' "${D}"/etc/conf.d/keymaps -} - -add_boot_init() { - local initd=$1 - # if the initscript is not going to be installed and is not - # currently installed, return - [[ -e ${D}/etc/init.d/${initd} || -e ${ROOT}/etc/init.d/${initd} ]] \ - || return - [[ -e ${ROOT}/etc/runlevels/boot/${initd} ]] && return - elog "Auto-adding '${initd}' service to your boot runlevel" - ln -snf /etc/init.d/${initd} "${ROOT}"/etc/runlevels/boot/${initd} -} -add_boot_init_mit_config() { - local config=$1 initd=$2 - if [[ -e ${ROOT}${config} ]] ; then - if [[ -n $(sed -e 's:#.*::' -e '/^[[:space:]]*$/d' "${ROOT}"/${config}) ]] ; then - add_boot_init ${initd} - fi - fi -} - -pkg_preinst() { - local f - - # default net script is just comments, so no point in biting people - # in the ass by accident - mv "${D}"/etc/conf.d/net "${T}"/ - [[ -e ${ROOT}/etc/conf.d/net ]] && cp "${ROOT}"/etc/conf.d/net "${T}"/ - - # /etc/conf.d/clock moved to /etc/conf.d/hwclock - local clock - use kernel_FreeBSD && clock="adjkerntz" || clock="hwclock" - if [[ -e ${ROOT}/etc/conf.d/clock ]] ; then - mv "${ROOT}"/etc/conf.d/clock "${ROOT}"/etc/conf.d/${clock} - fi - if [[ -L ${ROOT}/etc/runlevels/boot/clock ]] ; then - rm -f "${ROOT}"/etc/runlevels/boot/clock - ln -snf /etc/init.d/${clock} "${ROOT}"/etc/runlevels/boot/${clock} - fi - if [[ -L ${ROOT}${LIBDIR}/rc/init.d/started/clock ]] ; then - rm -f "${ROOT}${LIBDIR}"/rc/init.d/started/clock - ln -snf /etc/init.d/${clock} "${ROOT}${LIBDIR}"/rc/init.d/started/${clock} - fi - - # /etc/conf.d/rc is no longer used for configuration - if [[ -e ${ROOT}/etc/conf.d/rc ]] ; then - elog "/etc/conf.d/rc is no longer used for configuration." - elog "Please migrate your settings to /etc/rc.conf as applicable" - elog "and delete /etc/conf.d/rc" - fi - - # upgrade timezone file - if [[ -e ${ROOT}/etc/conf.d/clock && ! -e ${ROOT}/etc/timezone ]] ; then - ( - source "${ROOT}"/etc/conf.d/clock - [[ -n ${TIMEZONE} ]] && echo "${TIMEZONE}" > "${ROOT}"/etc/timezone - ) - fi - - # force net init.d scripts into symlinks - for f in $(find "${ROOT}"/etc/init.d/ -name 'net.*') ; do - [[ ${f} == *.openrc.bak ]] && continue - if [[ ! -L ${f} ]] ; then - elog "Moved net service '${f##*/}' to '${f##*/}.openrc.bak' to force a symlink." - elog "You should delete '${f##*/}.openrc.bak' if you don't need it." - mv "${f}" "${f}.openrc.bak" - ln -snf net.lo "${f}" - fi - done - - # termencoding was added in 0.2.1 and needed in boot - has_version ">=sys-apps/openrc-0.2.1" || add_boot_init termencoding - - # skip remaining migration if we already have openrc installed - has_version sys-apps/openrc && return 0 - - # baselayout boot init scripts have been split out - for f in $(cd "${D}"/usr/share/${PN}/runlevels/boot || exit; echo *) ; do - add_boot_init ${f} - done - - # Try to auto-add some addons when possible - add_boot_init_mit_config /etc/conf.d/cryptfs dmcrypt - add_boot_init_mit_config /etc/conf.d/dmcrypt dmcrypt - add_boot_init_mit_config /etc/mdadm.conf mdraid - add_boot_init_mit_config /etc/evms.conf evms - [[ -e ${ROOT}/sbin/dmsetup ]] && add_boot_init device-mapper - [[ -e ${ROOT}/sbin/vgscan ]] && add_boot_init lvm - elog "Add on services (such as RAID/dmcrypt/LVM/etc...) are now stand alone" - elog "init.d scripts. If you use such a thing, make sure you have the" - elog "required init.d scripts added to your boot runlevel." - - # Upgrade out state for baselayout-1 users - if [[ ! -e ${ROOT}${LIBDIR}/rc/init.d/started ]] ; then - ( - [[ -e ${ROOT}/etc/conf.d/rc ]] && source "${ROOT}"/etc/conf.d/rc - svcdir=${svcdir:-/var/lib/init.d} - if [[ ! -d ${ROOT}${svcdir}/started ]] ; then - ewarn "No state found, and no state exists" - elog "You should reboot this host" - else - mkdir -p "${ROOT}${LIBDIR}/rc/init.d" - einfo "Moving state from ${ROOT}${svcdir} to ${ROOT}${LIBDIR}/rc/init.d" - mv "${ROOT}${svcdir}"/* "${ROOT}${LIBDIR}"/rc/init.d - rm -rf "${ROOT}${LIBDIR}"/rc/init.d/daemons \ - "${ROOT}${LIBDIR}"/rc/init.d/console - umount "${ROOT}${svcdir}" 2>/dev/null - rm -rf "${ROOT}${svcdir}" - fi - ) - fi - - # Handle the /etc/modules.autoload.d -> /etc/conf.d/modules transition - if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then - elog "Converting your /etc/modules.autoload.d/ files to /etc/conf.d/modules" - rm -f "${ROOT}"/etc/modules.autoload.d/.keep* - rmdir "${ROOT}"/etc/modules.autoload.d 2>/dev/null - if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then - local f v - for f in "${ROOT}"/etc/modules.autoload.d/* ; do - v=${f##*/} - v=${v#kernel-} - v=${v//[^[:alnum:]]/_} - gawk -v v="${v}" -v f="${f##*/}" ' - BEGIN { print "\n### START: Auto-converted from " f "\n" } - { - if ($0 ~ /^[^#]/) { - print "modules_" v "=\"${modules_" v "} " $1 "\"" - gsub(/[^[:alnum:]]/, "_", $1) - printf "module_" $1 "_args_" v "=\"" - for (i = 2; i <= NF; ++i) { - if (i > 2) - printf " " - printf $i - } - print "\"\n" - } else - print - } - END { print "\n### END: Auto-converted from " f "\n" } - ' "${f}" >> "${D}"/etc/conf.d/modules - done - rm -f "${f}" - rmdir "${ROOT}"/etc/modules.autoload.d 2>/dev/null - fi - fi -} - -pkg_postinst() { - # Remove old baselayout links - rm -f "${ROOT}"/etc/runlevels/boot/{check{fs,root},rmnologin} - - [[ -e ${T}/net && ! -e ${ROOT}/etc/conf.d/net ]] && mv "${T}"/net "${ROOT}"/etc/conf.d/net - - # Make our runlevels if they don't exist - if [[ ! -e ${ROOT}/etc/runlevels ]] ; then - einfo "Copying across default runlevels" - cp -RPp "${ROOT}"/usr/share/${PN}/runlevels "${ROOT}"/etc - fi - - if [[ -d ${ROOT}/etc/modules.autoload.d ]] ; then - ewarn "/etc/modules.autoload.d is no longer used. Please convert" - ewarn "your files to /etc/conf.d/modules and delete the directory." - fi - - elog "You should now update all files in /etc, using etc-update" - elog "or equivalent before restarting any services or this host." - elog - elog "Please read the migration guide available at:" - elog "http://www.gentoo.org/doc/en/openrc-migration.xml" -} |