| #!/bin/bash |
| # Copyright 1999-2012 Gentoo Foundation |
| # Distributed under the terms of the GNU General Public License v2 |
| |
| source "${PORTAGE_BIN_PATH:-/usr/lib/portage/bin}"/isolated-functions.sh |
| |
| helper=${0##*/} |
| |
| if [[ -z ${T} ]] || [[ -z ${2} ]] ; then |
| __helpers_die "${helper}: Need two arguments, old file and new file" |
| exit 1 |
| fi |
| |
| (($#>2)) && \ |
| eqawarn "QA Notice: ${helper} called with more than 2 arguments: ${@:3}" |
| |
| stdin= |
| if ___eapi_newins_supports_reading_from_standard_input && [[ $1 == "-" ]]; then |
| stdin=yes |
| fi |
| |
| TMP=$(mktemp -d "${T}/.newins_tmp_XXXXXX") |
| trap 'rm -rf "${TMP}"' EXIT |
| |
| if [[ ${stdin} ]] ; then |
| if [[ -t 0 ]] ; then |
| __helpers_die "!!! ${helper}: Input is from a terminal" |
| exit 1 |
| fi |
| cat > "${TMP}/$2" |
| ret=$? |
| else |
| if [[ ! -e $1 ]] ; then |
| __helpers_die "!!! ${helper}: $1 does not exist" |
| exit 1 |
| fi |
| |
| cp_args="-f" |
| if [[ ${helper} == newins ]] ; then |
| if ___eapi_doins_and_newins_preserve_symlinks; then |
| cp_args+=" -P" |
| fi |
| fi |
| |
| cp ${cp_args} "$1" "${TMP}/$2" |
| ret=$? |
| fi |
| |
| if [[ ${ret} -ne 0 ]] ; then |
| __helpers_die "${0##*/} failed" |
| exit ${ret} |
| fi |
| |
| do${helper#new} "${TMP}/$2" |
| ret=$? |
| [[ $ret -ne 0 ]] && __helpers_die "${helper} failed" |
| exit $ret |