Browse Source

fix(install_config): replace cp -nv with explicit file existence check (#4897)

* fix(install_config): replace cp -nv with explicit file existence check

Newer coreutils (Ubuntu 24.04+, Debian 13+) emit a portability warning
when using cp -n: 'behavior of -n is non-portable and may change in future'.

Replace all cp -nv usages with an explicit [ ! -f dest ] guard, which is
portable across all distros and preserves the same OK/SKIP/FAIL behaviour.

* fix(install_config): use -e and -L checks to handle broken symlinks

Using only -f missed broken symlinks (-e returns false for them but
-L returns true). Use both checks to match the skip behaviour of cp -n.
pull/4899/head
Daniel Gibbs 2 months ago
committed by GitHub
parent
commit
9dfbb8eeed
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 33
      lgsm/modules/install_config.sh

33
lgsm/modules/install_config.sh

@ -34,8 +34,13 @@ fn_default_config_remote() {
if [ "${config}" == "${servercfgdefault}" ]; then
mkdir -p "${servercfgdir}"
echo -en "copying config file [ ${italic}${servercfgfullpath}${default} ]"
changes+=$(cp -nv "${lgsmdir}/config-default/config-game/${config}" "${servercfgfullpath}")
exitcode=$?
if [ ! -e "${servercfgfullpath}" ] && [ ! -L "${servercfgfullpath}" ]; then
cp "${lgsmdir}/config-default/config-game/${config}" "${servercfgfullpath}"
exitcode=$?
[ "${exitcode}" -eq 0 ] && changes="copied"
else
exitcode=0
fi
if [ "${exitcode}" -ne 0 ]; then
fn_print_fail_eol_nl
fn_script_log_fail "copying config file ${servercfgfullpath}"
@ -48,7 +53,13 @@ fn_default_config_remote() {
elif [ "${shortname}" == "arma3" ] && [ "${config}" == "${networkcfgdefault}" ]; then
mkdir -p "${servercfgdir}"
echo -en "copying config file [ ${italic}${networkcfgfullpath}${default} ]"
changes+=$(cp -nv "${lgsmdir}/config-default/config-game/${config}" "${networkcfgfullpath}")
if [ ! -e "${networkcfgfullpath}" ] && [ ! -L "${networkcfgfullpath}" ]; then
cp "${lgsmdir}/config-default/config-game/${config}" "${networkcfgfullpath}"
exitcode=$?
[ "${exitcode}" -eq 0 ] && changes="copied"
else
exitcode=0
fi
if [ "${exitcode}" -ne 0 ]; then
fn_print_fail_eol_nl
fn_script_log_fail "copying config file ${networkcfgdefault}"
@ -60,7 +71,13 @@ fn_default_config_remote() {
fi
elif [ "${shortname}" == "dst" ] && [ "${config}" == "${clustercfgdefault}" ]; then
echo -en "copying config file [ ${italic}${clustercfgfullpath}${default} ]"
changes+=$(cp -nv "${lgsmdir}/config-default/config-game/${clustercfgdefault}" "${clustercfgfullpath}")
if [ ! -e "${clustercfgfullpath}" ] && [ ! -L "${clustercfgfullpath}" ]; then
cp "${lgsmdir}/config-default/config-game/${clustercfgdefault}" "${clustercfgfullpath}"
exitcode=$?
[ "${exitcode}" -eq 0 ] && changes="copied"
else
exitcode=0
fi
if [ "${exitcode}" -ne 0 ]; then
fn_print_fail_eol_nl
fn_script_log_fail "copying config file ${clustercfgfullpath}"
@ -72,7 +89,13 @@ fn_default_config_remote() {
fi
else
echo -en "copying config file [ ${italic}${servercfgdir}/${config}${default} ]"
changes+=$(cp -nv "${lgsmdir}/config-default/config-game/${config}" "${servercfgdir}/${config}")
if [ ! -e "${servercfgdir}/${config}" ] && [ ! -L "${servercfgdir}/${config}" ]; then
cp "${lgsmdir}/config-default/config-game/${config}" "${servercfgdir}/${config}"
exitcode=$?
[ "${exitcode}" -eq 0 ] && changes="copied"
else
exitcode=0
fi
if [ "${exitcode}" -ne 0 ]; then
fn_print_fail_eol_nl
fn_script_log_fail "copying config file ${servercfgdir}/${config}"

Loading…
Cancel
Save