Skip to content

Commit a82ac53

Browse files
authored
fix(fix_steamcmd): fix to use link for steamclient.so via link (#3695)
* fix(steamcmd): steamclient.so hardlink instead of copy
1 parent 5c13944 commit a82ac53

File tree

1 file changed

+51
-10
lines changed

1 file changed

+51
-10
lines changed

lgsm/functions/fix_steamcmd.sh

Lines changed: 51 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ fn_fix_steamclient_so(){
2525
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${2}/steamclient.so"
2626
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
2727
cp "${steamcmddir}/linux32/steamclient.so" "${2}/steamclient.so"
28+
elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
29+
cp "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${2}/steamclient.so"
2830
fi
2931
fn_fix_msg_end
3032
fi
@@ -40,34 +42,73 @@ fn_fix_steamclient_so(){
4042
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${2}/steamclient.so"
4143
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
4244
cp "${steamcmddir}/linux64/steamclient.so" "${2}/steamclient.so"
45+
elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" ]; then
46+
cp "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" "${2}/steamclient.so"
4347
fi
4448
fn_fix_msg_end
4549
fi
4650
fi
4751
}
4852

4953
# Helps fix: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so.
50-
if [ ! -f "${HOME}/.steam/sdk64/steamclient.so" ]; then
51-
fixname="steamclient.so sdk64"
54+
steamsdk64="${HOME}/.steam/sdk64"
55+
steamclientsdk64="${steamsdk64}/steamclient.so"
56+
# remove any old unlinked versions of steamclient.so
57+
if [ -f "${steamclientsdk64}" ]; then
58+
if [ "$(stat -c '%h' "${steamclientsdk64}")" -eq 1 ]; then
59+
fixname="steamclient.so sdk64 -- remove old file"
60+
fn_fix_msg_start
61+
rm -f "${steamclientsdk64}"
62+
fn_fix_msg_end
63+
fi
64+
fi
65+
66+
# place new hardlink for the file to the disk
67+
if [ ! -f "${steamclientsdk64}" ]; then
68+
fixname="steamclient.so sdk64 hardlink"
5269
fn_fix_msg_start
53-
mkdir -p "${HOME}/.steam/sdk64"
70+
if [ ! -d "${steamsdk64}" ]; then
71+
mkdir -p "${steamsdk64}"
72+
fi
5473
if [ -f "${HOME}/.steam/steamcmd/linux64/steamclient.so" ]; then
55-
cp "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so"
74+
ln "${HOME}/.steam/steamcmd/linux64/steamclient.so" "${steamclientsdk64}"
5675
elif [ -f "${steamcmddir}/linux64/steamclient.so" ]; then
57-
cp "${steamcmddir}/linux64/steamclient.so" "${HOME}/.steam/sdk64/steamclient.so"
76+
ln "${steamcmddir}/linux64/steamclient.so" "${steamclientsdk64}"
77+
elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" ]; then
78+
ln "${HOME}/.local/share/Steam/steamcmd/linux64/steamclient.so" "${steamclientsdk64}"
79+
else
80+
fn_print_fail_nl "Could not copy any steamclient.so 64bit for the gameserver"
5881
fi
5982
fn_fix_msg_end
6083
fi
6184

6285
# Helps fix: [S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam,or a local steamclient.so.
63-
if [ ! -f "${HOME}/.steam/sdk32/steamclient.so" ]; then
64-
fixname="steamclient.so sdk32"
86+
steamsdk32="${HOME}/.steam/sdk32"
87+
steamclientsdk32="${HOME}/.steam/sdk32/steamclient.so"
88+
if [ -f "${steamclientsdk32}" ]; then
89+
if [ " $(stat -c '%h' "${steamclientsdk32}")" -eq 1 ]; then
90+
fixname="steamclient.so sdk32 -- remove old file"
91+
fn_fix_msg_start
92+
rm -f "${steamclientsdk32}"
93+
fn_fix_msg_end
94+
fi
95+
fi
96+
97+
# place new hardlink for the file to the disk
98+
if [ ! -f "${steamclientsdk32}" ]; then
99+
fixname="steamclient.so sdk32 link"
65100
fn_fix_msg_start
66-
mkdir -p "${HOME}/.steam/sdk32"
101+
if [ ! -d "${steamsdk32}" ]; then
102+
mkdir -p "${steamsdk32}"
103+
fi
67104
if [ -f "${HOME}/.steam/steamcmd/linux32/steamclient.so" ]; then
68-
cp "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so"
105+
ln "${HOME}/.steam/steamcmd/linux32/steamclient.so" "${steamclientsdk32}"
69106
elif [ -f "${steamcmddir}/linux32/steamclient.so" ]; then
70-
cp "${steamcmddir}/linux32/steamclient.so" "${HOME}/.steam/sdk32/steamclient.so"
107+
ln "${steamcmddir}/linux32/steamclient.so" "${steamclientsdk32}"
108+
elif [ -f "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" ]; then
109+
ln "${HOME}/.local/share/Steam/steamcmd/linux32/steamclient.so" "${steamclientsdk32}"
110+
else
111+
fn_print_fail_nl "Could not copy any steamclient.so 32bit for the gameserver"
71112
fi
72113
fn_fix_msg_end
73114
fi

0 commit comments

Comments
 (0)