ALSA_CARDS=
ALSA_PCM_PLUGINS='adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol'
ANT_HOME=/usr/share/ant
APACHE2_MODULES='actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias'
ARCH=x86
AT_GNUCONF_UPDATE=no
AT_M4DIR=
BROWSER=konqueror
CAMERAS='directory spca50x sx330z template'
CBUILD=i686-pc-linux-gnu
CDEFINE_default=__unix__
CFLAGS='-march=native -mtune=native -O3 -pipe -m3dnow'
CFLAGS_default=
CHOST=i686-pc-linux-gnu
CHOST_default=i686-pc-linux-gnu
COLON_SEPARATED='XDG_DATA_DIRS XDG_CONFIG_DIRS'
COLORFGBG='15;default;0'
CROSSCOMPILE_OPTS=
CTARGET_default=i686-pc-linux-gnu
CVS_RSH=ssh
CXXFLAGS='-march=native -mtune=native -O3 -pipe -m3dnow'
DBUS_SESSION_BUS_ADDRESS=unix:abstract=/tmp/dbus-bFQGCi6o8d,guid=19b10766073b25b24e1a2da84a7bd640
DEFAULT_ABI=default
DEFINED_PHASES=' compile configure install preinst prepare unpack'
DEPEND=$'app-crypt/gnupg\n\tdev-lang/tcl\n\t!helper? ( dev-tcltk/tclx )  =sys-devel/automake-1.10*\n\t>=sys-devel/autoconf-2.61 sys-devel/libtool dev-util/subversion\n\tnet-misc/rsync'
DESCRIPTION='Tcl interface to GNU Privacy Guard with interface similar to TclGPGME.'
DESKTOP_SESSION=KDE-4
DESKTOP_STARTUP_ID=
DESTTREE=/usr
DIROPTIONS=-m0755
DM_CONTROL=/var/run/xdmctl
EAPI=2
ECONF_SOURCE=.
ELIBC=glibc
ELIBTOOL_VERSION=2.0.2
ELT_APPLIED_PATCHES=
ELT_LTMAIN_SH=
ELT_PATCH_DIR=/usr/portage/eclass/ELT-patches
EPATCH_EXCLUDE=
EPATCH_FORCE=no
EPATCH_MULTI_MSG='Applying various patches (bugfixes/updates) ...'
EPATCH_OPTS='-g0 -E --no-backup-if-mismatch'
EPATCH_SINGLE_MSG=
EPATCH_SOURCE=/var/tmp/portage/dev-tcltk/tclgpg-9999/work/patch
EPATCH_SUFFIX=patch.bz2
ESCM_LOGDIR=
ESVN=subversion
ESVN_BOOTSTRAP=
ESVN_DISABLE_DEPENDENCIES=
ESVN_FETCH_CMD='svn checkout'
ESVN_OFFLINE=
ESVN_OPTIONS=
ESVN_PASSWORD=
ESVN_PATCHES=
ESVN_PROJECT=tclgpg
ESVN_REPO_URI=http://tclgpg.googlecode.com/svn/trunk/
ESVN_RESTRICT=
ESVN_REVISION=
ESVN_STORE_DIR=/mnt/src/distfiles/gentoo/distfiles/svn-src
ESVN_SWITCH_CMD='svn switch'
ESVN_UPDATE_CMD='svn update'
ESVN_UP_FREQ=
ESVN_USER=
ESVN_WC_PATH=/mnt/src/distfiles/gentoo/distfiles/svn-src/tclgpg/trunk
ESVN_WC_REVISION=56
ESVN_WC_ROOT='Root: http://tclgpg.googlecode.com/svn'
ESVN_WC_URL=http://tclgpg.googlecode.com/svn/trunk
ESVN_WC_UUID='UUID: fee4467d-d455-0410-a368-b174c0478086'
EXEOPTIONS=-m0755
FEATURES='assume-digests candy ccache distlocks fixpackages metadata-transfer parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch userpriv usersandbox'
FFLAGS='-march=native -mtune=native -O3 -pipe -m3dnow'
GCC_SPECS=
GDK_USE_XFT=1
GPG_TTY=/dev/pts/12
GRASS_LD_LIBRARY_PATH=/usr/grass62/lib
GS_LIB=/home/user/.fonts
GTK2_RC_FILES=/home/user/.gtkrc-2.0-kde
HELPDIR=/usr/local/lib/zsh/help
HISTCONTROL=ignoreboth:erasedups
HISTFILESIZE=200000
HISTSIZE=200000
HISTTIMEFORMAT=%F_%T
HOMEPAGE=http://code.google.com/p/tclgpg/
INHERITED='toolchain-funcs portability multilib subversion libtool autotools eutils'
INPUT_DEVICES='keyboard mouse ps2mouse'
INSDESTTREE=
INSOPTIONS=-m0644
IUSE='helper threads '
JAVAC=/etc/java-config-2/current-system-vm/bin/javac
JAVACC_HOME=/usr/share/javacc/
JAVA_HOME=/etc/java-config-2/current-system-vm
JDK_HOME=/etc/java-config-2/current-system-vm
KDE_FULL_SESSION=true
KDE_IS_PRELINKED=1
KDE_SESSION_UID=1000
KDE_SESSION_VERSION=4
KERNEL=linux
KERNEL_ABI=default
KEYWORDS='~x86 ~amd64'
KV=2.6.29-tuxonice-r3
LADSPA_PATH=/usr/lib/ladspa
LANG=ru_RU.UTF-8
LANGUAGE=
LCD_DEVICES='bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text'
LC_ALL=
LC_NUMERIC=POSIX
LDFLAGS=-Wl,-O1,--hash-style=gnu,--sort-common,--as-needed
LDFLAGS_default=
LDPATH=/usr/local/lib:/usr/lib/opengl/nvidia/lib:/usr/i686-pc-linux-gnu/lib:/usr/lib/gcc/i686-pc-linux-gnu/4.3.2:/usr/lib/nspr:/usr/lib/nss:/usr/lib/qca2:/usr/lib/qt4:/usr/kde/3.5/lib:/usr/qt/3/lib:/usr/lib/postgresql-8.3/lib:/usr/lib/postgresql-8.1/lib:/opt/firefox:/usr/games/lib:/usr/grass62/lib
LGRINDEF=/usr/share/texmf/tex/latex/lgrind/lgrindef
LIBDIR_default=lib
LIBOPTIONS=-m0644
LICENSE=BSD-2
LINGUAS=ru
LIRC_DEVICES=pctv
MAIL=/var/spool/mail/root
MAKEOPTS=-j2
MOZLINGUA=ru
MOZ_DISABLE_PANGO=1
MPD_HOST=127.0.0.1
MULTILIB_ABIS=default
NETBEANS='apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml'
OPENGL_PROFILE=xorg-x11
PDEPEND=' '
PKG_CONFIG_PATH=/usr/qt/3/lib/pkgconfig
PORTAGE_COMPRESS_EXCLUDE_SUFFIXES='css gif htm[l]? jp[e]?g js pdf png'
PORTAGE_ECLASS_WARNING_ENABLE=0
PORTAGE_NICENESS=3
PRELINK_PATH_MASK=/usr/lib/klibc
PROFILE_ONLY_VARIABLES='ARCH ELIBC KERNEL USERLAND'
PROPERTIES=
PROVIDE=
QMAKESPEC=linux-g++
QTDIR=/usr/qt/3
QT_PLUGIN_PATH=/home/user/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/
RDEPEND=$'app-crypt/gnupg\n\tdev-lang/tcl\n\t!helper? ( dev-tcltk/tclx )  '
RECOLL_EXTRA_DBS=/var/lib/recoll/storage/xapiandb:/var/lib/recoll/documentation/xapiandb:/var/lib/recoll/hda3/xapiandb:/var/lib/recoll/rimma/xapiandb
RESTRICT=
RUBYOPT=-rauto_gem
S=/var/tmp/portage/dev-tcltk/tclgpg-9999/work/tclgpg-9999
SANDBOX_DEBUG=0
SANDBOX_DENY=/etc/ld.so.preload
SANDBOX_PID=2245
SANDBOX_PREDICT=/var/tmp/portage/dev-tcltk/tclgpg-9999/homedir:/dev/crypto
SANDBOX_READ=/:/etc/subversion:/var/tmp:/var/tmp/ccache:/var/tmp/ccache
SANDBOX_VERBOSE=1
SANDBOX_WRITE=:/dev/console:/dev/fd:/dev/full:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/mnt/src/distfiles/gentoo/distfiles/svn-src:/proc/self/fd:/tmp/:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/ccache:/var/tmp/portage/dev-tcltk/tclgpg-9999/homedir/.bash_history:/var/tmp/ccache
SANE_BACKENDS='epson snapscan'
SANE_CONFIG_DIR=/etc/sane.d
SAVEHIST='$HISTSIZE'
SESSION_MANAGER=local/localhost:@/tmp/.ICE-unix/12434,unix/localhost:/tmp/.ICE-unix/12434
SGML_CATALOG_FILES=/etc/sgml/sgml-docbook.cat:/etc/sgml/openjade-1.3.2.cat:/etc/sgml/linuxdoc.cat:/etc/sgml/xml-docbook-4.2.cat:/etc/sgml/xml-docbook-4.4.cat:/etc/sgml/xml-docbook-4.5.cat:/etc/sgml/sgml-ent.cat:/etc/sgml/xml-simple-docbook-1.0.cat:/etc/sgml/xml-simple-docbook-4.1.2.4.cat:/etc/sgml/xml-docbook-4.1.2.cat:/etc/sgml/sgml-docbook-3.0.cat:/etc/sgml/sgml-docbook-3.1.cat:/etc/sgml/sgml-docbook-4.0.cat:/etc/sgml/sgml-docbook-4.1.cat:/etc/sgml/sgml-docbook-4.2.cat:/etc/sgml/sgml-docbook-4.4.cat:/etc/sgml/sgml-lite.cat:/etc/sgml/dsssl-docbook-stylesheets.cat
SLOT=0
SPROMPT=$'\320\236\321\210\320\270\320\261\320\272\320\260! \320\222\321\213 \321\205\320\276\321\202\320\265\320\273\320\270 \320\262\320\262\320\265\321\201\321\202\320\270 %r \320\262\320\274\320\265\321\201\321\202\320\276 %R? ([Y]es/[N]o/[E]dit/[A]bort) '
SRC_URI=
STRIGI_PLUGIN_PATH=/usr/lib/strigi:
SUBVERSION_DEPEND=$'dev-util/subversion\n\tnet-misc/rsync'
SUDO_COMMAND=/bin/zsh
SUDO_GID=1000
SUDO_UID=1000
SUDO_USER=user
TEXINPUTS=/usr/lib/ocaml/ocamldoc:
USB_DEVFS_PATH=/dev/bus/usb
USE='elibc_glibc kernel_linux threads userland_GNU x86'
USERDOCS=/home/user/MyDocuments
USERLAND=GNU
USERNAME=root
USERPICTURES=/home/user/MyDocuments/Pictures
USERSCANNEDPICTURES=/home/user/MyDocuments/Pictures/scanned
VIDEO_CARDS=
WANT_AUTOCONF=2.5
WANT_AUTOMAKE=1.10
WINDOWID=14680340
WINDOWPATH=7
XCURSOR_THEME=Blue
XDG_CONFIG_DIRS=/etc/xdg
XDG_DATA_DIRS=/usr/local/share:/usr/kde/3.5/share:/usr/share
XDG_MENU_PREFIX=kde-4.2-
XDG_SESSION_COOKIE=5bbf24a5c73607354569b70045ea8c6c-1249629758.926351-1274606255
XDM_MANAGED=method=classic
XERCESC_NLS_HOME=/usr/share/xerces-c/msg
_=PKG_INSTALL_MASK
_E_DOCDESTTREE_=
_E_EXEDESTTREE_=
__GL_DEFAULT_LOG_ANISO=0
__GL_FSAA_MODE=0
__GL_SYNC_TO_VBLANK=0
___ECLASS_RECUR_MULTILIB=yes
___ECLASS_RECUR_TOOLCHAIN_FUNCS=yes
conf=tclgpg-9999-r0
ELT_find_ltmain_sh () 
{ 
    local x=;
    local dirlist=;
    for x in $(find "${S}" -name 'ltmain.sh');
    do
        dirlist="${dirlist} ${x%/*}";
    done;
    echo "${dirlist}"
}
ELT_libtool_version () 
{ 
    local ltmain_sh=$1;
    local version=;
    version=$(eval $(grep -e '^[[:space:]]*VERSION=' "${ltmain_sh}"); 	                 echo "${VERSION}");
    [[ -z ${version} ]] && version="0";
    echo "${version}"
}
ELT_try_and_apply_patch () 
{ 
    local ret=0;
    local file=$1;
    local patch=$2;
    if patch -p0 --dry-run "${file}" "${patch}" >&"${T}/elibtool.log"; then
        einfo "  Applying $(basename "$(dirname "${patch}")")-${patch##*/}.patch ...";
        patch -p0 -g0 --no-backup-if-mismatch "${file}" "${patch}" >&"${T}/elibtool.log";
        ret=$?;
        export ELT_APPLIED_PATCHES="${ELT_APPLIED_PATCHES} ${patch##*/}";
    else
        ret=1;
    fi;
    return "${ret}"
}
ELT_walk_patches () 
{ 
    local x=;
    local y=;
    local ret=1;
    local file=$1;
    local patch_set=$2;
    local patch_dir=;
    local rem_int_dep=$3;
    if [[ -n ${patch_set} ]]; then
        if [[ -d ${ELT_PATCH_DIR}/${patch_set} ]]; then
            patch_dir="${ELT_PATCH_DIR}/${patch_set}";
        else
            return "${ret}";
        fi;
        for x in $(ls -d "${patch_dir}"/* 2> /dev/null | grep -v 'CVS' | sort -r);
        do
            if [[ -n ${x} && -f ${x} ]]; then
                if [[ -n ${rem_int_dep} ]]; then
                    sed -e "s|@REM_INT_DEP@|${rem_int_dep}|g" ${x} > "${T}/$$.rem_int_deps.patch";
                    x="${T}/$$.rem_int_deps.patch";
                fi;
                if ELT_try_and_apply_patch "${file}" "${x}"; then
                    ret=0;
                    break;
                fi;
            fi;
        done;
    fi;
    return "${ret}"
}
VER_major () 
{ 
    [[ -z $1 ]] && return 1;
    local VER=$@;
    echo "${VER%%[^[:digit:]]*}"
}
VER_micro () 
{ 
    [[ -z $1 ]] && return 1;
    local VER=$@;
    VER=${VER#*.*.};
    echo "${VER%%[^[:digit:]]*}"
}
VER_minor () 
{ 
    [[ -z $1 ]] && return 1;
    local VER=$@;
    VER=${VER#*.};
    echo "${VER%%[^[:digit:]]*}"
}
VER_to_int () 
{ 
    [[ -z $1 ]] && return 1;
    local VER_MAJOR=$(VER_major "$1");
    local VER_MINOR=$(VER_minor "$1");
    local VER_MICRO=$(VER_micro "$1");
    local VER_int=$(( VER_MAJOR * 65536 + VER_MINOR * 256 + VER_MICRO ));
    if [[ ${VER_int} -ge 65536 ]]; then
        echo "${VER_int}";
        return 0;
    fi;
    echo 1;
    return 1
}
_cdrom_locate_file_on_cd () 
{ 
    local mline="";
    local showedmsg=0 showjolietmsg=0;
    while [[ -z ${CDROM_ROOT} ]]; do
        local i=0;
        local -a cdset=(${*//:/ });
        if [[ -n ${CDROM_SET} ]]; then
            cdset=(${cdset[${CDROM_SET}]});
        fi;
        while [[ -n ${cdset[${i}]} ]]; do
            local dir=$(dirname ${cdset[${i}]});
            local file=$(basename ${cdset[${i}]});
            local point= node= fs= foo=;
            while read point node fs foo; do
                [[ " cd9660 iso9660 udf " != *" ${fs} "* ]] && ! [[ ${fs} == "subfs" && ",${opts}," == *",fs=cdfss,"* ]] && continue;
                point=${point//\040/ };
                [[ ! -d ${point}/${dir} ]] && continue;
                [[ -z $(find "${point}/${dir}" -maxdepth 1 -iname "${file}") ]] && continue;
                export CDROM_ROOT=${point};
                export CDROM_SET=${i};
                export CDROM_MATCH=${cdset[${i}]};
                return;
            done <<< "$(get_mounts)";
            ((++i));
        done;
        echo;
        if [[ ${showedmsg} -eq 0 ]]; then
            if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
                if [[ -z ${CDROM_NAME} ]]; then
                    einfo "Please insert+mount the cdrom for ${PN} now !";
                else
                    einfo "Please insert+mount the ${CDROM_NAME} cdrom now !";
                fi;
            else
                if [[ -z ${CDROM_NAME_1} ]]; then
                    einfo "Please insert+mount cd #${CDROM_CURRENT_CD} for ${PN} now !";
                else
                    local var="CDROM_NAME_${CDROM_CURRENT_CD}";
                    einfo "Please insert+mount the ${!var} cdrom now !";
                fi;
            fi;
            showedmsg=1;
        fi;
        einfo "Press return to scan for the cd again";
        einfo "or hit CTRL+C to abort the emerge.";
        echo;
        if [[ ${showjolietmsg} -eq 0 ]]; then
            showjolietmsg=1;
        else
            ewarn "If you are having trouble with the detection";
            ewarn "of your CD, it is possible that you do not have";
            ewarn "Joliet support enabled in your kernel.  Please";
            ewarn "check that CONFIG_JOLIET is enabled in your kernel.";
            ebeep 5;
        fi;
        read || die "something is screwed with your system";
    done
}
_eapi3_src_install () 
{ 
    if [[ -f Makefile || -f GNUmakefile || -f makefile ]]; then
        emake DESTDIR="${D}" install;
    fi;
    if [[ -z $DOCS ]]; then
        local d;
        for d in README* ChangeLog AUTHORS NEWS TODO CHANGES THANKS BUGS FAQ CREDITS CHANGELOG;
        do
            [[ -s "${d}" ]] && dodoc "${d}";
        done;
    else
        if [[ $(declare -p DOCS) == "declare -a "* ]]; then
            dodoc "${DOCS[@]}";
        else
            dodoc ${DOCS};
        fi;
    fi
}
_elibtoolize () 
{ 
    local opts g=;
    [[ -n $(autotools_check_macro AC_PROG_LIBTOOL AM_PROG_LIBTOOL LT_INIT) ]] || return 0;
    [[ -f GNUmakefile.am || -f Makefile.am ]] && opts="--automake";
    [[ ${CHOST} == *-darwin* ]] && g=g;
    autotools_run_tool ${LIBTOOLIZE:-${g}libtoolize} "$@" ${opts};
    eaclocal
}
_gcc-install-dir () 
{ 
    echo "$(LC_ALL=C $(tc-getCC) -print-search-dirs 2> /dev/null |		awk '$1=="install:" {print $2}')"
}
_gcc-specs-directive_raw () 
{ 
    local cc=$(tc-getCC);
    local specfiles=$(LC_ALL=C ${cc} -v 2>&1 | awk '$1=="Reading" {print $NF}');
    ${cc} -dumpspecs 2> /dev/null | cat - ${specfiles} | awk -v directive=$1 'BEGIN	{ pspec=""; spec=""; outside=1 }
$1=="*"directive":"  { pspec=spec; spec=""; outside=0; next }
	outside || NF==0 || ( substr($1,1,1)=="*" && substr($1,length($1),1)==":" ) { outside=1; next }
	spec=="" && substr($0,1,1)=="+" { spec=pspec " " substr($0,2); next }
	{ spec=spec $0 }
END	{ print spec }';
    return 0
}
_gcc-specs-exists () 
{ 
    [[ -f $(_gcc-install-dir)/$1 ]]
}
autotools_check_macro () 
{ 
    [[ -f configure.ac || -f configure.in ]] || return 0;
    local macro;
    for macro in "$@";
    do
        WANT_AUTOCONF="2.5" autoconf --trace="${macro}" 2> /dev/null;
    done;
    return 0
}
autotools_get_auxdir () 
{ 
    local auxdir_scan_out;
    auxdir_scan_out=$(autotools_check_macro "AC_CONFIG_AUX_DIR");
    [[ -n ${auxdir_scan_out} ]] || return 0;
    echo ${auxdir_scan_out} | gawk '($0 !~ /^[[:space:]]*(#|dnl)/) {
		if (match($0, /AC_CONFIG_AUX_DIR:(.*)$/, res))
			print res[1]
	}' | uniq;
    return 0
}
autotools_get_subdirs () 
{ 
    local subdirs_scan_out;
    subdirs_scan_out=$(autotools_check_macro "AC_CONFIG_SUBDIRS");
    [[ -n ${subdirs_scan_out} ]] || return 0;
    echo "${subdirs_scan_out}" | gawk '($0 !~ /^[[:space:]]*(#|dnl)/) {
		if (match($0, /AC_CONFIG_SUBDIRS:(.*)$/, res))
			print res[1]
	}' | uniq;
    return 0
}
autotools_run_tool () 
{ 
    if [[ ${EBUILD_PHASE} != "unpack" && ${EBUILD_PHASE} != "prepare" ]]; then
        ewarn "QA Warning: running $1 in ${EBUILD_PHASE} phase";
    fi;
    [[ ${WANT_AUTOMAKE} == "latest" ]] && export WANT_AUTOMAKE=1.10;
    [[ ${WANT_AUTOCONF} == "latest" ]] && export WANT_AUTOCONF=2.5;
    local STDERR_TARGET="${T}/$1.out";
    if [[ -e ${STDERR_TARGET} ]]; then
        STDERR_TARGET="${T}/$1-$$.out";
    fi;
    printf "***** $1 *****\n***** PWD: ${PWD}\n***** $*\n\n" > "${STDERR_TARGET}";
    ebegin "Running $@";
    "$@" >> "${STDERR_TARGET}" 2>&1;
    eend $?;
    if [[ $? != 0 && ${NO_FAIL} != 1 ]]; then
        echo;
        eerror "Failed Running $1 !";
        eerror;
        eerror "Include in your bugreport the contents of:";
        eerror;
        eerror "  ${STDERR_TARGET}";
        echo;
        die "Failed Running $1 !";
    fi
}
built_with_use () 
{ 
    local hidden="no";
    if [[ $1 == "--hidden" ]]; then
        hidden="yes";
        shift;
    fi;
    local missing_action="die";
    if [[ $1 == "--missing" ]]; then
        missing_action=$2;
        shift;
        shift;
        case ${missing_action} in 
            true | false | die)

            ;;
            *)
                die "unknown action '${missing_action}'"
            ;;
        esac;
    fi;
    local opt=$1;
    [[ ${opt:0:1} = "-" ]] && shift || opt="-a";
    local PKG=$(best_version $1);
    [[ -z ${PKG} ]] && die "Unable to resolve $1 to an installed package";
    shift;
    local USEFILE=${ROOT}/var/db/pkg/${PKG}/USE;
    local IUSEFILE=${ROOT}/var/db/pkg/${PKG}/IUSE;
    if [[ ! -e ${USEFILE} ]] || [[ ! -e ${IUSEFILE} && ${hidden} == "no" ]]; then
        case ${missing_action} in 
            true)
                return 0
            ;;
            false)
                return 1
            ;;
            die)
                die "Unable to determine what USE flags $PKG was built with"
            ;;
        esac;
    fi;
    if [[ ${hidden} == "no" ]]; then
        local IUSE_BUILT=($(<"${IUSEFILE}"));
        local expand;
        for expand in $(echo ${USE_EXPAND} | tr '[:upper:]' '[:lower:]');
        do
            if [[ $1 == ${expand}_* ]]; then
                expand="";
                break;
            fi;
        done;
        if [[ -n ${expand} ]]; then
            if ! has $1 ${IUSE_BUILT[@]#[-+]}; then
                case ${missing_action} in 
                    true)
                        return 0
                    ;;
                    false)
                        return 1
                    ;;
                    die)
                        die "$PKG does not actually support the $1 USE flag!"
                    ;;
                esac;
            fi;
        fi;
    fi;
    local USE_BUILT=$(<${USEFILE});
    while [[ $# -gt 0 ]]; do
        if [[ ${opt} = "-o" ]]; then
            has $1 ${USE_BUILT} && return 0;
        else
            has $1 ${USE_BUILT} || return 1;
        fi;
        shift;
    done;
    [[ ${opt} = "-a" ]]
}
cdrom_get_cds () 
{ 
    local cdcnt=0;
    local f=;
    for f in "$@";
    do
        ((++cdcnt));
        export CDROM_CHECK_${cdcnt}="$f";
    done;
    export CDROM_TOTAL_CDS=${cdcnt};
    export CDROM_CURRENT_CD=1;
    if [[ -n ${CD_ROOT}${CD_ROOT_1} ]]; then
        local var=;
        cdcnt=0;
        while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
            ((++cdcnt));
            var="CD_ROOT_${cdcnt}";
            [[ -z ${!var} ]] && var="CD_ROOT";
            if [[ -z ${!var} ]]; then
                eerror "You must either use just the CD_ROOT";
                eerror "or specify ALL the CD_ROOT_X variables.";
                eerror "In this case, you will need ${CDROM_TOTAL_CDS} CD_ROOT_X variables.";
                die "could not locate CD_ROOT_${cdcnt}";
            fi;
        done;
        export CDROM_ROOT=${CD_ROOT_1:-${CD_ROOT}};
        einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}";
        export CDROM_SET=-1;
        for f in ${CDROM_CHECK_1//:/ };
        do
            ((++CDROM_SET));
            [[ -e ${CD_ROOT}/${f} ]] && break;
        done;
        export CDROM_MATCH=${f};
        return;
    fi;
    if [[ ${CDROM_TOTAL_CDS} -eq 1 ]]; then
        einfo "This ebuild will need the ${CDROM_NAME:-cdrom for ${PN}}";
        echo;
        einfo "If you do not have the CD, but have the data files";
        einfo "mounted somewhere on your filesystem, just export";
        einfo "the variable CD_ROOT so that it points to the";
        einfo "directory containing the files.";
        echo;
        einfo "For example:";
        einfo "export CD_ROOT=/mnt/cdrom";
        echo;
    else
        if [[ -n ${CDROM_NAME_SET} ]]; then
            cdcnt=0;
            while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
                ((++cdcnt));
                export CDROM_NAME_${cdcnt}="${CDROM_NAME_SET[$((${cdcnt}-1))]}";
            done;
        fi;
        einfo "This package will need access to ${CDROM_TOTAL_CDS} cds.";
        cdcnt=0;
        while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
            ((++cdcnt));
            var="CDROM_NAME_${cdcnt}";
            [[ ! -z ${!var} ]] && einfo " CD ${cdcnt}: ${!var}";
        done;
        echo;
        einfo "If you do not have the CDs, but have the data files";
        einfo "mounted somewhere on your filesystem, just export";
        einfo "the following variables so they point to the right place:";
        einfon "";
        cdcnt=0;
        while [[ ${cdcnt} -lt ${CDROM_TOTAL_CDS} ]]; do
            ((++cdcnt));
            echo -n " CD_ROOT_${cdcnt}";
        done;
        echo;
        einfo "Or, if you have all the files in the same place, or";
        einfo "you only have one cdrom, you can export CD_ROOT";
        einfo "and that place will be used as the same data source";
        einfo "for all the CDs.";
        echo;
        einfo "For example:";
        einfo "export CD_ROOT_1=/mnt/cdrom";
        echo;
    fi;
    export CDROM_SET="";
    export CDROM_CURRENT_CD=0;
    cdrom_load_next_cd
}
cdrom_load_next_cd () 
{ 
    local var;
    ((++CDROM_CURRENT_CD));
    unset CDROM_ROOT;
    var=CD_ROOT_${CDROM_CURRENT_CD};
    [[ -z ${!var} ]] && var="CD_ROOT";
    if [[ -z ${!var} ]]; then
        var="CDROM_CHECK_${CDROM_CURRENT_CD}";
        _cdrom_locate_file_on_cd ${!var};
    else
        export CDROM_ROOT=${!var};
    fi;
    einfo "Found CD #${CDROM_CURRENT_CD} root at ${CDROM_ROOT}"
}
check_license () 
{ 
    local lic=$1;
    if [ -z "${lic}" ]; then
        lic="${PORTDIR}/licenses/${LICENSE}";
    else
        if [ -e "${PORTDIR}/licenses/${lic}" ]; then
            lic="${PORTDIR}/licenses/${lic}";
        else
            if [ -e "${PWD}/${lic}" ]; then
                lic="${PWD}/${lic}";
            else
                if [ -e "${lic}" ]; then
                    lic="${lic}";
                fi;
            fi;
        fi;
    fi;
    [ ! -f "${lic}" ] && die "Could not find requested license ${lic}";
    local l="`basename ${lic}`";
    local shopts=$-;
    local alic;
    set -o noglob;
    for alic in ${ACCEPT_LICENSE};
    do
        if [[ ${alic} == ${l} ]]; then
            set +o noglob;
            set -${shopts};
            return 0;
        fi;
    done;
    set +o noglob;
    set -$shopts;
    local licmsg=$(emktemp);
    cat > ${licmsg}  <<-EOF
**********************************************************
The following license outlines the terms of use of this
package.  You MUST accept this license for installation to
continue.  When you are done viewing, hit 'q'.	If you
CTRL+C out of this, the install will not run!
**********************************************************

EOF

    cat ${lic} >> ${licmsg};
    ${PAGER:-less} ${licmsg} || die "Could not execute pager (${PAGER}) to accept ${lic}";
    einfon "Do you accept the terms of this license (${l})? [yes/no] ";
    read alic;
    case ${alic} in 
        yes | Yes | y | Y)
            return 0
        ;;
        *)
            echo;
            echo;
            echo;
            eerror "You MUST accept the license to continue!  Exiting!";
            die "Failed to accept license"
        ;;
    esac
}
create_ml_includes () 
{ 
    local dest=$1;
    shift;
    local basedirs=$(create_ml_includes-listdirs "$@");
    create_ml_includes-makedestdirs ${dest} ${basedirs};
    local file;
    for file in $(create_ml_includes-allfiles ${basedirs});
    do
        ( echo "/* Autogenerated by create_ml_includes() in multilib.eclass */";
        local dir;
        for dir in ${basedirs};
        do
            if [[ -f ${D}/${dir}/${file} ]]; then
                echo "";
                local sym=$(create_ml_includes-sym_for_dir ${dir} "$@");
                if [[ ${sym/=} != "${sym}" ]]; then
                    echo "#if ${sym}";
                else
                    if [[ ${sym::1} == "!" ]]; then
                        echo "#ifndef ${sym:1}";
                    else
                        echo "#ifdef ${sym}";
                    fi;
                fi;
                echo "# include <$(create_ml_includes-absolute ${dir}/${file})>";
                echo "#endif /* ${sym} */";
            fi;
        done ) > "${D}/${dest}/${file}";
    done
}
create_ml_includes-absolute () 
{ 
    local dst="$(create_ml_includes-tidy_path $1)";
    dst=(${dst//\// });
    local i;
    for ((i=0; i<${#dst[*]}; i++))
    do
        [ "${dst[i]}" == "include" ] && break;
    done;
    local strip_upto=$i;
    for ((i=strip_upto+1; i<${#dst[*]}-1; i++))
    do
        echo -n ${dst[i]}/;
    done;
    echo -n ${dst[i]}
}
create_ml_includes-allfiles () 
{ 
    local basedir file;
    for basedir in "$@";
    do
        for file in $(find "${D}"/${basedir} -type f);
        do
            echo ${file/${D}\/${basedir}\//};
        done;
    done | sort | uniq
}
create_ml_includes-listdirs () 
{ 
    local dirs;
    local data;
    for data in "$@";
    do
        dirs="${dirs} ${data/*:/}";
    done;
    echo ${dirs:1}
}
create_ml_includes-makedestdirs () 
{ 
    local dest=$1;
    shift;
    local basedirs=$@;
    dodir ${dest};
    local basedir;
    for basedir in ${basedirs};
    do
        local dir;
        for dir in $(find "${D}"/${basedir} -type d);
        do
            dodir ${dest}/${dir/${D}\/${basedir}/};
        done;
    done
}
create_ml_includes-sym_for_dir () 
{ 
    local dir=$1;
    shift;
    local data;
    for data in "$@";
    do
        if [[ ${data} == *:${dir} ]]; then
            echo ${data/:*/};
            return 0;
        fi;
    done;
    echo "Shouldn't be here -- create_ml_includes-sym_for_dir $1 $@";
    exit 1
}
create_ml_includes-tidy_path () 
{ 
    local removed=$1;
    if [ -n "${removed}" ]; then
        while [ "${removed}" != "${removed/\/\//\/}" ]; do
            removed=${removed/\/\//\/};
        done;
        while [ "${removed}" != "${removed//\/.\//\/}" ]; do
            removed=${removed//\/.\//\/};
        done;
        [ "${removed##*/}" = "." ] && removed=${removed%/*};
        while [ "${removed}" != "${removed//\/..\/}" ]; do
            local p1="${removed%%\/..\/*}";
            local p2="${removed#*\/..\/}";
            removed="${p1%\/*}/${p2}";
        done;
        [ "${removed##*/}" = ".." ] && removed=${removed%/*/*};
        [ "${removed##*/}" = "" ] && removed=${removed%/*};
        echo ${removed};
    fi
}
darwintoolize () 
{ 
    ewarn "darwintoolize() is deprecated, please just use elibtoolize()!";
    elibtoolize
}
dlopen_lib () 
{ 
    if [[ ${CHOST} == *-linux-gnu || ${CHOST} == *-linux-uclibc ]]; then
        echo "-ldl";
    fi
}
doicon () 
{ 
    ( local i j ret;
    insinto /usr/share/pixmaps;
    for i in "$@";
    do
        if [[ -f ${i} ]]; then
            doins "${i}";
            ((ret+=$?));
        else
            if [[ -d ${i} ]]; then
                for j in "${i}"/*.png;
                do
                    doins "${j}";
                    ((ret+=$?));
                done;
            else
                ((++ret));
            fi;
        fi;
    done;
    exit ${ret} )
}
domenu () 
{ 
    ( local i j ret=0;
    insinto /usr/share/applications;
    for i in "$@";
    do
        if [[ -f ${i} ]]; then
            doins "${i}";
            ((ret+=$?));
        else
            if [[ -d ${i} ]]; then
                for j in "${i}"/*.desktop;
                do
                    doins "${j}";
                    ((ret+=$?));
                done;
            else
                ((++ret));
            fi;
        fi;
    done;
    exit ${ret} )
}
dyn_pretend () 
{ 
    ebuild_phase_with_hooks pkg_pretend
}
eaclocal () 
{ 
    local aclocal_opts;
    local amflags_file;
    for amflags_file in GNUmakefile.am Makefile.am GNUmakefile.in Makefile.in;
    do
        [[ -e ${amflags_file} ]] || continue;
        aclocal_opts=$(sed -n '/^ACLOCAL_AMFLAGS[[:space:]]*=/s:[^=]*=::p' ${amflags_file});
        eval aclocal_opts=\"${aclocal_opts}\";
        break;
    done;
    if [[ -n ${AT_M4DIR} ]]; then
        for x in ${AT_M4DIR};
        do
            case "${x}" in 
                "-I")

                ;;
                *)
                    [[ ! -d ${x} ]] && ewarn "eaclocal: '${x}' does not exist";
                    aclocal_opts="${aclocal_opts} -I ${x}"
                ;;
            esac;
        done;
    fi;
    [[ ! -f aclocal.m4 || -n $(grep -e 'generated.*by aclocal' aclocal.m4) ]] && autotools_run_tool aclocal "$@" ${aclocal_opts}
}
eautoconf () 
{ 
    if [[ ! -f configure.ac && ! -f configure.in ]]; then
        echo;
        eerror "No configure.{ac,in} present in '$(pwd | sed -e 's:.*/::')'!";
        echo;
        die "No configure.{ac,in} present!";
    fi;
    autotools_run_tool autoconf "$@"
}
eautoheader () 
{ 
    [[ -n $(autotools_check_macro "AC_CONFIG_HEADERS") ]] || return 0;
    NO_FAIL=1 autotools_run_tool autoheader "$@"
}
eautomake () 
{ 
    local extra_opts;
    local makefile_name;
    if [[ -f GNUmakefile.am ]]; then
        makefile_name="GNUmakefile";
    else
        if [[ -f Makefile.am ]]; then
            makefile_name="Makefile";
        else
            return 0;
        fi;
    fi;
    if [[ -z ${FROM_EAUTORECONF} && -f ${makefile_name}.in ]]; then
        local used_automake;
        local installed_automake;
        installed_automake=$(automake --version | head -n 1 | 			sed -e 's:.*(GNU automake) ::');
        used_automake=$(head -n 1 < ${makefile_name}.in | 			sed -e 's:.*by automake \(.*\) from .*:\1:');
        if [[ ${installed_automake} != ${used_automake} ]]; then
            einfo "Automake used for the package (${used_automake}) differs from";
            einfo "the installed version (${installed_automake}).";
            eautoreconf;
            return 0;
        fi;
    fi;
    [[ -f INSTALL && -f AUTHORS && -f ChangeLog && -f NEWS ]] || extra_opts="${extra_opts} --foreign";
    autotools_run_tool automake --add-missing --copy ${extra_opts} "$@"
}
eautoreconf () 
{ 
    local pwd=$(pwd) x auxdir g=;
    if [[ -z ${AT_NO_RECURSIVE} ]]; then
        for x in $(autotools_get_subdirs);
        do
            if [[ -d ${x} ]]; then
                cd "${x}";
                AT_NOELIBTOOLIZE="yes" eautoreconf;
                cd "${pwd}";
            fi;
        done;
    fi;
    auxdir=$(autotools_get_auxdir);
    einfo "Running eautoreconf in '$(pwd)' ...";
    [[ -n ${auxdir} ]] && mkdir -p ${auxdir};
    eaclocal;
    [[ ${CHOST} == *-darwin* ]] && g=g;
    if ${LIBTOOLIZE:-${g}libtoolize} -n --install >&/dev/null; then
        _elibtoolize --copy --force --install;
    else
        _elibtoolize --copy --force;
    fi;
    eautoconf;
    eautoheader;
    FROM_EAUTORECONF="yes" eautomake ${AM_OPTS};
    [[ ${AT_NOELIBTOOLIZE} == "yes" ]] && return 0;
    S=${pwd} elibtoolize;
    return 0
}
ebeep () 
{ 
    local n;
    if [[ -z ${EBEEP_IGNORE} ]]; then
        for ((n=1 ; n <= ${1:-5} ; n++))
        do
            echo -ne "\a";
            sleep 0.1 >&/dev/null;
            sleep 0,1 >&/dev/null;
            echo -ne "\a";
            sleep 1;
        done;
    fi
}
ecvs_clean () 
{ 
    [[ -z $* ]] && set -- .;
    find "$@" -type d -name 'CVS' -prune -print0 | xargs -0 rm -rf;
    find "$@" -type f -name '.cvs*' -print0 | xargs -0 rm -rf
}
edos2unix () 
{ 
    echo "$@" | xargs sed -i 's/\r$//'
}
egetent () 
{ 
    case ${CHOST} in 
        *-darwin9)
            local mytype=$1;
            [[ "passwd" == $mytype ]] && mytype="Users";
            [[ "group" == $mytype ]] && mytype="Groups";
            case "$2" in 
                *[!0-9]*)
                    dscl . -read /$mytype/$2 2> /dev/null | grep RecordName
                ;;
                *)
                    local mykey="UniqueID";
                    [[ $mytype == "Groups" ]] && mykey="PrimaryGroupID";
                    dscl . -search /$mytype $mykey $2 2> /dev/null
                ;;
            esac
        ;;
        *-darwin*)
            case "$2" in 
                *[!0-9]*)
                    nidump $1 . | awk -F":" "{ if (\$1 ~ /^$2$/) {print \$0;exit;} }"
                ;;
                *)
                    nidump $1 . | awk -F":" "{ if (\$3 == $2) {print \$0;exit;} }"
                ;;
            esac
        ;;
        *-freebsd* | *-dragonfly*)
            local opts action="user";
            [[ $1 == "passwd" ]] || action="group";
            if [[ $2 == [[:digit:]]* ]]; then
                [[ ${action} == "user" ]] && opts="-u" || opts="-g";
            fi;
            pw show ${action} ${opts} "$2" -q
        ;;
        *-netbsd* | *-openbsd*)
            grep "$2:\*:" /etc/$1
        ;;
        *)
            type -p nscd >&/dev/null && nscd -i "$1";
            getent "$1" "$2"
        ;;
    esac
}
egethome () 
{ 
    ent=$(egetent passwd $1);
    case ${CHOST} in 
        *-darwin* | *-freebsd* | *-dragonfly*)
            echo ${ent} | cut -d: -f9
        ;;
        *)
            echo ${ent} | cut -d: -f6
        ;;
    esac
}
egetshell () 
{ 
    ent=$(egetent passwd "$1");
    case ${CHOST} in 
        *-darwin* | *-freebsd* | *-dragonfly*)
            echo ${ent} | cut -d: -f10
        ;;
        *)
            echo ${ent} cut -d: -f7
        ;;
    esac
}
elibtoolize () 
{ 
    local x=;
    local y=;
    local do_portage="no";
    local do_reversedeps="no";
    local do_only_patches="no";
    local do_uclibc="yes";
    local deptoremove=;
    local my_dirlist=;
    local elt_patches="install-sh ltmain portage relink max_cmd_len sed test tmp cross as-needed";
    local start_dir=${PWD};
    my_dirlist=$(ELT_find_ltmain_sh);
    for x in "$@";
    do
        case "${x}" in 
            "--portage")
                do_portage="yes"
            ;;
            "--reverse-deps")
                do_reversedeps="yes";
                elt_patches="${elt_patches} fix-relink"
            ;;
            "--patch-only")
                do_only_patches="yes"
            ;;
            "^--remove-internal-dep="*)
                deptoremove=$(echo "${x}" | sed -e 's|--remove-internal-dep=||');
                [[ -n ${deptoremove} ]] && elt_patches="${elt_patches} rem-int-dep"
            ;;
            "--shallow")
                if [[ -f ${S}/ltmain.sh ]]; then
                    my_dirlist=${S};
                else
                    my_dirlist=;
                fi
            ;;
            "--no-uclibc")
                do_uclibc="no"
            ;;
            *)
                eerror "Invalid elibtoolize option: ${x}";
                die "elibtoolize called with ${x} ??"
            ;;
        esac;
    done;
    [[ ${do_uclibc} == "yes" ]] && elt_patches="${elt_patches} uclibc-conf uclibc-ltconf";
    [[ ${CHOST} == *"-freebsd"* ]] && elt_patches="${elt_patches} fbsd-conf fbsd-ltconf";
    [[ ${CHOST} == *"-darwin"* ]] && elt_patches="${elt_patches} darwin-ltconf darwin-ltmain";
    for x in ${my_dirlist};
    do
        local tmp=$(echo "${x}" | sed -e "s|${WORKDIR}||");
        export ELT_APPLIED_PATCHES=;
        export ELT_LTMAIN_SH="${x}/ltmain.sh";
        [[ -f ${x}/.elibtoolized ]] && continue;
        cd ${x};
        einfo "Running elibtoolize in: $(echo "/${tmp}" | sed -e 's|//|/|g; s|^/||')";
        for y in ${elt_patches};
        do
            local ret=0;
            case "${y}" in 
                "portage")
                    if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then
                        ELT_walk_patches "${x}/ltmain.sh" "${y}";
                        ret=$?;
                    fi
                ;;
                "rem-int-dep")
                    ELT_walk_patches "${x}/ltmain.sh" "${y}" "${deptoremove}";
                    ret=$?
                ;;
                "fix-relink")
                    if [[ -n $(grep 'inst_prefix_dir' "${x}/ltmain.sh") ]]; then
                        ELT_walk_patches "${x}/ltmain.sh" "${y}";
                        ret=$?;
                    fi
                ;;
                "max_cmd_len")
                    if [[ -n $(grep 'max_cmd_len' "${x}/ltmain.sh") ]]; then
                        ELT_walk_patches "${x}/ltmain.sh" "${y}";
                        ret=$?;
                    fi
                ;;
                "as-needed")
                    ELT_walk_patches "${x}/ltmain.sh" "${y}";
                    ret=$?
                ;;
                "uclibc-conf")
                    if [[ -e ${x}/configure && -n $(grep 'Transform linux' "${x}/configure") ]]; then
                        ELT_walk_patches "${x}/configure" "${y}";
                        ret=$?;
                    else
                        if [[ ! -e ${x}/configure && -e ${x}/../configure && -n $(grep 'Transform linux' "${x}/../configure") ]]; then
                            ELT_walk_patches "${x}/../configure" "${y}";
                            ret=$?;
                        fi;
                    fi
                ;;
                "uclibc-ltconf")
                    if [[ -s ${x}/ltconfig ]]; then
                        ELT_walk_patches "${x}/ltconfig" "${y}";
                        ret=$?;
                    fi
                ;;
                "fbsd-conf")
                    if [[ -e ${x}/configure && -n $(grep 'version_type=freebsd-' "${x}/configure") ]]; then
                        ELT_walk_patches "${x}/configure" "${y}";
                        ret=$?;
                    else
                        if [[ ! -e ${x}/configure && -e ${x}/../configure && -n $(grep 'version_type=freebsd-' "${x}/../configure") ]]; then
                            ELT_walk_patches "${x}/../configure" "${y}";
                            ret=$?;
                        fi;
                    fi
                ;;
                "fbsd-ltconf")
                    if [[ -s ${x}/ltconfig ]]; then
                        ELT_walk_patches "${x}/ltconfig" "${y}";
                        ret=$?;
                    fi
                ;;
                "darwin-ltconf")
                    if [[ -s ${x}/ltconfig ]]; then
                        ELT_walk_patches "${x}/ltconfig" "${y}";
                        ret=$?;
                    fi
                ;;
                "install-sh")
                    ELT_walk_patches "${x}/install-sh" "${y}";
                    ret=$?
                ;;
                "cross")
                    if tc-is-cross-compiler; then
                        ELT_walk_patches "${x}/ltmain.sh" "${y}";
                        ret=$?;
                    fi
                ;;
                *)
                    ELT_walk_patches "${x}/ltmain.sh" "${y}";
                    ret=$?
                ;;
            esac;
            if [[ ${ret} -ne 0 ]]; then
                case ${y} in 
                    "relink")
                        local version=$(ELT_libtool_version "${x}/ltmain.sh");
                        if [[ -z $(grep 'inst_prefix_dir' "${x}/ltmain.sh") && $(VER_to_int "${version}") -ge $(VER_to_int "1.4.0") ]]; then
                            ewarn "  Could not apply relink.patch!";
                        fi
                    ;;
                    "portage")
                        if [[ ${do_portage} == "yes" ]]; then
                            if [[ -z $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then
                                echo;
                                eerror "Portage patch requested, but failed to apply!";
                                eerror "Please bug azarah or vapier to add proper patch.";
                                die "Portage patch requested, but failed to apply!";
                            fi;
                        else
                            if [[ -n $(grep 'We do not want portage' "${x}/ltmain.sh") ]]; then
                                :;
                            else
                                local version=$( 									eval $(grep -e '^[[:space:]]*VERSION=' "${x}/ltmain.sh"); 									echo "${VERSION}");
                                echo;
                                eerror "Portage patch failed to apply (ltmain.sh version ${version})!";
                                eerror "Please bug azarah or vapier to add proper patch.";
                                die "Portage patch failed to apply!";
                            fi;
                            ELT_APPLIED_PATCHES="portage";
                        fi
                    ;;
                    "uclibc-"*)
                        [[ ${CHOST} == *"-uclibc" ]] && ewarn "  uClibc patch set '${y}' failed to apply!"
                    ;;
                    "fbsd-"*)
                        if [[ ${CHOST} == *"-freebsd"* ]]; then
                            if [[ -z $(grep 'Handle Gentoo/FreeBSD as it was Linux' 								"${x}/configure" "${x}/../configure" 2>/dev/null) ]]; then
                                eerror "  FreeBSD patch set '${y}' failed to apply!";
                                die "FreeBSD patch set '${y}' failed to apply!";
                            fi;
                        fi
                    ;;
                    "darwin-"*)
                        [[ ${CHOST} == *"-darwin"* ]] && ewarn "  Darwin patch set '${y}' failed to apply!"
                    ;;
                esac;
            fi;
        done;
        if [[ -z ${ELT_APPLIED_PATCHES} ]]; then
            if [[ ${do_portage} == "no" && ${do_reversedeps} == "no" && ${do_only_patches} == "no" && ${deptoremove} == "" ]]; then
                ewarn "Cannot apply any patches, please file a bug about this";
                die;
            fi;
        fi;
        [[ -f ${x}/libtool ]] && rm -f "${x}/libtool";
         >> "${x}/.elibtoolized";
    done;
    cd "${start_dir}"
}
emktemp () 
{ 
    local exe="touch";
    [[ $1 == -d ]] && exe="mkdir" && shift;
    local topdir=$1;
    if [[ -z ${topdir} ]]; then
        [[ -z ${T} ]] && topdir="/tmp" || topdir=${T};
    fi;
    if ! type -P mktemp > /dev/null; then
        local tmp=/;
        while [[ -e ${tmp} ]]; do
            tmp=${topdir}/tmp.${RANDOM}.${RANDOM}.${RANDOM};
        done;
        ${exe} "${tmp}" || ${exe} -p "${tmp}";
        echo "${tmp}";
    else
        if [[ ${exe} == "touch" ]]; then
            TMPDIR="${topdir}" mktemp -t tmp.XXXXXXXXXX;
        else
            TMPDIR="${topdir}" mktemp -dt tmp.XXXXXXXXXX;
        fi;
    fi
}
enewgroup () 
{ 
    case ${EBUILD_PHASE} in 
        unpack | compile | test | install)
            eerror "'enewgroup()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
            eerror "Package fails at QA and at life.  Please file a bug.";
            die "Bad package!  enewgroup is only for use in pkg_* functions!"
        ;;
    esac;
    local egroup="$1";
    shift;
    if [ -z "${egroup}" ]; then
        eerror "No group specified !";
        die "Cannot call enewgroup without a group";
    fi;
    if [[ -n $(egetent group "${egroup}") ]]; then
        return 0;
    fi;
    einfo "Adding group '${egroup}' to your system ...";
    local opts=;
    local egid="$1";
    shift;
    if [ ! -z "${egid}" ]; then
        if [ "${egid}" -gt 0 ]; then
            if [ -z "`egetent group ${egid}`" ]; then
                if [[ "${CHOST}" == *-darwin* ]]; then
                    opts="${opts} ${egid}";
                else
                    opts="${opts} -g ${egid}";
                fi;
            else
                egid="next available; requested gid taken";
            fi;
        else
            eerror "Groupid given but is not greater than 0 !";
            die "${egid} is not a valid GID";
        fi;
    else
        egid="next available";
    fi;
    einfo " - Groupid: ${egid}";
    local eextra="$@";
    opts="${opts} ${eextra}";
    local oldsandbox="${SANDBOX_ON}";
    export SANDBOX_ON="0";
    case ${CHOST} in 
        *-darwin*)
            if [ ! -z "${eextra}" ]; then
                einfo "Extra options are not supported on Darwin/OS X yet";
                einfo "Please report the ebuild along with the info below";
                einfo "eextra: ${eextra}";
                die "Required function missing";
            fi;
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            dscl . create /groups/${egroup} gid ${egid};
            dscl . create /groups/${egroup} passwd '*'
        ;;
        *-freebsd* | *-dragonfly*)
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            pw groupadd ${egroup} -g ${egid} || die "enewgroup failed"
        ;;
        *-netbsd*)
            case ${egid} in 
                *[!0-9]*)
                    for ((egid = 101; egid <= 999; egid++))
                    do
                        [[ -z $(egetent group ${egid}) ]] && break;
                    done
                ;;
            esac;
            groupadd -g ${egid} ${egroup} || die "enewgroup failed"
        ;;
        *)
            groupadd ${opts} ${egroup} || die "enewgroup failed"
        ;;
    esac;
    export SANDBOX_ON="${oldsandbox}"
}
enewuser () 
{ 
    case ${EBUILD_PHASE} in 
        unpack | compile | test | install)
            eerror "'enewuser()' called from '${EBUILD_PHASE}()' which is not a pkg_* function.";
            eerror "Package fails at QA and at life.  Please file a bug.";
            die "Bad package!  enewuser is only for use in pkg_* functions!"
        ;;
    esac;
    local euser=$1;
    shift;
    if [[ -z ${euser} ]]; then
        eerror "No username specified !";
        die "Cannot call enewuser without a username";
    fi;
    if [[ -n $(egetent passwd "${euser}") ]]; then
        return 0;
    fi;
    einfo "Adding user '${euser}' to your system ...";
    local opts=;
    local euid=$1;
    shift;
    if [[ -n ${euid} && ${euid} != -1 ]]; then
        if [[ ${euid} -gt 0 ]]; then
            if [[ -n $(egetent passwd ${euid}) ]]; then
                euid="next";
            fi;
        else
            eerror "Userid given but is not greater than 0 !";
            die "${euid} is not a valid UID";
        fi;
    else
        euid="next";
    fi;
    if [[ ${euid} == "next" ]]; then
        for ((euid = 101; euid <= 999; euid++))
        do
            [[ -z $(egetent passwd ${euid}) ]] && break;
        done;
    fi;
    opts="${opts} -u ${euid}";
    einfo " - Userid: ${euid}";
    local eshell=$1;
    shift;
    if [[ ! -z ${eshell} ]] && [[ ${eshell} != "-1" ]]; then
        if [[ ! -e ${ROOT}${eshell} ]]; then
            eerror "A shell was specified but it does not exist !";
            die "${eshell} does not exist in ${ROOT}";
        fi;
        if [[ ${eshell} == */false || ${eshell} == */nologin ]]; then
            eerror "Do not specify ${eshell} yourself, use -1";
            die "Pass '-1' as the shell parameter";
        fi;
    else
        for shell in /sbin/nologin /usr/sbin/nologin /bin/false /usr/bin/false /dev/null;
        do
            [[ -x ${ROOT}${shell} ]] && break;
        done;
        if [[ ${shell} == "/dev/null" ]]; then
            eerror "Unable to identify the shell to use, proceeding with userland default.";
            case ${USERLAND} in 
                GNU)
                    shell="/bin/false"
                ;;
                BSD)
                    shell="/sbin/nologin"
                ;;
                Darwin)
                    shell="/usr/sbin/nologin"
                ;;
                *)
                    die "Unable to identify the default shell for userland ${USERLAND}"
                ;;
            esac;
        fi;
        eshell=${shell};
    fi;
    einfo " - Shell: ${eshell}";
    opts="${opts} -s ${eshell}";
    local ehome=$1;
    shift;
    if [[ -z ${ehome} ]] || [[ ${ehome} == "-1" ]]; then
        ehome="/dev/null";
    fi;
    einfo " - Home: ${ehome}";
    opts="${opts} -d ${ehome}";
    local egroups=$1;
    shift;
    if [[ ! -z ${egroups} ]]; then
        local oldifs=${IFS};
        local defgroup="" exgroups="";
        export IFS=",";
        for g in ${egroups};
        do
            export IFS=${oldifs};
            if [[ -z $(egetent group "${g}") ]]; then
                eerror "You must add group ${g} to the system first";
                die "${g} is not a valid GID";
            fi;
            if [[ -z ${defgroup} ]]; then
                defgroup=${g};
            else
                exgroups="${exgroups},${g}";
            fi;
            export IFS=",";
        done;
        export IFS=${oldifs};
        opts="${opts} -g ${defgroup}";
        if [[ ! -z ${exgroups} ]]; then
            opts="${opts} -G ${exgroups:1}";
        fi;
    else
        egroups="(none)";
    fi;
    einfo " - Groups: ${egroups}";
    local oldsandbox=${SANDBOX_ON};
    export SANDBOX_ON="0";
    case ${CHOST} in 
        *-darwin*)
            if [[ -z $@ ]]; then
                dscl . create /users/${euser} uid ${euid};
                dscl . create /users/${euser} shell ${eshell};
                dscl . create /users/${euser} home ${ehome};
                dscl . create /users/${euser} realname "added by portage for ${PN}";
                local oldifs=${IFS};
                export IFS=",";
                for g in ${egroups};
                do
                    dscl . merge /groups/${g} users ${euser};
                done;
                export IFS=${oldifs};
            else
                einfo "Extra options are not supported on Darwin yet";
                einfo "Please report the ebuild along with the info below";
                einfo "eextra: $@";
                die "Required function missing";
            fi
        ;;
        *-freebsd* | *-dragonfly*)
            if [[ -z $@ ]]; then
                pw useradd ${euser} ${opts} -c "added by portage for ${PN}" die "enewuser failed";
            else
                einfo " - Extra: $@";
                pw useradd ${euser} ${opts} "$@" || die "enewuser failed";
            fi
        ;;
        *-netbsd*)
            if [[ -z $@ ]]; then
                useradd ${opts} ${euser} || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd ${opts} ${euser} "$@" || die "enewuser failed";
            fi
        ;;
        *-openbsd*)
            if [[ -z $@ ]]; then
                useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd -u ${euid} -s ${eshell} -d ${ehome} -c "Added by portage for ${PN}" -g ${egroups} ${euser} "$@" || die "enewuser failed";
            fi
        ;;
        *)
            if [[ -z $@ ]]; then
                useradd ${opts} ${euser} -c "added by portage for ${PN}" || die "enewuser failed";
            else
                einfo " - Extra: $@";
                useradd ${opts} ${euser} "$@" || die "enewuser failed";
            fi
        ;;
    esac;
    if [[ ! -e ${ROOT}/${ehome} ]]; then
        einfo " - Creating ${ehome} in ${ROOT}";
        mkdir -p "${ROOT}/${ehome}";
        chown ${euser} "${ROOT}/${ehome}";
        chmod 755 "${ROOT}/${ehome}";
    fi;
    export SANDBOX_ON=${oldsandbox}
}
epatch () 
{ 
    function _epatch_draw_line () 
    { 
        [[ -z $1 ]] && set "$(printf "%65s" '')";
        echo "${1//?/=}"
    };
    function _epatch_assert () 
    { 
        local _pipestatus=${PIPESTATUS[*]};
        [[ ${_pipestatus// /} -eq 0 ]]
    };
    local PIPE_CMD="";
    local STDERR_TARGET="${T}/$$.out";
    local PATCH_TARGET="${T}/$$.patch";
    local PATCH_SUFFIX="";
    local SINGLE_PATCH="no";
    local x="";
    unset P4CONFIG P4PORT P4USER;
    if [ "$#" -gt 1 ]; then
        local m="";
        for m in "$@";
        do
            epatch "${m}";
        done;
        return 0;
    fi;
    if [ -n "$1" -a -f "$1" ]; then
        SINGLE_PATCH="yes";
        local EPATCH_SOURCE="$1";
        local EPATCH_SUFFIX="${1##*\.}";
    else
        if [ -n "$1" -a -d "$1" ]; then
            if [ "${EPATCH_FORCE}" = "yes" ] && [ -z "${EPATCH_SUFFIX}" ]; then
                local EPATCH_SOURCE="$1/*";
            else
                local EPATCH_SOURCE="$1/*.${EPATCH_SUFFIX}";
            fi;
        else
            if [[ ! -d ${EPATCH_SOURCE} ]] || [[ -n $1 ]]; then
                if [ -n "$1" -a "${EPATCH_SOURCE}" = "${WORKDIR}/patch" ]; then
                    EPATCH_SOURCE="$1";
                fi;
                echo;
                eerror "Cannot find \$EPATCH_SOURCE!  Value for \$EPATCH_SOURCE is:";
                eerror;
                eerror "  ${EPATCH_SOURCE}";
                eerror "  ( ${EPATCH_SOURCE##*/} )";
                echo;
                die "Cannot find \$EPATCH_SOURCE!";
            fi;
            local EPATCH_SOURCE="${EPATCH_SOURCE}/*.${EPATCH_SUFFIX}";
        fi;
    fi;
    case ${EPATCH_SUFFIX##*\.} in 
        xz)
            PIPE_CMD="xz -dc";
            PATCH_SUFFIX="xz"
        ;;
        lzma)
            PIPE_CMD="lzma -dc";
            PATCH_SUFFIX="lzma"
        ;;
        bz2)
            PIPE_CMD="bzip2 -dc";
            PATCH_SUFFIX="bz2"
        ;;
        gz | Z | z)
            PIPE_CMD="gzip -dc";
            PATCH_SUFFIX="gz"
        ;;
        ZIP | zip)
            PIPE_CMD="unzip -p";
            PATCH_SUFFIX="zip"
        ;;
        *)
            PIPE_CMD="cat";
            PATCH_SUFFIX="patch"
        ;;
    esac;
    if [ "${SINGLE_PATCH}" = "no" ]; then
        einfo "${EPATCH_MULTI_MSG}";
    fi;
    for x in ${EPATCH_SOURCE};
    do
        if [ -f ${x} ] && ( [ "${SINGLE_PATCH}" = "yes" -o "${x/_all_}" != "${x}" -o "${x/_${ARCH}_}" != "${x}" ] || [ "${EPATCH_FORCE}" = "yes" ] ); then
            local count=0;
            local popts="${EPATCH_OPTS}";
            local patchname=${x##*/};
            if [ -n "${EPATCH_EXCLUDE}" ]; then
                if [ "${EPATCH_EXCLUDE/${patchname}}" != "${EPATCH_EXCLUDE}" ]; then
                    continue;
                fi;
            fi;
            if [ "${SINGLE_PATCH}" = "yes" ]; then
                if [ -n "${EPATCH_SINGLE_MSG}" ]; then
                    einfo "${EPATCH_SINGLE_MSG}";
                else
                    einfo "Applying ${patchname} ...";
                fi;
            else
                einfo "  ${patchname} ...";
            fi;
            echo "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
            echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
            if [[ ${PATCH_SUFFIX} != "patch" ]]; then
                echo -n "PIPE_COMMAND:	" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo "${PIPE_CMD} ${x} > ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                if ! ( ${PIPE_CMD} ${x} > ${PATCH_TARGET} ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
                    echo;
                    eerror "Could not extract patch!";
                    count=5;
                    break;
                fi;
            else
                PATCH_TARGET="${x}";
            fi;
            local abs_paths=$(egrep -n '^[-+]{3} /' "${PATCH_TARGET}" | awk '$2 != "/dev/null" { print }');
            if [[ -n ${abs_paths} ]]; then
                count=1;
                echo "NOTE: skipping -p0 due to absolute paths in patch:" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo "${abs_paths}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
            fi;
            while [ "${count}" -lt 5 ]; do
                _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo -n "PATCH COMMAND:	 " >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo "patch -p${count} ${popts} < ${PATCH_TARGET}" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                if ( cat ${PATCH_TARGET} | patch -p${count} ${popts} --dry-run -f;
                _epatch_assert ) >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/} 2>&1; then
                    _epatch_draw_line "***** ${patchname} *****" > ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    echo "ACTUALLY APPLYING ${patchname} ..." >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    echo >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    _epatch_draw_line "***** ${patchname} *****" >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    cat ${PATCH_TARGET} | patch -p${count} ${popts} >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real 2>&1;
                    _epatch_assert;
                    if [ "$?" -ne 0 ]; then
                        cat ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real >> ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
                        echo;
                        eerror "A dry-run of patch command succeeded, but actually";
                        eerror "applying the patch failed!";
                        count=5;
                    fi;
                    rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}.real;
                    break;
                fi;
                count=$((count + 1));
            done;
            if [ "${PATCH_SUFFIX}" != "patch" ]; then
                rm -f ${PATCH_TARGET};
            fi;
            if [ "${count}" -eq 5 ]; then
                echo;
                eerror "Failed Patch: ${patchname} !";
                eerror " ( ${PATCH_TARGET} )";
                eerror;
                eerror "Include in your bugreport the contents of:";
                eerror;
                eerror "  ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/}";
                echo;
                die "Failed Patch: ${patchname}!";
            fi;
            rm -f ${STDERR_TARGET%/*}/${patchname}-${STDERR_TARGET##*/};
            eend 0;
        fi;
    done;
    if [ "${SINGLE_PATCH}" = "no" ]; then
        einfo "Done with patching";
    fi
}
epause () 
{ 
    [[ -z ${EPAUSE_IGNORE} ]] && sleep ${1:-5}
}
epunt_cxx () 
{ 
    local dir=$1;
    [[ -z ${dir} ]] && dir=${S};
    ebegin "Removing useless C++ checks";
    local f;
    find "${dir}" -name configure | while read f; do
        patch --no-backup-if-mismatch -p0 "${f}" "${PORTDIR}/eclass/ELT-patches/nocxx/nocxx.patch" > /dev/null;
    done;
    eend 0
}
esvn_clean () 
{ 
    [[ -z $* ]] && set -- .;
    find "$@" -type d -name '.svn' -prune -print0 | xargs -0 rm -rf
}
find_unpackable_file () 
{ 
    local src=$1;
    if [[ -z ${src} ]]; then
        src=${DISTDIR}/${A};
    else
        if [[ -e ${DISTDIR}/${src} ]]; then
            src=${DISTDIR}/${src};
        else
            if [[ -e ${PWD}/${src} ]]; then
                src=${PWD}/${src};
            else
                if [[ -e ${src} ]]; then
                    src=${src};
                fi;
            fi;
        fi;
    fi;
    [[ ! -e ${src} ]] && return 1;
    echo "${src}"
}
gcc-fullversion () 
{ 
    $(tc-getCC "$@") -dumpversion
}
gcc-major-version () 
{ 
    gcc-version "$@" | cut -f1 -d.
}
gcc-micro-version () 
{ 
    gcc-fullversion "$@" | cut -f3 -d. | cut -f1 -d-
}
gcc-minor-version () 
{ 
    gcc-version "$@" | cut -f2 -d.
}
gcc-specs-directive () 
{ 
    local directive subdname subdirective;
    directive="$(_gcc-specs-directive_raw $1)";
    while [[ ${directive} == *%\(*\)* ]]; do
        subdname=${directive/*%\(};
        subdname=${subdname/\)*};
        subdirective="$(_gcc-specs-directive_raw ${subdname})";
        directive="${directive//\%(${subdname})/${subdirective}}";
    done;
    echo "${directive}";
    return 0
}
gcc-specs-nostrict () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!fstrict-overflow:}" != "${directive}" ]])
}
gcc-specs-now () 
{ 
    local directive;
    directive=$(gcc-specs-directive link_command);
    return $([[ "${directive/\{!nonow:}" != "${directive}" ]])
}
gcc-specs-pie () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!nopie:}" != "${directive}" ]])
}
gcc-specs-relro () 
{ 
    local directive;
    directive=$(gcc-specs-directive link_command);
    return $([[ "${directive/\{!norelro:}" != "${directive}" ]])
}
gcc-specs-ssp () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!fno-stack-protector:}" != "${directive}" ]])
}
gcc-specs-ssp-to-all () 
{ 
    local directive;
    directive=$(gcc-specs-directive cc1);
    return $([[ "${directive/\{!fno-stack-protector-all:}" != "${directive}" ]])
}
gcc-version () 
{ 
    gcc-fullversion "$@" | cut -f1,2 -d.
}
gen_usr_ldscript () 
{ 
    local lib libdir=$(get_libdir) output_format="" auto=false suffix=$(get_libname);
    [[ -z ${ED+set} ]] && local ED=${D%/}${EPREFIX}/;
    tc-is-static-only && return;
    dodir /usr/${libdir};
    if [[ $1 == "-a" ]]; then
        auto=true;
        shift;
        dodir /${libdir};
    fi;
    output_format=$($(tc-getCC) ${CFLAGS} ${LDFLAGS} -Wl,--verbose 2>&1 | sed -n 's/^OUTPUT_FORMAT("\([^"]*\)",.*/\1/p');
    [[ -n ${output_format} ]] && output_format="OUTPUT_FORMAT ( ${output_format} )";
    for lib in "$@";
    do
        local tlib;
        if ${auto}; then
            lib="lib${lib}${suffix}";
        else
            [[ -r ${ED}/${libdir}/${lib} ]] || continue;
        fi;
        case ${CTARGET:-${CHOST}} in 
            *-darwin*)
                if ${auto}; then
                    tlib=$(scanmacho -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                else
                    tlib=$(scanmacho -qF'%S#F' "${ED}"/${libdir}/${lib});
                fi;
                [[ -z ${tlib} ]] && die "unable to read install_name from ${lib}";
                tlib=${tlib##*/};
                if ${auto}; then
                    mv "${ED}"/usr/${libdir}/${lib%${suffix}}.*${suffix#.} "${ED}"/${libdir}/ || die;
                    rm -f "${ED}"/${libdir}/${lib};
                fi;
                install_name_tool -id "${EPREFIX}"/${libdir}/${tlib} "${ED}"/${libdir}/${tlib};
                pushd "${ED}/usr/${libdir}" > /dev/null;
                ln -snf "../../${libdir}/${tlib}" "${lib}";
                popd > /dev/null
            ;;
            *-aix* | *-irix* | *-hpux* | *-interix* | *-winnt*)
                if ${auto}; then
                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                    tlib=$(readlink "${ED}"/${libdir}/${lib});
                    tlib=${tlib##*/};
                    if [[ -z ${tlib} ]]; then
                        tlib=${lib};
                    else
                        rm -f "${ED}"/${libdir}/${lib};
                    fi;
                else
                    tlib=${lib};
                fi;
                pushd "${ED}/usr/${libdir}" > /dev/null;
                ln -snf "../../${libdir}/${tlib}" "${lib}";
                popd > /dev/null
            ;;
            *)
                if ${auto}; then
                    tlib=$(scanelf -qF'%S#F' "${ED}"/usr/${libdir}/${lib});
                    [[ -z ${tlib} ]] && die "unable to read SONAME from ${lib}";
                    mv "${ED}"/usr/${libdir}/${lib}* "${ED}"/${libdir}/ || die;
                    if [[ ${tlib} != ${lib}* ]]; then
                        mv "${ED}"/usr/${libdir}/${tlib}* "${ED}"/${libdir}/ || die;
                    fi;
                    rm -f "${ED}"/${libdir}/${lib};
                else
                    tlib=${lib};
                fi;
                cat > "${ED}/usr/${libdir}/${lib}"  <<-END_LDSCRIPT
/* GNU ld script
   Since Gentoo has critical dynamic libraries in /lib, and the static versions
   in /usr/lib, we need to have a "fake" dynamic lib in /usr/lib, otherwise we
   run into linking problems.  This "fake" dynamic lib is a linker script that
   redirects the linker to the real lib.  And yes, this works in the cross-
   compiling scenario as the sysroot-ed linker will prepend the real path.

   See bug http://bugs.gentoo.org/4411 for more info.
 */
${output_format}
GROUP ( ${EPREFIX}/${libdir}/${tlib} )
END_LDSCRIPT

            ;;
        esac
        fperms a+x "/usr/${libdir}/${lib}" || die "could not change perms on ${lib}";
    done
}
get_abi_ASFLAGS () 
{ 
    get_abi_var ASFLAGS "$@"
}
get_abi_CDEFINE () 
{ 
    get_abi_var CDEFINE "$@"
}
get_abi_CFLAGS () 
{ 
    get_abi_var CFLAGS "$@"
}
get_abi_CHOST () 
{ 
    get_abi_var CHOST "$@"
}
get_abi_CTARGET () 
{ 
    get_abi_var CTARGET "$@"
}
get_abi_FAKE_TARGETS () 
{ 
    get_abi_var FAKE_TARGETS "$@"
}
get_abi_LDFLAGS () 
{ 
    get_abi_var LDFLAGS "$@"
}
get_abi_LIBDIR () 
{ 
    get_abi_var LIBDIR "$@"
}
get_abi_var () 
{ 
    local flag=$1;
    local abi;
    if [ $# -gt 1 ]; then
        abi=${2};
    else
        if [ -n "${ABI}" ]; then
            abi=${ABI};
        else
            if [ -n "${DEFAULT_ABI}" ]; then
                abi=${DEFAULT_ABI};
            else
                abi="default";
            fi;
        fi;
    fi;
    local var="${flag}_${abi}";
    echo ${!var}
}
get_all_abis () 
{ 
    local order="";
    if [[ -z ${MULTILIB_ABIS} ]]; then
        echo "default";
        return 0;
    fi;
    for x in ${MULTILIB_ABIS};
    do
        if [[ ${x} != ${DEFAULT_ABI} ]]; then
            order="${order:+${order} }${x}";
        fi;
    done;
    order="${order:+${order} }${DEFAULT_ABI}";
    echo ${order};
    return 0
}
get_all_libdirs () 
{ 
    local libdirs="lib";
    local abi;
    local dir;
    for abi in ${MULTILIB_ABIS};
    do
        [ "$(get_abi_LIBDIR ${abi})" != "lib" ] && libdirs="${libdirs} $(get_abi_LIBDIR ${abi})";
    done;
    echo "${libdirs}"
}
get_bmake () 
{ 
    if [[ ${USERLAND} == *BSD ]]; then
        echo make;
    else
        if [[ ${USERLAND} == "Darwin" ]]; then
            echo bsdmake;
        else
            echo pmake;
        fi;
    fi
}
get_install_abis () 
{ 
    local order="";
    if [[ -z ${MULTILIB_ABIS} ]]; then
        echo "default";
        return 0;
    fi;
    if [[ ${EMULTILIB_PKG} == "true" ]]; then
        for x in ${MULTILIB_ABIS};
        do
            if [[ ${x} != "${DEFAULT_ABI}" ]]; then
                hasq ${x} ${ABI_DENY} || ordera="${ordera} ${x}";
            fi;
        done;
        hasq ${DEFAULT_ABI} ${ABI_DENY} || order="${ordera} ${DEFAULT_ABI}";
        if [[ -n ${ABI_ALLOW} ]]; then
            local ordera="";
            for x in ${order};
            do
                if hasq ${x} ${ABI_ALLOW}; then
                    ordera="${ordera} ${x}";
                fi;
            done;
            order=${ordera};
        fi;
    else
        order=${DEFAULT_ABI};
    fi;
    if [[ -z ${order} ]]; then
        die "The ABI list is empty.  Are you using a proper multilib profile?  Perhaps your USE flags or MULTILIB_ABIS are too restrictive for this package.";
    fi;
    echo ${order};
    return 0
}
get_libdir () 
{ 
    local CONF_LIBDIR;
    if [ -n "${CONF_LIBDIR_OVERRIDE}" ]; then
        echo ${CONF_LIBDIR_OVERRIDE};
    else
        get_abi_LIBDIR;
    fi
}
get_libdir_override () 
{ 
    if has_multilib_profile; then
        eerror "get_libdir_override called, but it shouldn't be needed with the new multilib approach.  Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
        exit 1;
    fi;
    CONF_LIBDIR="$1";
    CONF_LIBDIR_OVERRIDE="$1";
    LIBDIR_default="$1"
}
get_libname () 
{ 
    local libname;
    local ver=$1;
    case ${CHOST} in 
        *-cygwin | mingw* | *-mingw*)
            libname="dll"
        ;;
        *-darwin*)
            libname="dylib"
        ;;
        *-aix*)
            libname="a"
        ;;
        *-mint*)
            libname="irrelevant"
        ;;
        *)
            libname="so"
        ;;
    esac;
    if [[ -z $* ]]; then
        echo ".${libname}";
    else
        for ver in "$@";
        do
            case ${CHOST} in 
                *-darwin*)
                    echo ".${ver}.${libname}"
                ;;
                *-aix*)
                    echo ".${libname}"
                ;;
                *-mint*)
                    echo ".${libname}"
                ;;
                *)
                    echo ".${libname}.${ver}"
                ;;
            esac;
        done;
    fi
}
get_ml_incdir () 
{ 
    local dir=/usr/include;
    if [[ $# -gt 0 ]]; then
        incdir=$1;
        shift;
    fi;
    if [[ -z "${MULTILIB_ABIS}" ]]; then
        echo ${incdir};
        return 0;
    fi;
    local abi=${ABI-${DEFAULT_ABI}};
    if [[ $# -gt 0 ]]; then
        abi=$1;
        shift;
    fi;
    if [[ -d "${dir}/gentoo-multilib/${abi}" ]]; then
        echo ${dir}/gentoo-multilib/${abi};
    else
        echo ${dir};
    fi
}
get_mounts () 
{ 
    local point= node= fs= opts= foo=;
    if [[ $(uname -s) == "Linux" ]]; then
        while read node point fs opts foo; do
            echo "${point} ${node} ${fs} ${opts}";
        done < /proc/mounts;
        return;
    fi;
    local IFS='	';
    LC_ALL=C mount -p | while read node point fs foo; do
        opts=${fs#* };
        fs=${fs%% *};
        echo "${point// /\040} ${node// /\040} ${fs%% *} ${opts// /\040}";
    done
}
get_multilibdir () 
{ 
    if has_multilib_profile; then
        eerror "get_multilibdir called, but it shouldn't be needed with the new multilib approach.  Please file a bug at http://bugs.gentoo.org and assign it to eradicator@gentoo.org";
        exit 1;
    fi;
    echo ${CONF_MULTILIBDIR:=lib32}
}
has_multilib_profile () 
{ 
    [ -n "${MULTILIB_ABIS}" -a "${MULTILIB_ABIS}" != "${MULTILIB_ABIS/ /}" ]
}
is-login-disabled () 
{ 
    shell=$(egetshell "$1");
    case ${shell} in 
        /bin/false | /usr/bin/false | /sbin/nologin | /usr/sbin/nologin)
            return 0
        ;;
        *)
            return 1
        ;;
    esac
}
is_final_abi () 
{ 
    has_multilib_profile || return 0;
    local ALL_ABIS=$(get_install_abis);
    local LAST_ABI=${ALL_ABIS/* /};
    [[ ${LAST_ABI} == ${ABI} ]]
}
make_desktop_entry () 
{ 
    [[ -z $1 ]] && eerror "make_desktop_entry: You must specify the executable" && return 1;
    local exec=${1};
    local name=${2:-${PN}};
    local icon=${3:-${PN}};
    local type=${4};
    local path=${5};
    if [[ -z ${type} ]]; then
        local catmaj=${CATEGORY%%-*};
        local catmin=${CATEGORY##*-};
        case ${catmaj} in 
            app)
                case ${catmin} in 
                    accessibility)
                        type=Accessibility
                    ;;
                    admin)
                        type=System
                    ;;
                    antivirus)
                        type=System
                    ;;
                    arch)
                        type=Archiving
                    ;;
                    backup)
                        type=Archiving
                    ;;
                    cdr)
                        type=DiscBurning
                    ;;
                    dicts)
                        type=Dictionary
                    ;;
                    doc)
                        type=Documentation
                    ;;
                    editors)
                        type=TextEditor
                    ;;
                    emacs)
                        type=TextEditor
                    ;;
                    emulation)
                        type=Emulator
                    ;;
                    laptop)
                        type=HardwareSettings
                    ;;
                    office)
                        type=Office
                    ;;
                    pda)
                        type=PDA
                    ;;
                    vim)
                        type=TextEditor
                    ;;
                    xemacs)
                        type=TextEditor
                    ;;
                    *)
                        type=
                    ;;
                esac
            ;;
            dev)
                type="Development"
            ;;
            games)
                case ${catmin} in 
                    action | fps)
                        type=ActionGame
                    ;;
                    arcade)
                        type=ArcadeGame
                    ;;
                    board)
                        type=BoardGame
                    ;;
                    emulation)
                        type=Emulator
                    ;;
                    kids)
                        type=KidsGame
                    ;;
                    puzzle)
                        type=LogicGame
                    ;;
                    roguelike)
                        type=RolePlaying
                    ;;
                    rpg)
                        type=RolePlaying
                    ;;
                    simulation)
                        type=Simulation
                    ;;
                    sports)
                        type=SportsGame
                    ;;
                    strategy)
                        type=StrategyGame
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="Game;${type}"
            ;;
            gnome)
                type="Gnome;GTK"
            ;;
            kde)
                type="KDE;Qt"
            ;;
            mail)
                type="Network;Email"
            ;;
            media)
                case ${catmin} in 
                    gfx)
                        type=Graphics
                    ;;
                    radio)
                        type=Tuner
                    ;;
                    sound)
                        type=Audio
                    ;;
                    tv)
                        type=TV
                    ;;
                    video)
                        type=Video
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="AudioVideo;${type}"
            ;;
            net)
                case ${catmin} in 
                    dialup)
                        type=Dialup
                    ;;
                    ftp)
                        type=FileTransfer
                    ;;
                    im)
                        type=InstantMessaging
                    ;;
                    irc)
                        type=IRCClient
                    ;;
                    mail)
                        type=Email
                    ;;
                    news)
                        type=News
                    ;;
                    nntp)
                        type=News
                    ;;
                    p2p)
                        type=FileTransfer
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="Network;${type}"
            ;;
            sci)
                case ${catmin} in 
                    astro*)
                        type=Astronomy
                    ;;
                    bio*)
                        type=Biology
                    ;;
                    calc*)
                        type=Calculator
                    ;;
                    chem*)
                        type=Chemistry
                    ;;
                    elec*)
                        type=Electronics
                    ;;
                    geo*)
                        type=Geology
                    ;;
                    math*)
                        type=Math
                    ;;
                    physics)
                        type=Physics
                    ;;
                    visual*)
                        type=DataVisualization
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="Science;${type}"
            ;;
            sys)
                type="System"
            ;;
            www)
                case ${catmin} in 
                    client)
                        type=WebBrowser
                    ;;
                    *)
                        type=
                    ;;
                esac;
                type="Network"
            ;;
            *)
                type=
            ;;
        esac;
    fi;
    if [ "${SLOT}" == "0" ]; then
        local desktop_name="${PN}";
    else
        local desktop_name="${PN}-${SLOT}";
    fi;
    local desktop="${T}/$(echo ${exec} | sed 's:[[:space:]/:]:_:g')-${desktop_name}.desktop";
    cat > "${desktop}"  <<-EOF
[Desktop Entry]
Version=1.0
Name=${name}
Type=Application
Comment=${DESCRIPTION}
Exec=${exec}
TryExec=${exec%% *}
Icon=${icon}
Categories=${type};
EOF

    [[ -n ${path} ]] && echo "Path=${path}" >> "${desktop}";
    ( insinto /usr/share/applications;
    doins "${desktop}" )
}
make_session_desktop () 
{ 
    [[ -z $1 ]] && eerror "$0: You must specify the title" && return 1;
    [[ -z $2 ]] && eerror "$0: You must specify the command" && return 1;
    local title=$1;
    local command=$2;
    local desktop=${T}/${wm:-${PN}}.desktop;
    shift 2;
    cat > "${desktop}"  <<-EOF
[Desktop Entry]
Name=${title}
Comment=This session logs you into ${title}
Exec=${command} $*
TryExec=${command}
Type=XSession
EOF

    ( insinto /usr/share/xsessions;
    doins "${desktop}" )
}
make_wrapper () 
{ 
    local wrapper=$1 bin=$2 chdir=$3 libdir=$4 path=$5;
    local tmpwrapper=$(emktemp);
    cat > "${tmpwrapper}"  <<EOF
#!/bin/sh
cd "${chdir:-.}"
if [ -n "${libdir}" ] ; then
	if [ "\${LD_LIBRARY_PATH+set}" = "set" ] ; then
		export LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:${libdir}"
	else
		export LD_LIBRARY_PATH="${libdir}"
	fi
fi
exec ${bin} "\$@"
EOF

    chmod go+rx "${tmpwrapper}";
    if [[ -n ${path} ]]; then
        ( exeinto "${path}";
        newexe "${tmpwrapper}" "${wrapper}" ) || die;
    else
        newbin "${tmpwrapper}" "${wrapper}" || die;
    fi
}
multilib_env () 
{ 
    local CTARGET=${1:-${CTARGET}};
    case ${CTARGET} in 
        x86_64*)
            export CFLAGS_x86=${CFLAGS_x86--m32};
            export CHOST_x86=${CTARGET/x86_64/i686};
            export CTARGET_x86=${CHOST_x86};
            export CDEFINE_x86="__i386__";
            export LIBDIR_x86="lib";
            export CFLAGS_amd64=${CFLAGS_amd64--m64};
            export CHOST_amd64=${CTARGET};
            export CTARGET_amd64=${CHOST_amd64};
            export CDEFINE_amd64="__x86_64__";
            export LIBDIR_amd64="lib64";
            export MULTILIB_ABIS="amd64 x86";
            export DEFAULT_ABI="amd64"
        ;;
        mips64*)
            export CFLAGS_o32=${CFLAGS_o32--mabi=32};
            export CHOST_o32=${CTARGET/mips64/mips};
            export CTARGET_o32=${CHOST_o32};
            export CDEFINE_o32="_MIPS_SIM == _ABIO32";
            export LIBDIR_o32="lib";
            export CFLAGS_n32=${CFLAGS_n32--mabi=n32};
            export CHOST_n32=${CTARGET};
            export CTARGET_n32=${CHOST_n32};
            export CDEFINE_n32="_MIPS_SIM == _ABIN32";
            export LIBDIR_n32="lib32";
            export CFLAGS_n64=${CFLAGS_n64--mabi=64};
            export CHOST_n64=${CTARGET};
            export CTARGET_n64=${CHOST_n64};
            export CDEFINE_n64="_MIPS_SIM == _ABI64";
            export LIBDIR_n64="lib64";
            export MULTILIB_ABIS="n64 n32 o32";
            export DEFAULT_ABI="n32"
        ;;
        powerpc64*)
            export CFLAGS_ppc=${CFLAGS_ppc--m32};
            export CHOST_ppc=${CTARGET/powerpc64/powerpc};
            export CTARGET_ppc=${CHOST_ppc};
            export CDEFINE_ppc="!__powerpc64__";
            export LIBDIR_ppc="lib";
            export CFLAGS_ppc64=${CFLAGS_ppc64--m64};
            export CHOST_ppc64=${CTARGET};
            export CTARGET_ppc64=${CHOST_ppc64};
            export CDEFINE_ppc64="__powerpc64__";
            export LIBDIR_ppc64="lib64";
            export MULTILIB_ABIS="ppc64 ppc";
            export DEFAULT_ABI="ppc64"
        ;;
        s390x*)
            export CFLAGS_s390=${CFLAGS_s390--m31};
            export CHOST_s390=${CTARGET/s390x/s390};
            export CTARGET_s390=${CHOST_s390};
            export CDEFINE_s390="!__s390x__";
            export LIBDIR_s390="lib";
            export CFLAGS_s390x=${CFLAGS_s390x--m64};
            export CHOST_s390x=${CTARGET};
            export CTARGET_s390x=${CHOST_s390x};
            export CDEFINE_s390x="__s390x__";
            export LIBDIR_s390x="lib64";
            export MULTILIB_ABIS="s390x s390";
            export DEFAULT_ABI="s390x"
        ;;
        sparc*)
            export CFLAGS_sparc32=${CFLAGS_sparc32};
            export CHOST_sparc32=${CTARGET/sparc64/sparc};
            export CTARGET_sparc32=${CHOST_sparc32};
            export CDEFINE_sparc32="!__arch64__";
            export LIBDIR_sparc32="lib";
            export CFLAGS_sparc64=${CFLAGS_sparc64--m64};
            export CHOST_sparc64=${CTARGET};
            export CTARGET_sparc64=${CHOST_sparc64};
            export CDEFINE_sparc64="__arch64__";
            export LIBDIR_sparc64="lib64";
            export MULTILIB_ABIS="${MULTILIB_ABIS-sparc64 sparc32}";
            export DEFAULT_ABI="${DEFAULT_ABI-sparc64}"
        ;;
        *)
            export MULTILIB_ABIS="default";
            export DEFAULT_ABI="default"
        ;;
    esac
}
multilib_toolchain_setup () 
{ 
    local v vv;
    export ABI=$1;
    if [[ ${ABI} != ${DEFAULT_ABI} ]]; then
        if [[ ${DEFAULT_ABI_SAVED} != "true" ]]; then
            for v in CHOST CBUILD AS CC CXX LD;
            do
                export __abi_saved_${v}="${!v}";
            done;
            export DEFAULT_ABI_SAVED="true";
        fi;
        export CHOST=$(get_abi_CHOST ${DEFAULT_ABI});
        export AS="$(tc-getAS) $(get_abi_ASFLAGS)";
        export CC="$(tc-getCC) $(get_abi_CFLAGS)";
        export CXX="$(tc-getCXX) $(get_abi_CFLAGS)";
        export LD="$(tc-getLD) $(get_abi_LDFLAGS)";
        export CHOST=$(get_abi_CHOST $1);
        export CBUILD=$(get_abi_CHOST $1);
    else
        if [[ ${DEFAULT_ABI_SAVED} == "true" ]]; then
            for v in CHOST CBUILD AS CC CXX LD;
            do
                vv="__abi_saved_${v}";
                export ${v}=${!vv};
            done;
        fi;
    fi
}
newicon () 
{ 
    ( insinto /usr/share/pixmaps;
    newins "$@" )
}
newmenu () 
{ 
    ( insinto /usr/share/applications;
    newins "$@" )
}
number_abis () 
{ 
    get_install_abis | wc -w
}
pkg_nofetch () 
{ 
    _eapi0_pkg_nofetch "$@"
}
pkg_preinst () 
{ 
    subversion_pkg_preinst "$@"
}
prep_ml_includes () 
{ 
    if [[ $(number_abis) -gt 1 ]]; then
        local dir;
        local dirs;
        local base;
        if [[ $# -eq 0 ]]; then
            dirs=/usr/include;
        else
            dirs="$@";
        fi;
        for dir in ${dirs};
        do
            base=${T}/gentoo-multilib/${dir}/gentoo-multilib;
            mkdir -p "${base}";
            [[ -d ${base}/${ABI} ]] && rm -rf "${base}/${ABI}";
            mv "${D}/${dir}" "${base}/${ABI}";
        done;
        if is_final_abi; then
            base=${T}/gentoo-multilib;
            pushd "${base}";
            find . | tar -c -T - -f - | tar -x --no-same-owner -f - -C "${D}";
            popd;
            set --;
            for dir in ${dirs};
            do
                set -- "$@" "${dir}";
                local abi;
                for abi in $(get_install_abis);
                do
                    set -- "$@" "$(get_abi_CDEFINE ${abi}):${dir}/gentoo-multilib/${abi}";
                done;
                create_ml_includes "$@";
            done;
        fi;
    fi
}
preserve_old_lib () 
{ 
    if [[ ${EBUILD_PHASE} != "preinst" ]]; then
        eerror "preserve_old_lib() must be called from pkg_preinst() only";
        die "Invalid preserve_old_lib() usage";
    fi;
    [[ -z $1 ]] && die "Usage: preserve_old_lib <library to preserve> [more libraries to preserve]";
    has preserve-libs ${FEATURES} && return 0;
    local lib dir;
    for lib in "$@";
    do
        [[ -e ${ROOT}/${lib} ]] || continue;
        dir=${lib%/*};
        dodir ${dir} || die "dodir ${dir} failed";
        cp "${ROOT}"/${lib} "${D}"/${lib} || die "cp ${lib} failed";
        touch "${D}"/${lib};
    done
}
preserve_old_lib_notify () 
{ 
    if [[ ${EBUILD_PHASE} != "postinst" ]]; then
        eerror "preserve_old_lib_notify() must be called from pkg_postinst() only";
        die "Invalid preserve_old_lib_notify() usage";
    fi;
    has preserve-libs ${FEATURES} && return 0;
    local lib notice=0;
    for lib in "$@";
    do
        [[ -e ${ROOT}/${lib} ]] || continue;
        if [[ ${notice} -eq 0 ]]; then
            notice=1;
            ewarn "Old versions of installed libraries were detected on your system.";
            ewarn "In order to avoid breaking packages that depend on these old libs,";
            ewarn "the libraries are not being removed.  You need to run revdep-rebuild";
            ewarn "in order to remove these old dependencies.  If you do not have this";
            ewarn "helper program, simply emerge the 'gentoolkit' package.";
            ewarn;
        fi;
        ewarn "  # revdep-rebuild --library ${lib##*/}";
    done;
    if [[ ${notice} -eq 1 ]]; then
        ewarn;
        ewarn "Once you've finished running revdep-rebuild, it should be safe to";
        ewarn "delete the old libraries.  Here is a copy & paste for the lazy:";
        for lib in "$@";
        do
            ewarn "  # rm '${lib}'";
        done;
    fi
}
seq () 
{ 
    local p=$(type -P seq);
    case $# in 
        1)
            min=1 max=$1 step=1
        ;;
        2)
            min=$1 max=$2 step=1
        ;;
        3)
            min=$1 max=$3 step=$2
        ;;
        *)
            die "seq called with wrong number of arguments"
        ;;
    esac;
    if [[ -z ${p} ]]; then
        local reps;
        if [[ ${step} != 0 ]]; then
            reps=$(( ($max-$min) / $step +1 ));
        else
            reps=0;
        fi;
        jot $reps $min $max $step;
    else
        "${p}" $min $step $max;
    fi
}
src_compile () 
{ 
    emake || die "emake failed"
}
src_configure () 
{ 
    econf $(use_enable helper c-helper) $(use_enable threads) || die "econf failed"
}
src_install () 
{ 
    emake DESTDIR="${D}" install || die "emake install failed"
}
src_prepare () 
{ 
    eautoconf || die "eautoconf failed"
}
src_test () 
{ 
    _eapi0_src_test "$@"
}
src_unpack () 
{ 
    subversion_src_unpack "$@"
}
strip-linguas () 
{ 
    local ls newls nols;
    if [[ $1 == "-i" ]] || [[ $1 == "-u" ]]; then
        local op=$1;
        shift;
        ls=$(find "$1" -name '*.po' -exec basename {} .po ';');
        shift;
        local d f;
        for d in "$@";
        do
            if [[ ${op} == "-u" ]]; then
                newls=${ls};
            else
                newls="";
            fi;
            for f in $(find "$d" -name '*.po' -exec basename {} .po ';');
            do
                if [[ ${op} == "-i" ]]; then
                    hasq ${f} ${ls} && newls="${newls} ${f}";
                else
                    hasq ${f} ${ls} || newls="${newls} ${f}";
                fi;
            done;
            ls=${newls};
        done;
    else
        ls="$@";
    fi;
    nols="";
    newls="";
    for f in ${LINGUAS};
    do
        if hasq ${f} ${ls}; then
            newls="${newls} ${f}";
        else
            nols="${nols} ${f}";
        fi;
    done;
    [[ -n ${nols} ]] && ewarn "Sorry, but ${PN} does not support the LINGUAS:" ${nols};
    export LINGUAS=${newls:1}
}
subversion__get_peg_revision () 
{ 
    local repo_uri="${1}";
    debug-print "${FUNCNAME}: repo_uri = ${repo_uri}";
    if [[ ${repo_uri} != *@* ]]; then
        debug-print "${FUNCNAME}: repo_uri does not have a peg revision.";
    fi;
    local peg_rev=;
    [[ ${repo_uri} = *@* ]] && peg_rev="${repo_uri##*@}";
    debug-print "${FUNCNAME}: peg_rev = ${peg_rev}";
    echo "${peg_rev}"
}
subversion__get_repository_uri () 
{ 
    local repo_uri="${1}";
    debug-print "${FUNCNAME}: repo_uri = ${repo_uri}";
    if [[ -z ${repo_uri} ]]; then
        die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty.";
    fi;
    if [[ -z ${repo_uri##*/} ]]; then
        repo_uri="${repo_uri%/}";
    fi;
    repo_uri="${repo_uri%@*}";
    echo "${repo_uri}"
}
subversion__get_wc_path () 
{ 
    local repo_uri="$(subversion__get_repository_uri "${1}")";
    debug-print "${FUNCNAME}: repo_uri = ${repo_uri}";
    echo "${ESVN_STORE_DIR}/${ESVN_PROJECT}/${repo_uri##*/}"
}
subversion__svn_info () 
{ 
    local target="${1}";
    local key="${2}";
    env LC_ALL=C svn info "${target}" | grep -i "^${key}" | cut -d" " -f2-
}
subversion_bootstrap () 
{ 
    if has "export" ${ESVN_RESTRICT}; then
        return;
    fi;
    cd "${S}";
    if [[ -n ${ESVN_PATCHES} ]]; then
        einfo "apply patches -->";
        local patch fpatch;
        for patch in ${ESVN_PATCHES};
        do
            if [[ -f ${patch} ]]; then
                epatch "${patch}";
            else
                for fpatch in ${FILESDIR}/${patch};
                do
                    if [[ -f ${fpatch} ]]; then
                        epatch "${fpatch}";
                    else
                        die "${ESVN}: ${patch} not found";
                    fi;
                done;
            fi;
        done;
        echo;
    fi;
    if [[ -n ${ESVN_BOOTSTRAP} ]]; then
        einfo "begin bootstrap -->";
        if [[ -f ${ESVN_BOOTSTRAP} && -x ${ESVN_BOOTSTRAP} ]]; then
            einfo "   bootstrap with a file: ${ESVN_BOOTSTRAP}";
            eval "./${ESVN_BOOTSTRAP}" || die "${ESVN}: can't execute ESVN_BOOTSTRAP.";
        else
            einfo "   bootstrap with command: ${ESVN_BOOTSTRAP}";
            eval "${ESVN_BOOTSTRAP}" || die "${ESVN}: can't eval ESVN_BOOTSTRAP.";
        fi;
    fi
}
subversion_fetch () 
{ 
    local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")";
    local revision="$(subversion__get_peg_revision "${1:-${ESVN_REPO_URI}}")";
    local S_dest="${2}";
    if [[ -z ${repo_uri} ]]; then
        die "${ESVN}: ESVN_REPO_URI (or specified URI) is empty.";
    fi;
    [[ -n "${ESVN_REVISION}" ]] && revision="${ESVN_REVISION}";
    local protocol="${repo_uri%%:*}";
    case "${protocol}" in 
        http | https)
            if ! built_with_use -o dev-util/subversion webdav-neon webdav-serf; then
                echo;
                eerror "In order to emerge this package, you need to";
                eerror "reinstall Subversion with support for WebDAV.";
                eerror "Subversion requires either Neon or Serf to support WebDAV.";
                echo;
                die "${ESVN}: reinstall Subversion with support for WebDAV.";
            fi
        ;;
        svn | svn+ssh)

        ;;
        *)
            die "${ESVN}: fetch from '${protocol}' is not yet implemented."
        ;;
    esac;
    addread "/etc/subversion";
    addwrite "${ESVN_STORE_DIR}";
    if [[ ! -d ${ESVN_STORE_DIR} ]]; then
        debug-print "${FUNCNAME}: initial checkout. creating subversion directory";
        mkdir -p "${ESVN_STORE_DIR}" || die "${ESVN}: can't mkdir ${ESVN_STORE_DIR}.";
    fi;
    cd "${ESVN_STORE_DIR}" || die "${ESVN}: can't chdir to ${ESVN_STORE_DIR}";
    local wc_path="$(subversion__get_wc_path "${repo_uri}")";
    local options="${ESVN_OPTIONS} --config-dir ${ESVN_STORE_DIR}/.subversion";
    [[ -n "${revision}" ]] && options="${options} -r ${revision}";
    if [[ "${ESVN_OPTIONS}" = *-r* ]]; then
        ewarn "\${ESVN_OPTIONS} contains -r, this usage is unsupported. Please";
        ewarn "see \${ESVN_REPO_URI}";
    fi;
    if has_version ">=dev-util/subversion-1.6.0"; then
        options="${options} --config-option=config:auth:password-stores=";
    fi;
    debug-print "${FUNCNAME}: wc_path = \"${wc_path}\"";
    debug-print "${FUNCNAME}: ESVN_OPTIONS = \"${ESVN_OPTIONS}\"";
    debug-print "${FUNCNAME}: options = \"${options}\"";
    if [[ ! -d ${wc_path}/.svn ]]; then
        if [[ -n ${ESVN_OFFLINE} ]]; then
            ewarn "ESVN_OFFLINE cannot be used when there is no existing checkout.";
        fi;
        einfo "subversion check out start -->";
        einfo "     repository: ${repo_uri}${revision:+@}${revision}";
        debug-print "${FUNCNAME}: ${ESVN_FETCH_CMD} ${options} ${repo_uri}";
        mkdir -p "${ESVN_PROJECT}" || die "${ESVN}: can't mkdir ${ESVN_PROJECT}.";
        cd "${ESVN_PROJECT}" || die "${ESVN}: can't chdir to ${ESVN_PROJECT}";
        if [[ -n "${ESVN_USER}" ]]; then
            ${ESVN_FETCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}.";
        else
            ${ESVN_FETCH_CMD} ${options} "${repo_uri}" || die "${ESVN}: can't fetch to ${wc_path} from ${repo_uri}.";
        fi;
    else
        if [[ -n ${ESVN_OFFLINE} ]]; then
            svn upgrade "${wc_path}" >&/dev/null;
            svn cleanup "${wc_path}" >&/dev/null;
            subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy.";
            if [[ -n ${ESVN_REVISION} && ${ESVN_REVISION} != ${ESVN_WC_REVISION} ]]; then
                die "${ESVN}: You requested off-line updating and revision ${ESVN_REVISION} but only revision ${ESVN_WC_REVISION} is available locally.";
            fi;
            einfo "Fetching disabled: Using existing repository copy at revision ${ESVN_WC_REVISION}.";
        else
            svn upgrade "${wc_path}" >&/dev/null;
            svn cleanup "${wc_path}" >&/dev/null;
            subversion_wc_info "${repo_uri}" || die "${ESVN}: unknown problem occurred while accessing working copy.";
            local esvn_up_freq=;
            if [[ -n ${ESVN_UP_FREQ} ]]; then
                if [[ -n ${ESVN_UP_FREQ//[[:digit:]]} ]]; then
                    die "${ESVN}: ESVN_UP_FREQ must be an integer value corresponding to the minimum number of hours between svn up.";
                else
                    if [[ -z $(find "${wc_path}/.svn/entries" -mmin "+$((ESVN_UP_FREQ*60))") ]]; then
                        einfo "Fetching disabled since ${ESVN_UP_FREQ} hours has not passed since last update.";
                        einfo "Using existing repository copy at revision ${ESVN_WC_REVISION}.";
                        esvn_up_freq=no_update;
                    fi;
                fi;
            fi;
            if [[ -z ${esvn_up_freq} ]]; then
                if [[ ${ESVN_WC_URL} != $(subversion__get_repository_uri "${repo_uri}") ]]; then
                    einfo "subversion switch start -->";
                    einfo "     old repository: ${ESVN_WC_URL}@${ESVN_WC_REVISION}";
                    einfo "     new repository: ${repo_uri}${revision:+@}${revision}";
                    debug-print "${FUNCNAME}: ${ESVN_SWITCH_CMD} ${options} ${repo_uri}";
                    cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}";
                    if [[ -n "${ESVN_USER}" ]]; then
                        ${ESVN_SWITCH_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}.";
                    else
                        ${ESVN_SWITCH_CMD} ${options} ${repo_uri} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}.";
                    fi;
                else
                    einfo "subversion update start -->";
                    einfo "     repository: ${repo_uri}${revision:+@}${revision}";
                    debug-print "${FUNCNAME}: ${ESVN_UPDATE_CMD} ${options}";
                    cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}";
                    if [[ -n "${ESVN_USER}" ]]; then
                        ${ESVN_UPDATE_CMD} ${options} --username "${ESVN_USER}" --password "${ESVN_PASSWORD}" || die "${ESVN}: can't update ${wc_path} from ${repo_uri}.";
                    else
                        ${ESVN_UPDATE_CMD} ${options} || die "${ESVN}: can't update ${wc_path} from ${repo_uri}.";
                    fi;
                fi;
            fi;
        fi;
    fi;
    einfo "   working copy: ${wc_path}";
    if ! has "export" ${ESVN_RESTRICT}; then
        cd "${wc_path}" || die "${ESVN}: can't chdir to ${wc_path}";
        local S="${S}/${S_dest}";
        mkdir -p "${S}";
        rsync -rlpgo --exclude=".svn/" . "${S}" || die "${ESVN}: can't export to ${S}.";
    fi;
    echo
}
subversion_pkg_preinst () 
{ 
    local pkgdate=$(date "+%Y%m%d %H:%M:%S");
    subversion_wc_info "${1:-${ESVN_REPO_URI}}";
    if [[ -n ${ESCM_LOGDIR} ]]; then
        local dir="${ROOT}/${ESCM_LOGDIR}/${CATEGORY}";
        if [[ ! -d ${dir} ]]; then
            mkdir -p "${dir}" || eerror "Failed to create '${dir}' for logging svn revision to '${PORTDIR_SCM}'";
        fi;
        local logmessage="svn: ${pkgdate} - ${PF}:${SLOT} was merged at revision ${ESVN_WC_REVISION}";
        if [[ -d ${dir} ]]; then
            echo "${logmessage}" >> "${dir}/${PN}.log";
        else
            eerror "Could not log the message '${logmessage}' to '${dir}/${PN}.log'";
        fi;
    fi
}
subversion_src_prepare () 
{ 
    subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap."
}
subversion_src_unpack () 
{ 
    subversion_fetch || die "${ESVN}: unknown problem occurred in subversion_fetch.";
    if has "${EAPI:-0}" 0 1; then
        subversion_bootstrap || die "${ESVN}: unknown problem occurred in subversion_bootstrap.";
    fi
}
subversion_wc_info () 
{ 
    local repo_uri="$(subversion__get_repository_uri "${1:-${ESVN_REPO_URI}}")";
    local wc_path="$(subversion__get_wc_path "${repo_uri}")";
    debug-print "${FUNCNAME}: repo_uri = ${repo_uri}";
    debug-print "${FUNCNAME}: wc_path = ${wc_path}";
    if [[ ! -d ${wc_path} ]]; then
        return 1;
    fi;
    export ESVN_WC_URL="$(subversion__svn_info "${wc_path}" "URL")";
    export ESVN_WC_ROOT="$(subversion__svn_info "${wc_path}" "Repository Root")";
    export ESVN_WC_UUID="$(subversion__svn_info "${wc_path}" "Repository UUID")";
    export ESVN_WC_REVISION="$(subversion__svn_info "${wc_path}" "Revision")";
    export ESVN_WC_PATH="${wc_path}"
}
tc-arch () 
{ 
    tc-ninja_magic_to_arch portage "$@"
}
tc-arch-kernel () 
{ 
    tc-ninja_magic_to_arch kern "$@"
}
tc-endian () 
{ 
    local host=$1;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    host=${host%%-*};
    case ${host} in 
        alpha*)
            echo big
        ;;
        arm*b*)
            echo big
        ;;
        arm*)
            echo little
        ;;
        cris*)
            echo little
        ;;
        hppa*)
            echo big
        ;;
        i?86*)
            echo little
        ;;
        ia64*)
            echo little
        ;;
        m68*)
            echo big
        ;;
        mips*l*)
            echo little
        ;;
        mips*)
            echo big
        ;;
        powerpc*)
            echo big
        ;;
        s390*)
            echo big
        ;;
        sh*b*)
            echo big
        ;;
        sh*)
            echo little
        ;;
        sparc*)
            echo big
        ;;
        x86_64*)
            echo little
        ;;
        *)
            echo wtf
        ;;
    esac
}
tc-export () 
{ 
    local var;
    for var in "$@";
    do
        [[ $(type -t tc-get${var}) != "function" ]] && die "tc-export: invalid export variable '${var}'";
        eval tc-get${var} > /dev/null;
    done
}
tc-getAR () 
{ 
    tc-getPROG AR ar "$@"
}
tc-getAS () 
{ 
    tc-getPROG AS as "$@"
}
tc-getBUILD_CC () 
{ 
    local v;
    for v in CC_FOR_BUILD BUILD_CC HOSTCC;
    do
        if [[ -n ${!v} ]]; then
            export BUILD_CC=${!v};
            echo "${!v}";
            return 0;
        fi;
    done;
    local search=;
    if [[ -n ${CBUILD} ]]; then
        search=$(type -p ${CBUILD}-gcc);
        search=${search##*/};
    fi;
    search=${search:-gcc};
    export BUILD_CC=${search};
    echo "${search}"
}
tc-getCC () 
{ 
    tc-getPROG CC gcc "$@"
}
tc-getCPP () 
{ 
    tc-getPROG CPP cpp "$@"
}
tc-getCXX () 
{ 
    tc-getPROG CXX g++ "$@"
}
tc-getF77 () 
{ 
    tc-getPROG F77 f77 "$@"
}
tc-getFC () 
{ 
    tc-getPROG FC gfortran "$@"
}
tc-getGCJ () 
{ 
    tc-getPROG GCJ gcj "$@"
}
tc-getLD () 
{ 
    tc-getPROG LD ld "$@"
}
tc-getNM () 
{ 
    tc-getPROG NM nm "$@"
}
tc-getOBJCOPY () 
{ 
    tc-getPROG OBJCOPY objcopy "$@"
}
tc-getPROG () 
{ 
    local var=$1;
    local prog=$2;
    if [[ -n ${!var} ]]; then
        echo "${!var}";
        return 0;
    fi;
    local search=;
    [[ -n $3 ]] && search=$(type -p "$3-${prog}");
    [[ -z ${search} && -n ${CHOST} ]] && search=$(type -p "${CHOST}-${prog}");
    [[ -n ${search} ]] && prog=${search##*/};
    export ${var}=${prog};
    echo "${!var}"
}
tc-getRANLIB () 
{ 
    tc-getPROG RANLIB ranlib "$@"
}
tc-getSTRIP () 
{ 
    tc-getPROG STRIP strip "$@"
}
tc-is-cross-compiler () 
{ 
    return $([[ ${CBUILD:-${CHOST}} != ${CHOST} ]])
}
tc-is-softfloat () 
{ 
    case ${CTARGET} in 
        bfin* | h8300*)
            echo "only"
        ;;
        *)
            [[ ${CTARGET//_/-} == *-softfloat-* ]] && echo "yes" || echo "no"
        ;;
    esac
}
tc-is-static-only () 
{ 
    local host=${CTARGET:-${CHOST}};
    return $([[ ${host} == *-mint* ]])
}
tc-ninja_magic_to_arch () 
{ 
    function ninj () 
    { 
        [[ ${type} == "kern" ]] && echo $1 || echo $2
    };
    local type=$1;
    local host=$2;
    [[ -z ${host} ]] && host=${CTARGET:-${CHOST}};
    case ${host} in 
        alpha*)
            echo alpha
        ;;
        arm*)
            echo arm
        ;;
        avr*)
            ninj avr32 avr
        ;;
        bfin*)
            ninj blackfin bfin
        ;;
        cris*)
            echo cris
        ;;
        hppa*)
            ninj parisc hppa
        ;;
        i?86*)
            if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -lt $(KV_to_int 2.6.24) || ${host} == *freebsd* ]]; then
                echo i386;
            else
                echo x86;
            fi
        ;;
        ia64*)
            echo ia64
        ;;
        m68*)
            echo m68k
        ;;
        mips*)
            echo mips
        ;;
        nios2*)
            echo nios2
        ;;
        nios*)
            echo nios
        ;;
        powerpc*)
            if [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.16) ]] && [[ ${type} == "kern" ]]; then
                echo powerpc;
            else
                if [[ $(KV_to_int ${KV}) -eq $(KV_to_int 2.6.15) ]] && [[ ${type} == "kern" ]]; then
                    if [[ ${host} == powerpc64* ]] || [[ ${PROFILE_ARCH} == "ppc64" ]]; then
                        echo powerpc;
                    else
                        echo ppc;
                    fi;
                else
                    if [[ ${host} == powerpc64* ]]; then
                        echo ppc64;
                    else
                        if [[ ${PROFILE_ARCH} == "ppc64" ]]; then
                            ninj ppc64 ppc;
                        else
                            echo ppc;
                        fi;
                    fi;
                fi;
            fi
        ;;
        s390*)
            echo s390
        ;;
        sh64*)
            ninj sh64 sh
        ;;
        sh*)
            echo sh
        ;;
        sparc64*)
            ninj sparc64 sparc
        ;;
        sparc*)
            [[ ${PROFILE_ARCH} == "sparc64" ]] && ninj sparc64 sparc || echo sparc
        ;;
        vax*)
            echo vax
        ;;
        x86_64*)
            if [[ ${type} == "kern" ]] && [[ $(KV_to_int ${KV}) -ge $(KV_to_int 2.6.24) ]]; then
                echo x86;
            else
                ninj x86_64 amd64;
            fi
        ;;
        *)
            echo unknown
        ;;
    esac
}
treecopy () 
{ 
    dest=${!#};
    files_count=$#;
    while (( $# > 1 )); do
        dirstruct=$(dirname "$1");
        mkdir -p "${dest}/${dirstruct}";
        cp -pPR "$1" "${dest}/${dirstruct}";
        shift;
    done
}
uclibctoolize () 
{ 
    ewarn "uclibctoolize() is deprecated, please just use elibtoolize()!";
    elibtoolize
}
unpack_makeself () 
{ 
    local src_input=${1:-${A}};
    local src=$(find_unpackable_file "${src_input}");
    local skip=$2;
    local exe=$3;
    [[ -z ${src} ]] && die "Could not locate source for '${src_input}'";
    local shrtsrc=$(basename "${src}");
    echo ">>> Unpacking ${shrtsrc} to ${PWD}";
    if [[ -z ${skip} ]]; then
        local ver=$(grep -a '#.*Makeself' "${src}" | awk '{print $NF}');
        local skip=0;
        exe=tail;
        case ${ver} in 
            1.5.* | 1.6.0-nv)
                skip=$(grep -a ^skip= "${src}" | cut -d= -f2)
            ;;
            2.0 | 2.0.1)
                skip=$(grep -a ^'	'tail "${src}" | awk '{print $2}' | cut -b2-)
            ;;
            2.1.1)
                skip=$(grep -a ^offset= "${src}" | awk '{print $2}' | cut -b2-);
                let skip="skip + 1"
            ;;
            2.1.2)
                skip=$(grep -a ^offset= "${src}" | awk '{print $3}' | head -n 1);
                let skip="skip + 1"
            ;;
            2.1.3)
                skip=`grep -a ^offset= "${src}" | awk '{print $3}'`;
                let skip="skip + 1"
            ;;
            2.1.4 | 2.1.5)
                skip=$(grep -a offset=.*head.*wc "${src}" | awk '{print $3}' | head -n 1);
                skip=$(head -n ${skip} "${src}" | wc -c);
                exe="dd"
            ;;
            *)
                eerror "I'm sorry, but I was unable to support the Makeself file.";
                eerror "The version I detected was '${ver}'.";
                eerror "Please file a bug about the file ${shrtsrc} at";
                eerror "http://bugs.gentoo.org/ so that support can be added.";
                die "makeself version '${ver}' not supported"
            ;;
        esac;
        debug-print "Detected Makeself version ${ver} ... using ${skip} as offset";
    fi;
    case ${exe} in 
        tail)
            exe="tail -n +${skip} '${src}'"
        ;;
        dd)
            exe="dd ibs=${skip} skip=1 obs=1024 conv=sync if='${src}'"
        ;;
        *)
            die "makeself cant handle exe '${exe}'"
        ;;
    esac;
    local tmpfile=$(emktemp);
    eval ${exe} 2> /dev/null | head -c 512 > "${tmpfile}";
    local filetype=$(file -b "${tmpfile}");
    case ${filetype} in 
        *tar\ archive*)
            eval ${exe} | tar --no-same-owner -xf -
        ;;
        bzip2*)
            eval ${exe} | bzip2 -dc | tar --no-same-owner -xf -
        ;;
        gzip*)
            eval ${exe} | tar --no-same-owner -xzf -
        ;;
        compress*)
            eval ${exe} | gunzip | tar --no-same-owner -xf -
        ;;
        *)
            eerror "Unknown filetype \"${filetype}\" ?";
            false
        ;;
    esac;
    _pipestatus="${PIPESTATUS[*]}";
    [[ "${_pipestatus// /}" -eq 0 ]] || die "failure unpacking (${filetype}) makeself ${shrtsrc} ('${ver}' +${skip})"
}
unpack_pdv () 
{ 
    local src=$(find_unpackable_file "$1");
    local sizeoff_t=$2;
    [[ -z ${src} ]] && die "Could not locate source for '$1'";
    [[ -z ${sizeoff_t} ]] && die "No idea what off_t size was used for this pdv :(";
    local shrtsrc=$(basename "${src}");
    echo ">>> Unpacking ${shrtsrc} to ${PWD}";
    local metaskip=$(tail -c ${sizeoff_t} "${src}" | hexdump -e \"%i\");
    local tailskip=$(tail -c $((${sizeoff_t}*2)) "${src}" | head -c ${sizeoff_t} | hexdump -e \"%i\");
    local metafile=$(emktemp);
    tail -c +$((${metaskip}+1)) "${src}" > "${metafile}";
    local datafile=$(tail -c +$((${metaskip}+1)) "${src}" | strings | head -n 1);
    datafile=$(basename "${datafile}");
    local tmpfile=$(emktemp);
    tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c 512 > ${tmpfile};
    local iscompressed=$(file -b "${tmpfile}");
    if [[ ${iscompressed:0:8} == "compress" ]]; then
        iscompressed=1;
        mv ${tmpfile}{,.Z};
        gunzip ${tmpfile};
    else
        iscompressed=0;
    fi;
    local istar=$(file -b "${tmpfile}");
    if [[ ${istar:0:9} == "POSIX tar" ]]; then
        istar=1;
    else
        istar=0;
    fi;
    if [ ${iscompressed} -eq 1 ]; then
        if [ ${istar} -eq 1 ]; then
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar -xzf -;
        else
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | gzip -dc > ${datafile};
        fi;
    else
        if [ ${istar} -eq 1 ]; then
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) | tar --no-same-owner -xf -;
        else
            tail -c +$((${tailskip}+1)) ${src} 2> /dev/null | head -c $((${metaskip}-${tailskip})) > ${datafile};
        fi;
    fi;
    true
}
validate_desktop_entries () 
{ 
    if [[ -x /usr/bin/desktop-file-validate ]]; then
        einfo "Checking desktop entry validity";
        local directories="";
        for d in /usr/share/applications $@;
        do
            [[ -d ${D}${d} ]] && directories="${directories} ${D}${d}";
        done;
        if [[ -n ${directories} ]]; then
            for FILE in $(find ${directories} -name "*\.desktop" 							-not -path '*.hidden*' | sort -u 2>/dev/null);
            do
                local temp=$(desktop-file-validate ${FILE} | grep -v "warning:" | 								sed -e "s|error: ||" -e "s|${FILE}:|--|g" );
                [[ -n $temp ]] && elog ${temp/--/${FILE/${D}/}:};
            done;
        fi;
        echo "";
    else
        einfo "Passing desktop entry validity check. Install dev-util/desktop-file-utils, if you want to help to improve Gentoo.";
    fi
}
declare -x ALSA_CARDS=""
declare -x ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol"
declare -x ANT_HOME="/usr/share/ant"
declare -x APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias"
declare -x ARCH="x86"
declare -x BROWSER="konqueror"
declare -x CAMERAS="directory spca50x sx330z template"
declare -x CBUILD="i686-pc-linux-gnu"
declare -x CDEFINE_default="__unix__"
declare -x CFLAGS="-march=native -mtune=native -O3 -pipe -m3dnow"
declare -x CFLAGS_default=""
declare -x CHOST="i686-pc-linux-gnu"
declare -x CHOST_default="i686-pc-linux-gnu"
declare -x COLON_SEPARATED="XDG_DATA_DIRS XDG_CONFIG_DIRS"
declare -x COLORFGBG="15;default;0"
declare -x CROSSCOMPILE_OPTS=""
declare -x CTARGET_default="i686-pc-linux-gnu"
declare -x CVS_RSH="ssh"
declare -x CXXFLAGS="-march=native -mtune=native -O3 -pipe -m3dnow"
declare -x DBUS_SESSION_BUS_ADDRESS="unix:abstract=/tmp/dbus-bFQGCi6o8d,guid=19b10766073b25b24e1a2da84a7bd640"
declare -x DEFAULT_ABI="default"
declare -x DEFINED_PHASES=" compile configure install preinst prepare unpack"
declare -x DESKTOP_SESSION="KDE-4"
declare -x DESKTOP_STARTUP_ID=""
declare -x DESTTREE="/usr"
declare -x DIROPTIONS="-m0755"
declare -x DM_CONTROL="/var/run/xdmctl"
declare -x EAPI="2"
declare -x ELIBC="glibc"
declare -x ESVN_WC_PATH="/mnt/src/distfiles/gentoo/distfiles/svn-src/tclgpg/trunk"
declare -x ESVN_WC_REVISION="56"
declare -x ESVN_WC_ROOT="Root: http://tclgpg.googlecode.com/svn"
declare -x ESVN_WC_URL="http://tclgpg.googlecode.com/svn/trunk"
declare -x ESVN_WC_UUID="UUID: fee4467d-d455-0410-a368-b174c0478086"
declare -x EXEOPTIONS="-m0755"
declare -x FEATURES="assume-digests candy ccache distlocks fixpackages metadata-transfer parallel-fetch preserve-libs protect-owned sandbox sfperms strict unmerge-logs unmerge-orphans userfetch userpriv usersandbox"
declare -x FFLAGS="-march=native -mtune=native -O3 -pipe -m3dnow"
declare -x GCC_SPECS=""
declare -x GDK_USE_XFT="1"
declare -x GPG_TTY="/dev/pts/12"
declare -x GRASS_LD_LIBRARY_PATH="/usr/grass62/lib"
declare -x GS_LIB="/home/user/.fonts"
declare -x GTK2_RC_FILES="/home/user/.gtkrc-2.0-kde"
declare -x HELPDIR="/usr/local/lib/zsh/help"
declare -x HISTCONTROL="ignoreboth:erasedups"
declare -x HISTFILESIZE="200000"
declare -x HISTSIZE="200000"
declare -x HISTTIMEFORMAT="%F_%T"
declare -x INHERITED="toolchain-funcs portability multilib subversion libtool autotools eutils"
declare -x INPUT_DEVICES="keyboard mouse ps2mouse"
declare -x INSDESTTREE=""
declare -x INSOPTIONS="-m0644"
declare -x JAVAC="/etc/java-config-2/current-system-vm/bin/javac"
declare -x JAVACC_HOME="/usr/share/javacc/"
declare -x JAVA_HOME="/etc/java-config-2/current-system-vm"
declare -x JDK_HOME="/etc/java-config-2/current-system-vm"
declare -x KDE_FULL_SESSION="true"
declare -x KDE_IS_PRELINKED="1"
declare -x KDE_SESSION_UID="1000"
declare -x KDE_SESSION_VERSION="4"
declare -x KERNEL="linux"
declare -x KERNEL_ABI="default"
declare -x KEYWORDS="~x86 ~amd64"
declare -x KV="2.6.29-tuxonice-r3"
declare -x LADSPA_PATH="/usr/lib/ladspa"
declare -x LANG="ru_RU.UTF-8"
declare -x LANGUAGE=""
declare -x LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text"
declare -x LC_ALL=""
declare -x LC_NUMERIC="POSIX"
declare -x LDFLAGS="-Wl,-O1,--hash-style=gnu,--sort-common,--as-needed"
declare -x LDFLAGS_default=""
declare -x LDPATH="/usr/local/lib:/usr/lib/opengl/nvidia/lib:/usr/i686-pc-linux-gnu/lib:/usr/lib/gcc/i686-pc-linux-gnu/4.3.2:/usr/lib/nspr:/usr/lib/nss:/usr/lib/qca2:/usr/lib/qt4:/usr/kde/3.5/lib:/usr/qt/3/lib:/usr/lib/postgresql-8.3/lib:/usr/lib/postgresql-8.1/lib:/opt/firefox:/usr/games/lib:/usr/grass62/lib"
declare -x LGRINDEF="/usr/share/texmf/tex/latex/lgrind/lgrindef"
declare -x LIBDIR_default="lib"
declare -x LIBOPTIONS="-m0644"
declare -x LICENSE="BSD-2"
declare -x LINGUAS="ru"
declare -x LIRC_DEVICES="pctv"
declare -x MAIL="/var/spool/mail/root"
declare -x MAKEOPTS="-j2"
declare -x MOZLINGUA="ru"
declare -x MOZ_DISABLE_PANGO="1"
declare -x MPD_HOST="127.0.0.1"
declare -x MULTILIB_ABIS="default"
declare -x NETBEANS="apisupport cnd groovy gsf harness ide identity j2ee java mobility nb php profiler soa visualweb webcommon websvccommon xml"
declare -x OPENGL_PROFILE="xorg-x11"
declare -x PKG_CONFIG_PATH="/usr/qt/3/lib/pkgconfig"
declare -x PORTAGE_COMPRESS_EXCLUDE_SUFFIXES="css gif htm[l]? jp[e]?g js pdf png"
declare -x PORTAGE_ECLASS_WARNING_ENABLE="0"
declare -x PORTAGE_NICENESS="3"
declare -x PRELINK_PATH_MASK="/usr/lib/klibc"
declare -x PROFILE_ONLY_VARIABLES="ARCH ELIBC KERNEL USERLAND"
declare -x PROPERTIES=""
declare -x PROVIDE=""
declare -x QMAKESPEC="linux-g++"
declare -x QTDIR="/usr/qt/3"
declare -x QT_PLUGIN_PATH="/home/user/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/"
declare -x RDEPEND="app-crypt/gnupg
	dev-lang/tcl
	!helper? ( dev-tcltk/tclx )  "
declare -x RECOLL_EXTRA_DBS="/var/lib/recoll/storage/xapiandb:/var/lib/recoll/documentation/xapiandb:/var/lib/recoll/hda3/xapiandb:/var/lib/recoll/rimma/xapiandb"
declare -x RESTRICT=""
declare -x RUBYOPT="-rauto_gem"
declare -x S="/var/tmp/portage/dev-tcltk/tclgpg-9999/work/tclgpg-9999"
declare -x SANDBOX_DEBUG="0"
declare -x SANDBOX_DENY="/etc/ld.so.preload"
declare -x SANDBOX_PID="2245"
declare -x SANDBOX_PREDICT="/var/tmp/portage/dev-tcltk/tclgpg-9999/homedir:/dev/crypto"
declare -x SANDBOX_READ="/:/etc/subversion:/var/tmp:/var/tmp/ccache:/var/tmp/ccache"
declare -x SANDBOX_VERBOSE="1"
declare -x SANDBOX_WRITE=":/dev/console:/dev/fd:/dev/full:/dev/null:/dev/pts/:/dev/pty:/dev/shm:/dev/tts:/dev/tty:/dev/vc/:/dev/zero:/mnt/src/distfiles/gentoo/distfiles/svn-src:/proc/self/fd:/tmp/:/usr/lib32/cf:/usr/lib32/conftest:/usr/lib64/cf:/usr/lib64/conftest:/usr/lib/cf:/usr/lib/conftest:/usr/tmp/cf:/usr/tmp/conftest:/var/tmp:/var/tmp/:/var/tmp/ccache:/var/tmp/portage/dev-tcltk/tclgpg-9999/homedir/.bash_history:/var/tmp/ccache"
declare -x SANE_BACKENDS="epson snapscan"
declare -x SANE_CONFIG_DIR="/etc/sane.d"
declare -x SAVEHIST="\$HISTSIZE"
declare -x SESSION_MANAGER="local/localhost:@/tmp/.ICE-unix/12434,unix/localhost:/tmp/.ICE-unix/12434"
declare -x SGML_CATALOG_FILES="/etc/sgml/sgml-docbook.cat:/etc/sgml/openjade-1.3.2.cat:/etc/sgml/linuxdoc.cat:/etc/sgml/xml-docbook-4.2.cat:/etc/sgml/xml-docbook-4.4.cat:/etc/sgml/xml-docbook-4.5.cat:/etc/sgml/sgml-ent.cat:/etc/sgml/xml-simple-docbook-1.0.cat:/etc/sgml/xml-simple-docbook-4.1.2.4.cat:/etc/sgml/xml-docbook-4.1.2.cat:/etc/sgml/sgml-docbook-3.0.cat:/etc/sgml/sgml-docbook-3.1.cat:/etc/sgml/sgml-docbook-4.0.cat:/etc/sgml/sgml-docbook-4.1.cat:/etc/sgml/sgml-docbook-4.2.cat:/etc/sgml/sgml-docbook-4.4.cat:/etc/sgml/sgml-lite.cat:/etc/sgml/dsssl-docbook-stylesheets.cat"
declare -x SLOT="0"
declare -x SPROMPT="Ошибка! Вы хотели ввести %r вместо %R? ([Y]es/[N]o/[E]dit/[A]bort) "
declare -x STRIGI_PLUGIN_PATH="/usr/lib/strigi:"
declare -x SUDO_COMMAND="/bin/zsh"
declare -x SUDO_GID="1000"
declare -x SUDO_UID="1000"
declare -x SUDO_USER="user"
declare -x TEXINPUTS="/usr/lib/ocaml/ocamldoc:"
declare -x USB_DEVFS_PATH="/dev/bus/usb"
declare -x USE="elibc_glibc kernel_linux threads userland_GNU x86"
declare -x USERDOCS="/home/user/MyDocuments"
declare -x USERLAND="GNU"
declare -x USERNAME="root"
declare -x USERPICTURES="/home/user/MyDocuments/Pictures"
declare -x USERSCANNEDPICTURES="/home/user/MyDocuments/Pictures/scanned"
declare -x VIDEO_CARDS=""
declare -x WANT_AUTOCONF="2.5"
declare -x WANT_AUTOMAKE="1.10"
declare -x WINDOWID="14680340"
declare -x WINDOWPATH="7"
declare -x XCURSOR_THEME="Blue"
declare -x XDG_CONFIG_DIRS="/etc/xdg"
declare -x XDG_DATA_DIRS="/usr/local/share:/usr/kde/3.5/share:/usr/share"
declare -x XDG_MENU_PREFIX="kde-4.2-"
declare -x XDG_SESSION_COOKIE="5bbf24a5c73607354569b70045ea8c6c-1249629758.926351-1274606255"
declare -x XDM_MANAGED="method=classic"
declare -x XERCESC_NLS_HOME="/usr/share/xerces-c/msg"
declare -x _E_DOCDESTTREE_=""
declare -x _E_EXEDESTTREE_=""
declare -x __GL_DEFAULT_LOG_ANISO="0"
declare -x __GL_FSAA_MODE="0"
declare -x __GL_SYNC_TO_VBLANK="0"
