diff options
author | 2008-01-08 11:18:51 +0000 | |
---|---|---|
committer | 2008-01-08 11:18:51 +0000 | |
commit | 09721cbadb4e6091dfe0fbd6c22f96b03e2ef5b9 (patch) | |
tree | 259090176913de9608b019c60b07550d84f7910e /media-video | |
parent | ia64/sparc/x86 stable (diff) | |
download | historical-09721cbadb4e6091dfe0fbd6c22f96b03e2ef5b9.tar.gz historical-09721cbadb4e6091dfe0fbd6c22f96b03e2ef5b9.tar.bz2 historical-09721cbadb4e6091dfe0fbd6c22f96b03e2ef5b9.zip |
Updated extensions patch to version 42.
Package-Manager: portage-2.1.4_rc14
Diffstat (limited to 'media-video')
-rw-r--r-- | media-video/vdr/ChangeLog | 9 | ||||
-rw-r--r-- | media-video/vdr/Manifest | 22 | ||||
-rw-r--r-- | media-video/vdr/files/digest-vdr-1.4.7-r10 | 6 | ||||
-rw-r--r-- | media-video/vdr/vdr-1.4.7-r10.ebuild | 354 |
4 files changed, 382 insertions, 9 deletions
diff --git a/media-video/vdr/ChangeLog b/media-video/vdr/ChangeLog index 88053c7352df..b2b81bbe5a91 100644 --- a/media-video/vdr/ChangeLog +++ b/media-video/vdr/ChangeLog @@ -1,6 +1,11 @@ # ChangeLog for media-video/vdr -# Copyright 2002-2007 Gentoo Foundation; Distributed under the GPL v2 -# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.100 2007/12/23 19:48:07 zzam Exp $ +# Copyright 2002-2008 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/ChangeLog,v 1.101 2008/01/08 11:18:50 zzam Exp $ + +*vdr-1.4.7-r10 (08 Jan 2008) + + 08 Jan 2008; Matthias Schwarzott <zzam@gentoo.org> +vdr-1.4.7-r10.ebuild: + Updated extensions patch to version 42. *vdr-1.4.7-r9 (23 Dec 2007) diff --git a/media-video/vdr/Manifest b/media-video/vdr/Manifest index 7129c2f10293..cec1de970f08 100644 --- a/media-video/vdr/Manifest +++ b/media-video/vdr/Manifest @@ -31,6 +31,7 @@ RMD160 d5a261d121855ac4caa9cb47918850538dc26d88 files/vdr-set-dumpable.diff 734 SHA256 4ae1734ef10893d573e2079c1604f890ed8ae0415cbf2a0de9843174a27eb442 files/vdr-set-dumpable.diff 734 DIST VDR-Extensions-Patch-32.tar.bz2 217019 RMD160 43ec5662a51885589ecc37594b3806342b8e1698 SHA1 46c481f1c338979e62ec5c2623966fe918bd75bf SHA256 7d2caea7b47cc8eeb86b2539fea1dfeae1d0ec32d5162756f59c0ec6efb45ab1 DIST VDR-Extensions-Patch-41.tar.bz2 261240 RMD160 21ee6bf535551bc7d39b981d48feb20638fcb5cf SHA1 0290f4e87b85abbd2cfd9c72eb24f7a4ff964f14 SHA256 f9f90bf352a8e5d1491124c0da74b7b731d4ed6708a9af14325a60328e191513 +DIST VDR-Extensions-Patch-42.tar.bz2 260453 RMD160 1610f9c4d3bcca0361b7906e2d9ce62dcfa066c2 SHA1 9b4af40ffa256b6f3eb5f762b1bebe908acc578e SHA256 18c4993b84b3e7aa02db4fc9929cf7c3c6ccbfe8b680f465bbff011c6fd31f80 DIST gentoo-vdr-patchset-1.4.1-2.tar.bz2 174198 RMD160 cf4985f303dbd5b4923e67ab26f4654cb52d6e8b SHA1 8da1918018f9c169ed1d3f1d5d57606cd02842d1 SHA256 214ac208c8ad61065b23cc59b7ca60c2e9b5cccf742e2767ca8260de5b9e9d0f DIST gentoo-vdr-patchset-1.4.3-1.tar.bz2 175914 RMD160 4325ddb158834dd8208c5222d60339ef1a52b898 SHA1 f6ec90cc77bbd95c25f9ae0c59c7588d95d837e5 SHA256 e429f1e09cf416e5bb56ed8a4602e4713755e465692b4ea0a9cb604570b98e12 DIST gentoo-vdr-patchset-1.4.4-1.tar.bz2 188290 RMD160 27b7210395ddf9697b70e3f1e6065bb495093edb SHA1 97f79463374429c622f9b6ee21b6c901d9f753d0 SHA256 479153c6fc5b2b0eb7ddca17e12568c7469ad296929b874e75b4b58e59deb1cb @@ -81,6 +82,10 @@ EBUILD vdr-1.4.6.ebuild 5652 RMD160 7ff1ac174567addba81e261c15d1b4d7b21559cb SHA MD5 dba86686a85c243eaa2a30b8f85f6d93 vdr-1.4.6.ebuild 5652 RMD160 7ff1ac174567addba81e261c15d1b4d7b21559cb vdr-1.4.6.ebuild 5652 SHA256 a6eb0ac715f391f2738d29ba9eb1c123939831747fba2ec7f33ef4799542ae98 vdr-1.4.6.ebuild 5652 +EBUILD vdr-1.4.7-r10.ebuild 8735 RMD160 b8cf93a7e52dccb680be61d7ac10a0704c5dc047 SHA1 9ea0398ed909a141c191f2fafbcc50981aacb610 SHA256 a710a5455ce0b7bb16ef9ff9ab261d5f6c55b0620a485bbd311a9eb266fd1dc6 +MD5 a2fc5f5978f7e78b796ba330082c8558 vdr-1.4.7-r10.ebuild 8735 +RMD160 b8cf93a7e52dccb680be61d7ac10a0704c5dc047 vdr-1.4.7-r10.ebuild 8735 +SHA256 a710a5455ce0b7bb16ef9ff9ab261d5f6c55b0620a485bbd311a9eb266fd1dc6 vdr-1.4.7-r10.ebuild 8735 EBUILD vdr-1.4.7-r4.ebuild 8780 RMD160 a3a4b11269b3adfe6909e9602b7e10b216d11d41 SHA1 c8a51b26c3ee947dfa880f3e6dd05749afd8d0b1 SHA256 8f52cb28020c2a2da9662e83f6733db6d5c4169eba11aa724603d9333389f63f MD5 46d74156d2d9cdabed92b92c03464eb4 vdr-1.4.7-r4.ebuild 8780 RMD160 a3a4b11269b3adfe6909e9602b7e10b216d11d41 vdr-1.4.7-r4.ebuild 8780 @@ -105,10 +110,10 @@ EBUILD vdr-1.4.7-r9.ebuild 8734 RMD160 62a2ea2eb18b9d5c960fc1f7a5e964e41c328756 MD5 eed8d060ab105180ae4208b93cdad39a vdr-1.4.7-r9.ebuild 8734 RMD160 62a2ea2eb18b9d5c960fc1f7a5e964e41c328756 vdr-1.4.7-r9.ebuild 8734 SHA256 1a87415c53d4dbec54efa8066af9e029c6282f632b77b38d0b695830ba8bf261 vdr-1.4.7-r9.ebuild 8734 -MISC ChangeLog 16914 RMD160 4f7a3f9e515c247f5e44041c841c4cb26ac33ba3 SHA1 3f8700db79960bc4825bc11a2502febee7370038 SHA256 e00217b681ede37295f2d3efd580d6efa65700a8107bdbd7c97154d0d5c19be3 -MD5 8fecbd8603e0395b63e97c5816f3da1b ChangeLog 16914 -RMD160 4f7a3f9e515c247f5e44041c841c4cb26ac33ba3 ChangeLog 16914 -SHA256 e00217b681ede37295f2d3efd580d6efa65700a8107bdbd7c97154d0d5c19be3 ChangeLog 16914 +MISC ChangeLog 17063 RMD160 8905c69ed6302a824c6d442e2c971018551ab262 SHA1 c730b5ae23c87c07cfc750758e1a467866fe34af SHA256 97a7f93634c00bb11df9750e54f56592e59fd7d1fd7c188bcf90aaadf793d7d0 +MD5 58c7abd9c4741d2cf0fa6f841210c8be ChangeLog 17063 +RMD160 8905c69ed6302a824c6d442e2c971018551ab262 ChangeLog 17063 +SHA256 97a7f93634c00bb11df9750e54f56592e59fd7d1fd7c188bcf90aaadf793d7d0 ChangeLog 17063 MISC metadata.xml 257 RMD160 8bee49b98c59996aaaa019fb2c764c08d8004507 SHA1 d2419394e7d5c7463d7dea33e9190ebd57484531 SHA256 0dd45fbbaf1c6173535e371e3ff8a3faa41f3f89123ac9dffe338998599ebe26 MD5 116de98355049ce943c3b6fedc00b4a3 metadata.xml 257 RMD160 8bee49b98c59996aaaa019fb2c764c08d8004507 metadata.xml 257 @@ -137,6 +142,9 @@ SHA256 e0e1190a670bf9da4ddf6c871696ece9740e1880b89a9e8a05b9da9bebe7134d files/di MD5 4985099f6a1f78c1141ab17132448f1a files/digest-vdr-1.4.6 518 RMD160 a34790741895e2c9adbc868c02da8d8ec3295e10 files/digest-vdr-1.4.6 518 SHA256 d1d7fcbddfa936238c4122254896089d7625a87aebb558897107dfcd1be0e400 files/digest-vdr-1.4.6 518 +MD5 45b80bf84738292022f79d18519c05c0 files/digest-vdr-1.4.7-r10 506 +RMD160 4000ead95e13699ad61bc49b8c732a5779df6d3a files/digest-vdr-1.4.7-r10 506 +SHA256 e80c7b62b14f67a4c028741f644e1c42aeb3b15696eedff4b1c06effeb0677c0 files/digest-vdr-1.4.7-r10 506 MD5 cef1c23ab322f01fe380f52c97b7800f files/digest-vdr-1.4.7-r4 506 RMD160 35da6a2aef01521d519631749d398c62c9717ce3 files/digest-vdr-1.4.7-r4 506 SHA256 fecb439d6d003a5b3ef570010f79379dec3fee3eb0dd7ea821440a157d7f2a01 files/digest-vdr-1.4.7-r4 506 @@ -158,7 +166,7 @@ SHA256 d76a5f7cb02d13b20a8ff59900d03b820b96f8d153d8ec12852e4ba7d944ad7e files/di -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.8 (GNU/Linux) -iEYEARECAAYFAkduu30ACgkQt2vP6XvVdOdUkACeMnxTP2lHf1WGC899cRNNgq5p -A8YAn0QwE8Rf4JQEEqgtuMuvWKPbRjEk -=COmw +iEYEARECAAYFAkeDXCYACgkQt2vP6XvVdOeu9gCgomLCzoXQcrdLPwEgPt2OF5qk +BeEAoKaa3yCtsUvmjLKOoHxngNF1T9MV +=uQ87 -----END PGP SIGNATURE----- diff --git a/media-video/vdr/files/digest-vdr-1.4.7-r10 b/media-video/vdr/files/digest-vdr-1.4.7-r10 new file mode 100644 index 000000000000..f96c58f83237 --- /dev/null +++ b/media-video/vdr/files/digest-vdr-1.4.7-r10 @@ -0,0 +1,6 @@ +MD5 37b1603f2eb1e7c9fb84a46e799e2a14 VDR-Extensions-Patch-42.tar.bz2 260453 +RMD160 1610f9c4d3bcca0361b7906e2d9ce62dcfa066c2 VDR-Extensions-Patch-42.tar.bz2 260453 +SHA256 18c4993b84b3e7aa02db4fc9929cf7c3c6ccbfe8b680f465bbff011c6fd31f80 VDR-Extensions-Patch-42.tar.bz2 260453 +MD5 81be33a0edb93288ca3d235a04107ec4 vdr-1.4.7.tar.bz2 560888 +RMD160 0e7a0d1cf133ee5e168afb6e2374e2ee6c229fcf vdr-1.4.7.tar.bz2 560888 +SHA256 9e9f3687efc135d890cf8d70068221e661fea21d1efd7d8dc74bc4e810d4a464 vdr-1.4.7.tar.bz2 560888 diff --git a/media-video/vdr/vdr-1.4.7-r10.ebuild b/media-video/vdr/vdr-1.4.7-r10.ebuild new file mode 100644 index 000000000000..fc07cde5093c --- /dev/null +++ b/media-video/vdr/vdr-1.4.7-r10.ebuild @@ -0,0 +1,354 @@ +# Copyright 1999-2008 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/media-video/vdr/vdr-1.4.7-r10.ebuild,v 1.1 2008/01/08 11:18:50 zzam Exp $ + +inherit eutils flag-o-matic multilib + +IUSE_EXTENSIONS="cmdctrl cmdsubmenu cutterlimit cutterqueue cuttime ddepgentry + dolbyinrec dvbplayer dvbsetup dvdarchive dvdchapjump graphtft iptv + jumpplay liemikuutio livebuffer lnbshare mainmenuhooks menuorg noepg osdmaxitems pinplugin + rotor settime setup sortrecords sourcecaps submenu + subtitles switchtimer timercmd timerinfo validinput wareagleicon yaepg + syncearly dvlfriendlyfnames dvlrecscriptaddon dvlvidprefer hardlinkcutter + volctrl lircsettings" + +IUSE="debug vanilla ${IUSE_EXTENSIONS}" + +EXT_V="42" +EXT_P=VDR-Extensions-Patch-"${EXT_V}" +EXT_DIR="${WORKDIR}/${EXT_P}/" +# Set if != $PV +#EXT_VDR_PV=1.5.3 + +DESCRIPTION="Video Disk Recorder - turns a pc into a powerful set top box for DVB" +HOMEPAGE="http://www.cadsoft.de/vdr/" +SRC_URI="ftp://ftp.cadsoft.de/vdr/${P}.tar.bz2 + http://www.zulu-entertainment.de/files/patches/${EXT_P}.tar.bz2" + +#http://dev.gentoo.org/~zzam/extensions-patch/${EXT_P}.tar.bz2" + +KEYWORDS="~amd64 ~ppc ~x86" +SLOT="0" +LICENSE="GPL-2" + +DEPEND="media-libs/jpeg + sys-apps/gawk + media-tv/linuxtv-dvb-headers + sys-libs/libcap + dev-util/unifdef" + +RDEPEND="${DEPEND} + dev-lang/perl + || ( >=media-tv/gentoo-vdr-scripts-0.4.2 media-tv/vdrplugin-rebuild ) + >=media-tv/gentoo-vdr-scripts-0.3.5" + +# pull in vdr-setup to get the xml files, else menu will not work +PDEPEND="setup? ( >=media-plugins/vdr-setup-0.3.1-r1 )" + +# Relevant Pathes for vdr on gentoo +DVB_DIR=/usr/include +CONF_DIR=/etc/vdr +CAP_FILE="${S}"/capabilities.sh +CAPS="# Capabilities of the vdr-executable for use by startscript etc." + +pkg_setup() { + use debug && append-flags -g + PLUGIN_LIBDIR="/usr/$(get_libdir)/vdr/plugins" +} + +add_cap() { + local arg + for arg; do + CAPS="${CAPS}\n${arg}=1" + done +} + +enable_patch() { + local arg ARG_UPPER + for arg; do + ARG_UPPER=$(echo $arg|tr '[:lower:]' '[:upper:]') + echo "${ARG_UPPER} = 1" >> Make.config + done +} + +extensions_add_make_conf() +{ + # copy all ifdef for extensions-patch to Make.config + sed -e '1,/need to touch the following:/d' \ + -e '/ifdef DVBDIR/,/^$/d' \ + Make.config.template >> Make.config +} + +extensions_all_defines() { + # extract all possible settings for extensions-patch + sed -e '/^#\?[A-Z].*= 1/!d' -e 's/^#\?//' -e 's/ .*//' \ + Make.config.template \ + | sort \ + | tr '[:upper:]' '[:lower:]' +} + +extensions_all_defines_unset() { + # extract all possible settings for extensions-patch + # and convert them to -U... for unifdef + sed -e '/^#\?[A-Z].*= 1/!d' -e 's/^#\?/-UUSE_/' -e 's/ .*//' \ + Make.config.template \ + | tr '\n' ' ' +} + +do_unifdef() { + ebegin "Unifdef sources" + local mf="Makefile.get" + cat <<'EOT' > $mf +include Makefile +show_def: + @echo $(DEFINES) +show_src_files: + @echo $(OBJS:%.o=%.c) +EOT + + local DEFINES=$(extensions_all_defines_unset) + + local RAW_DEFINES=$(make -f "$mf" show_def) + local VDR_SRC_FILES="$(make -f "$mf" show_src_files)" + local KEEP_FILES="genfontfile.c $(echo font*.c)" + rm "$mf" + + local def + for def in $RAW_DEFINES; do + case "${def}" in + -DUSE*) + DEFINES="${DEFINES} ${def}" + ;; + esac + done + + local f + for f in *.c; do + + # Removing the src files the Makefile does not use for compiling vdr + if ! has $f ${VDR_SRC_FILES} ${KEEP_FILES}; then + rm -f ${f} ${f%.c}.h + continue + fi + + unifdef ${DEFINES} "$f" > "tmp.$f" + mv "tmp.$f" "$f" + done + for f in *.h; do + unifdef ${DEFINES} "$f" > "tmp.$f" + mv "tmp.$f" "$f" + [[ -s $f ]] || rm "$f" + done + eend 0 +} + +src_unpack() { + + unpack ${A} + cd "${S}" + + ebegin "Changing pathes for gentoo" + + sed \ + -e 's-ConfigDirectory = VideoDirectory;-ConfigDirectory = CONFDIR;-' \ + -i vdr.c + + cat > Make.config <<-EOT + # + # Generated by ebuild ${PF} + # + BINDIR = /usr/bin + MANDIR = /usr/share/man + DVBDIR = ${DVB_DIR} + PLUGINLIBDIR = ${PLUGIN_LIBDIR} + CONFDIR = ${CONF_DIR} + VIDEODIR = /var/vdr/video + HEADERDIR = /usr/include + + DEFINES += -DCONFDIR=\"\$(CONFDIR)\" + + EOT + eend 0 + + epatch "${FILESDIR}"/vdr-1.4.7-makefile-destdir.diff + epatch "${FILESDIR}"/vdr-1.4.7-makefile-install-header.diff + + sed -i Makefile \ + -e 's/runvdr//' \ + -e 's/ install-plugins//' + + if ! use vanilla; then + + cd "${S}" + local fname="${PN}-${EXT_VDR_PV:-${PV}}_extensions.diff" + epatch "${EXT_DIR}/${fname}" + + epatch "${FILESDIR}/vdr-add-svdrp-down-0.1.diff" + add_cap CAP_SHUTDOWN_SVDRP + + epatch "${FILESDIR}/vdr-set-dumpable.diff" + + # This allows us to start even if some plugin does not exist + # or is not loadable. + enable_patch PLUGINMISSING + + # Patch necessary for media-plugins/vdr-reelchannelscan + # it does not change anything when plugin is not used + enable_patch CHANNELSCAN + + if [[ -n ${VDR_MAINTAINER_MODE} ]]; then + einfo "Doing maintainer checks:" + + # these patches we do not support + # (or have them already hard enabled) + local IGNORE_PATCHES="channelscan pluginapi pluginmissing" + + extensions_all_defines > "${T}"/new.IUSE + echo $IUSE_EXTENSIONS $IGNORE_PATCHES|tr ' ' '\n' |sort > "${T}"/old.IUSE + local DIFFS=$(diff -u "${T}"/old.IUSE "${T}"/new.IUSE|grep '^[+-][^+-]') + if [[ -z ${DIFFS} ]]; then + einfo "IUSE_EXTENSIONS is up to date." + else + ewarn "IUSE differences!" + local diff + for diff in $DIFFS; do + ewarn "$diff" + done + fi + fi + + ebegin "Enabling selected patches" + local flag + for flag in $IUSE_EXTENSIONS; do + use $flag && enable_patch ${flag} + done + eend 0 + + extensions_add_make_conf + + ebegin "Make depend" + emake .dependencies >/dev/null || die "make depend failed" + eend 0 + + do_unifdef + + use iptv && sed -i sources.conf -e 's/^#P/P/' + fi + + # apply local patches defined by variable VDR_LOCAL_PATCHES_DIR + if test -n "${VDR_LOCAL_PATCHES_DIR}"; then + local dir_tmp_var + local LOCALPATCHES_SUBDIR=${PV} + for dir_tmp_var in allversions-fallback ${PV%_p*} ${PV} ; do + if [[ -d ${VDR_LOCAL_PATCHES_DIR}/${dir_tmp_var} ]]; then + LOCALPATCHES_SUBDIR="${dir_tmp_var}" + fi + done + + echo + if [[ ${LOCALPATCHES_SUBDIR} == ${PV} ]]; then + einfo "Applying local patches" + else + einfo "Applying local patches (Using subdirectory: ${LOCALPATCHES_SUBDIR})" + fi + + for LOCALPATCH in ${VDR_LOCAL_PATCHES_DIR}/${LOCALPATCHES_SUBDIR}/*.{diff,patch}; do + test -f "${LOCALPATCH}" && epatch "${LOCALPATCH}" + done + fi + + if [[ -n "${VDRSOURCE_DIR}" ]]; then + cp -r "${S}" "${T}"/source-tree + fi + + if ! use vanilla; then + add_cap CAP_IRCTRL_RUNTIME_PARAM \ + CAP_VFAT_RUNTIME_PARAM \ + CAP_CHUID + + echo -e ${CAPS} > "${CAP_FILE}" + fi +} + +src_install() { + emake install DESTDIR="${D}" || die "make install failed" + + keepdir "${CONF_DIR}"/plugins + keepdir "${CONF_DIR}"/themes + + keepdir "${PLUGIN_LIBDIR}" + + dohtml *.html + dodoc MANUAL INSTALL README* HISTORY* CONTRIBUTORS + + cd "${EXT_DIR}" + local f + rm *vdr-1.5* 2>/dev/null + for f in BUGS README* HISTORY* patch.list; do + [[ -f ${f} ]] || break + newdoc "${f}" "${f}".ExtensionsPatch || die "Could not install extensions-patch doc ${f}" + done + + cd "${S}" + + insinto /usr/share/vdr + doins "${CAP_FILE}" + + if [[ -n "${VDRSOURCE_DIR}" ]]; then + einfo "Installing sources" + insinto "${VDRSOURCE_DIR}/${P}" + doins -r "${T}"/source-tree/* + keepdir "${VDRSOURCE_DIR}/${P}"/PLUGINS/lib + fi + + if use setup; then + insinto /usr/share/vdr/setup + doins "${S}/menu.c" + fi + chown -R vdr:vdr "${D}/${CONF_DIR}" +} + +pkg_postinst() { + elog "It is a good idea to run vdrplugin-rebuild now." + if has_version "<media-video/vdr-1.3.36-r3"; then + ewarn "Upgrade Info:" + ewarn + ewarn "If you had used the use-flags lirc, rcu or vfat" + ewarn "then, you now have to enable the associated functionality" + ewarn "in /etc/conf.d/vdr" + ewarn + ewarn "vfat is now set with VFAT_FILENAMES." + ewarn "lirc/rcu are now set with IR_CTRL." + ebeep + fi + + if use setup; then + if ! has_version media-plugins/vdr-setup || \ + ! egrep -q '^setup$' "${ROOT}/etc/conf.d/vdr.plugins"; then + + echo + ewarn "You have compiled media-video/vdr with USE=\"setup\"" + ewarn "It is very important to emerge media-plugins/vdr-setup now!" + ewarn "and you have to loaded it in /etc/conf.d/vdr.plugins" + fi + fi + + local keysfound=0 + local key + local warn_keys="JumpFwd JumpRew JumpFwdSlow JumpRewSlow" + local remote_file="${ROOT}"/etc/vdr/remote.conf + + if [[ -e ${remote_file} ]]; then + for key in ${warn_keys}; do + if grep -q -i "\.${key} " "${remote_file}"; then + keysfound=1 + break + fi + done + if [[ ${keysfound} == 1 ]]; then + ewarn "Your /etc/vdr/remote.conf contains keys which are no longer usable" + ewarn "Please remove these keys or vdr will not start:" + ewarn "# ${warn_keys}" + fi + fi +} |