Added disabled stat func
This commit is contained in:
parent
629f50e097
commit
4ee7af0997
@ -849,8 +849,7 @@ debug_timer () {
|
|||||||
# Поиск нужного .desktop файла по $portwine_exe (для показа в комментариях нужного времени)
|
# Поиск нужного .desktop файла по $portwine_exe (для показа в комментариях нужного времени)
|
||||||
# Параллельное создание базы по времени после завершения приложения
|
# Параллельное создание базы по времени после завершения приложения
|
||||||
search_desktop_file () {
|
search_desktop_file () {
|
||||||
local desktop_file desktop_file_new line1 line2 line3 line4 count_line i
|
local desktop_file desktop_file_new line1 line2 FILE_SHA256SUM_ARRAY EXEC_DESKTOP BROKEN_LINE FILE_SHA256SUM_FOUND FILE_SHA256SUM_NOT_FOUND
|
||||||
local EXEC_DESKTOP TIME_TOTAL BROKEN_LINE FILE_SHA256SUM_ARRAY FILE_SHA256SUM_FOUND FILE_SHA256SUM_NOT_FOUND SKIP_REPAIR
|
|
||||||
if [[ -z $FILE_SHA256SUM ]] ; then
|
if [[ -z $FILE_SHA256SUM ]] ; then
|
||||||
read -r -a FILE_SHA256SUM_ARRAY < <(sha256sum "$portwine_exe")
|
read -r -a FILE_SHA256SUM_ARRAY < <(sha256sum "$portwine_exe")
|
||||||
FILE_SHA256SUM=${FILE_SHA256SUM_ARRAY[0]}
|
FILE_SHA256SUM=${FILE_SHA256SUM_ARRAY[0]}
|
||||||
@ -869,134 +868,141 @@ search_desktop_file () {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done < "$desktop_file"
|
done < "$desktop_file"
|
||||||
while IFS=" " read -r -a line2 ; do
|
|
||||||
if [[ -z ${line2[0]} ]] \
|
|
||||||
|| [[ ! ${line2[0]} =~ (.[Bb][Aa][Tt]$|.[Ee][Xx][Ee]$|.[Mm][Ss][Ii]$|.[Rr][Ee][Gg]$) ]] ; then
|
|
||||||
BROKEN_LINE=1
|
|
||||||
fi
|
|
||||||
if [[ ${line2[1]} == "$FILE_SHA256SUM" ]] ; then
|
|
||||||
FILE_SHA256SUM_FOUND=1
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
if [[ ${line2[1]} != "$FILE_SHA256SUM" ]] \
|
|
||||||
&& [[ ${line2[0]} == "${portwine_exe// /#@_@#}" ]] ; then
|
|
||||||
FILE_SHA256SUM_NOT_FOUND=1
|
|
||||||
fi
|
|
||||||
done < "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
if [[ $portwine_exe == "${EXEC_DESKTOP//\"/}" ]] ; then
|
if [[ $portwine_exe == "${EXEC_DESKTOP//\"/}" ]] ; then
|
||||||
DESKTOP_CORRECT_FILE="$desktop_file"
|
DESKTOP_CORRECT_FILE="$desktop_file"
|
||||||
fi
|
fi
|
||||||
|
if [[ $DESKTOP_WITH_TIME == enabled ]] || [[ $SORT_WITH_TIME == enabled ]] ; then
|
||||||
|
while IFS=" " read -r -a line2 ; do
|
||||||
|
if [[ -z ${line2[0]} ]] \
|
||||||
|
|| [[ ! ${line2[0]} =~ (.[Bb][Aa][Tt]$|.[Ee][Xx][Ee]$|.[Mm][Ss][Ii]$|.[Rr][Ee][Gg]$) ]] ; then
|
||||||
|
BROKEN_LINE=1
|
||||||
|
fi
|
||||||
|
if [[ ${line2[1]} == "$FILE_SHA256SUM" ]] ; then
|
||||||
|
FILE_SHA256SUM_FOUND=1
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
if [[ ${line2[1]} != "$FILE_SHA256SUM" ]] \
|
||||||
|
&& [[ ${line2[0]} == "${portwine_exe// /#@_@#}" ]] ; then
|
||||||
|
FILE_SHA256SUM_NOT_FOUND=1
|
||||||
|
fi
|
||||||
|
done < "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
IFS="$orig_IFS"
|
IFS="$orig_IFS"
|
||||||
## Ремонты:
|
if [[ $DESKTOP_WITH_TIME == enabled ]] || [[ $SORT_WITH_TIME == enabled ]] ; then
|
||||||
# Когда приложения ещё нет в статистике
|
local line3 line4 count_line i TIME_TOTAL SKIP_REPAIR
|
||||||
[[ -z ${line2[2]} ]] && line2[2]=0
|
## Ремонты:
|
||||||
|
|
||||||
## TODO: ремонтирует devel пр с entry point потом можно будет это дропнуть
|
# Ремонт, проверяет чтобы длинна хеш суммы была равна 64 символам, в ином случае удалит битые
|
||||||
if [[ $FILE_SHA256SUM_NOT_FOUND == 1 ]] && [[ ${#line2[1]} != "64" ]] ; then
|
if [[ $FILE_SHA256SUM_NOT_FOUND == 1 ]] && [[ ${#line2[1]} != "64" ]] ; then
|
||||||
while IFS=" " read -r -a line3 ; do
|
while IFS=" " read -r -a line3 ; do
|
||||||
if [[ ${#line3[1]} == "64" ]]
|
if [[ ${#line3[1]} == "64" ]]
|
||||||
then echo "${line3[*]}"
|
then echo "${line3[*]}"
|
||||||
fi
|
fi
|
||||||
done < "$PORT_WINE_TMP_PATH/statistics" > "$PORT_WINE_TMP_PATH/statistics_repair"
|
done < "$PORT_WINE_TMP_PATH/statistics" > "$PORT_WINE_TMP_PATH/statistics_repair"
|
||||||
try_remove_file "$PORT_WINE_TMP_PATH/statistics"
|
IFS="$orig_IFS"
|
||||||
mv -f "$PORT_WINE_TMP_PATH/statistics_repair" "$PORT_WINE_TMP_PATH/statistics"
|
try_remove_file "$PORT_WINE_TMP_PATH/statistics"
|
||||||
return 0
|
mv -f "$PORT_WINE_TMP_PATH/statistics_repair" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
fi
|
search_desktop_file
|
||||||
|
|
||||||
# Ремонт, если есть пустые строки и непонятные строки без .exe, .bat, .msi, .reg
|
|
||||||
if [[ $BROKEN_LINE == 1 ]] ; then
|
|
||||||
while IFS=" " read -r -a line4 ; do
|
|
||||||
if [[ -n ${line4[0]} ]] && [[ ${line4[0]} =~ (.[Bb][Aa][Tt]$|.[Ee][Xx][Ee]$|.[Mm][Ss][Ii]$|.[Rr][Ee][Gg]$) ]]
|
|
||||||
then echo "${line4[*]}"
|
|
||||||
fi
|
|
||||||
done < "$PORT_WINE_TMP_PATH/statistics" > "$PORT_WINE_TMP_PATH/statistics_repair"
|
|
||||||
try_remove_file "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
mv -f "$PORT_WINE_TMP_PATH/statistics_repair" "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
return 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ремонтирует путь на новый, если вдруг путь до .exe файла битый или изменился, но .exe файл он опознал
|
|
||||||
if [[ $FILE_SHA256SUM_FOUND == 1 ]] && [[ ${line2[0]} != "${portwine_exe// /#@_@#}" ]] ; then
|
|
||||||
sed -i "s|${line2[0]} ${line2[1]}|${portwine_exe// /#@_@#} ${line2[1]}|" "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
line2[0]=${portwine_exe// /#@_@#}
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ремонт, если sha256sum изменилась, но путь до .exe тот же
|
|
||||||
if [[ $FILE_SHA256SUM_NOT_FOUND == 1 ]] ; then
|
|
||||||
sed -i "s|${line2[0]} ${line2[1]}|${line2[0]} $FILE_SHA256SUM|" "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
line2[1]=$FILE_SHA256SUM
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Ремонт, если сломалось время
|
|
||||||
if [[ ! ${line2[2]} =~ [0-9]+ ]] || (( line2[2] >= 999999999 )) ; then
|
|
||||||
sed -i "s|${line2[1]} ${line2[2]}|${line2[1]} 0|" "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
line2[2]=0
|
|
||||||
fi
|
|
||||||
export TIME_CURRENT=${line2[2]}
|
|
||||||
|
|
||||||
# Проверка новых десктоп файлов, чтобы их можно было сортировать первыми при первом создании в главном меню + ремонт
|
|
||||||
if [[ $PW_NEW_DESKTOP == 1 ]] && [[ ${line2[3]} != NEW_DESKTOP ]] ; then
|
|
||||||
if [[ $FILE_SHA256SUM_FOUND == 1 ]] ; then
|
|
||||||
sed -i "s|${line2[1]} \(.*\) ${line2[3]}|${line2[1]} \1 NEW_DESKTOP|" "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
else
|
|
||||||
echo "${portwine_exe// /#@_@#} $FILE_SHA256SUM $TIME_CURRENT NEW_DESKTOP" >> "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
unset PW_NEW_DESKTOP
|
|
||||||
|
|
||||||
# Когда приложение было запущено и завершено
|
# Ремонт, если есть пустые строки и непонятные строки без .exe, .bat, .msi, .reg
|
||||||
if [[ -n $PW_TIME_IN_GAME ]] ; then
|
if [[ $BROKEN_LINE == 1 ]] ; then
|
||||||
TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME ))
|
while IFS=" " read -r -a line4 ; do
|
||||||
if [[ $FILE_SHA256SUM_FOUND == 1 ]] ; then
|
if [[ -n ${line4[0]} ]] && [[ ${line4[0]} =~ (.[Bb][Aa][Tt]$|.[Ee][Xx][Ee]$|.[Mm][Ss][Ii]$|.[Rr][Ee][Gg]$) ]]
|
||||||
# Когда есть предыдущее время
|
then echo "${line4[*]}"
|
||||||
sed -i "s|$FILE_SHA256SUM $TIME_CURRENT|$FILE_SHA256SUM $TIME_TOTAL|" "$PORT_WINE_TMP_PATH/statistics"
|
fi
|
||||||
else
|
done < "$PORT_WINE_TMP_PATH/statistics" > "$PORT_WINE_TMP_PATH/statistics_repair"
|
||||||
# Когда только запустили приложение первый раз
|
IFS="$orig_IFS"
|
||||||
echo "${portwine_exe// /#@_@#} $FILE_SHA256SUM $TIME_TOTAL OLD_DESKTOP" >> "$PORT_WINE_TMP_PATH/statistics"
|
try_remove_file "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
mv -f "$PORT_WINE_TMP_PATH/statistics_repair" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
search_desktop_file
|
||||||
fi
|
fi
|
||||||
count_line=4
|
|
||||||
# Здесь добавляются новые линии для статистики
|
# Ремонтирует путь на новый, если вдруг путь до .exe файла битый или изменился, но .exe файл он опознал
|
||||||
if [[ -z ${line2[4]} ]] ; then
|
if [[ $FILE_SHA256SUM_FOUND == 1 ]] && [[ ${line2[0]} != "${portwine_exe// /#@_@#}" ]] ; then
|
||||||
SKIP_REPAIR=1
|
sed -i "s|${line2[0]} ${line2[1]}|${portwine_exe// /#@_@#} ${line2[1]}|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
sed -i "s|$FILE_SHA256SUM \(.*\)|$FILE_SHA256SUM \1 L4-1|" "$PORT_WINE_TMP_PATH/statistics"
|
line2[0]=${portwine_exe// /#@_@#}
|
||||||
else
|
fi
|
||||||
# ремонт, если L4 по каким-то причинам сломался
|
|
||||||
if [[ ${line2[4]} =~ ^L4 ]] ; then
|
# Ремонт, если sha256sum изменилась, но путь до .exe тот же
|
||||||
local NUMBER_OF_STARTS=$(( ${line2[4]//L4-/} + 1 ))
|
if [[ $FILE_SHA256SUM_NOT_FOUND == 1 ]] ; then
|
||||||
|
sed -i "s|${line2[0]} ${line2[1]}|${line2[0]} $FILE_SHA256SUM|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
line2[1]=$FILE_SHA256SUM
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Когда приложения ещё нет в статистике
|
||||||
|
[[ -z ${line2[2]} ]] && line2[2]=0
|
||||||
|
# Ремонт, если сломалось время
|
||||||
|
if [[ ! ${line2[2]} =~ [0-9]+ ]] || (( line2[2] >= 999999999 )) ; then
|
||||||
|
sed -i "s|${line2[1]} ${line2[2]}|${line2[1]} 0|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
line2[2]=0
|
||||||
|
fi
|
||||||
|
export TIME_CURRENT=${line2[2]}
|
||||||
|
|
||||||
|
# Проверка новых десктоп файлов, чтобы их можно было сортировать первыми при первом создании в главном меню + ремонт
|
||||||
|
if [[ $PW_NEW_DESKTOP == 1 ]] && [[ ${line2[3]} != NEW_DESKTOP ]] ; then
|
||||||
|
if [[ $FILE_SHA256SUM_FOUND == 1 ]] ; then
|
||||||
|
sed -i "s|${line2[1]} \(.*\) ${line2[3]}|${line2[1]} \1 NEW_DESKTOP|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
else
|
else
|
||||||
SKIP_REPAIR=1
|
echo "${portwine_exe// /#@_@#} $FILE_SHA256SUM $TIME_CURRENT NEW_DESKTOP" >> "$PORT_WINE_TMP_PATH/statistics"
|
||||||
sed -i "s|$FILE_SHA256SUM \(.*\) ${line2[4]}|$FILE_SHA256SUM \1 L4-1|" "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
(( count_line ++ ))
|
unset PW_NEW_DESKTOP
|
||||||
|
|
||||||
# Пример для L5
|
# Когда приложение было запущено и завершено
|
||||||
# if [[ -z ${line2[5]} ]] ; then
|
if [[ -n $PW_TIME_IN_GAME ]] ; then
|
||||||
# SKIP_REPAIR=1
|
TIME_TOTAL=$(( TIME_CURRENT + PW_TIME_IN_GAME ))
|
||||||
# sed -i "s|$FILE_SHA256SUM \(.*\)|$FILE_SHA256SUM \1 L5-1|" "$PORT_WINE_TMP_PATH/statistics"
|
if [[ $FILE_SHA256SUM_FOUND == 1 ]] ; then
|
||||||
# else
|
# Когда есть предыдущее время
|
||||||
# if [[ ${line2[5]} =~ ^L5 ]] ; then
|
sed -i "s|$FILE_SHA256SUM $TIME_CURRENT|$FILE_SHA256SUM $TIME_TOTAL|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
# local ЗДЕСЬ_НОВАЯ_ПЕРЕМЕННАЯ=$(( ${line2[5]//L5-/} + 1 ))
|
else
|
||||||
# else
|
# Когда только запустили приложение первый раз
|
||||||
# SKIP_REPAIR=1
|
echo "${portwine_exe// /#@_@#} $FILE_SHA256SUM $TIME_TOTAL OLD_DESKTOP" >> "$PORT_WINE_TMP_PATH/statistics"
|
||||||
# sed -i "s|$FILE_SHA256SUM \(.*\) ${line2[5]}|$FILE_SHA256SUM \1 L5-1|" "$PORT_WINE_TMP_PATH/statistics"
|
fi
|
||||||
# fi
|
count_line=4
|
||||||
# fi
|
# Здесь добавляются новые линии для статистики (L4-) важен
|
||||||
# (( count_line ++ ))
|
if [[ -z ${line2[4]} ]] ; then
|
||||||
|
SKIP_REPAIR=1
|
||||||
if [[ $SKIP_REPAIR != 1 ]] ; then
|
sed -i "s|$FILE_SHA256SUM \(.*\)|$FILE_SHA256SUM \1 L4-1|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
# Ремонт, если количество элементов массива по каким-то причина больше, чем должно быть
|
else
|
||||||
if [[ -n ${line2["$count_line"]} ]] ; then
|
# ремонт, если L4 по каким-то причинам сломался
|
||||||
for i in $(seq $count_line ${#line2[@]}) ; do
|
if [[ ${line2[4]} =~ ^L4 ]] ; then
|
||||||
unset 'line2[$i]'
|
local NUMBER_OF_STARTS=$(( ${line2[4]//L4-/} + 1 ))
|
||||||
done
|
else
|
||||||
sed -i "s|${portwine_exe// /#@_@#} $FILE_SHA256SUM \(.*\)|${line2[*]}|" "$PORT_WINE_TMP_PATH/statistics"
|
SKIP_REPAIR=1
|
||||||
|
sed -i "s|$FILE_SHA256SUM \(.*\) ${line2[4]}|$FILE_SHA256SUM \1 L4-1|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
(( count_line ++ ))
|
||||||
|
|
||||||
|
# Пример для L5
|
||||||
|
# if [[ -z ${line2[5]} ]] ; then
|
||||||
|
# SKIP_REPAIR=1
|
||||||
|
# sed -i "s|$FILE_SHA256SUM \(.*\)|$FILE_SHA256SUM \1 L5-1|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
# else
|
||||||
|
# if [[ ${line2[5]} =~ ^L5 ]] ; then
|
||||||
|
# local ЗДЕСЬ_НОВАЯ_ПЕРЕМЕННАЯ=$(( ${line2[5]//L5-/} + 1 ))
|
||||||
|
# else
|
||||||
|
# SKIP_REPAIR=1
|
||||||
|
# sed -i "s|$FILE_SHA256SUM \(.*\) ${line2[5]}|$FILE_SHA256SUM \1 L5-1|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
# fi
|
||||||
|
# fi
|
||||||
|
# (( count_line ++ ))
|
||||||
|
|
||||||
|
if [[ $SKIP_REPAIR != 1 ]] ; then
|
||||||
|
# Ремонт, если количество элементов массива по каким-то причина больше, чем должно быть
|
||||||
|
if [[ -n ${line2["$count_line"]} ]] ; then
|
||||||
|
for i in $(seq $count_line ${#line2[@]}) ; do
|
||||||
|
unset 'line2[$i]'
|
||||||
|
done
|
||||||
|
sed -i "s|${portwine_exe// /#@_@#} $FILE_SHA256SUM \(.*\)|${line2[*]}|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
|
fi
|
||||||
|
# Сюда все sedы от L4, L5 и т.д. (после всех ремонтов)
|
||||||
|
sed -i "s|$FILE_SHA256SUM \(.*\) ${line2[4]}|$FILE_SHA256SUM \1 L4-$NUMBER_OF_STARTS|" "$PORT_WINE_TMP_PATH/statistics"
|
||||||
fi
|
fi
|
||||||
# Сюда все sedы от L4, L5 и т.д. (после всех ремонтов)
|
|
||||||
sed -i "s|$FILE_SHA256SUM \(.*\) L4-${line2[4]}|$FILE_SHA256SUM \1 L4-$NUMBER_OF_STARTS|" "$PORT_WINE_TMP_PATH/statistics"
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user