1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
#!/usr/bin/env bash
# Copyright (C) 2007-2010 PlayOnLinux Team
# Copyright (C) 2009 Pâris Quentin
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
# This script calls update_check to update POL
export DONT_MONITOR="TRUE"
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
config_update() # Parse get_list_v4.php output line by line on stdin
{
read totlines
# Display 10% for fetching lists, plus 90% for fetching icons
echo 0
echo -n "" > "$POL_USER_ROOT/tmp/icons_fetch_list"
local numfetch=0
local lines=0
while read line; do
[ "$line" = "" ] && break
IFS="/" read file content download_icon testing nocd free <<< "$line"
echo "$content~$testing~$nocd~$free" >> "$file"
echo "$content~$testing~$nocd~$free" >> "search"
if [ "$download_icon" = "1" -a ! -e "$POL_USER_ROOT/configurations/icones/$content" ]; then
echo "$SITE/V2_data/icones/$content" >> "$POL_USER_ROOT/tmp/icons_fetch_list"
numfetch=$(( numfetch + 1 ))
fi
lines=$(( lines + 1 ))
echo $(( lines*10/totlines ))
done
if [ $numfetch -gt 0 ]; then
echo 10
local i=0
cd "$POL_USER_ROOT/configurations/icones"
${POL_WGET/-q} -nv -nd -i "$POL_USER_ROOT/tmp/icons_fetch_list" 2>&1 |\
$SED -ue '/URL:/!d; s/^.*-> "\(.*\)".*$/\1/'|\
while read content; do
[ -e "$content" -a ! -s "$content" ] && rm "$content"
i=$(( i + 1 ))
echo $(( 10 + i*90/numfetch ))
done
else
echo 100
fi
rm "$POL_USER_ROOT/tmp/icons_fetch_list" 2>/dev/null
}
get_packages_icons() # Parse get_packages.php output line by line on stdin
{
while read line; do
content="$(echo "$line" | cut -d ":" -f 1)"
if [ ! -e "$POL_USER_ROOT/configurations/icones/$content" ]; then
echo "$SITE/V2_data/icones/$content"
fi
done > "$POL_USER_ROOT/tmp/icons_fetch_list2"
cd "$POL_USER_ROOT/configurations/icones"
${POL_WGET/-q} -nv -nd -i "$POL_USER_ROOT/tmp/icons_fetch_list2" 2>&1 |\
$SED -ue '/URL:/!d; s/^.*-> "\(.*\)".*$/\1/'|\
while read content; do
[ -e "$content" -a ! -s "$content" ] && rm "$content"
done
rm "$POL_USER_ROOT/tmp/icons_fetch_list2" 2>/dev/null
}
update_check ()
{
WEB_TIMESTAMP="$($POL_WGET "$SITE/update_mark.txt" -O- 2> /dev/null)"
LAST_TIMESTAMP="$(POL_Config_Read LAST_TIMESTAMP)"
if $POL_WGET "$SITE/V4_data/repository/get_packages.php" -O- > "$POL_USER_ROOT/configurations/POL_Functions"; then
mv "$POL_USER_ROOT/configurations/POL_Functions" "$POL_USER_ROOT/configurations/listes/POL_Functions"
cat "$POL_USER_ROOT/configurations/listes/POL_Functions" | grep ':1$' | get_packages_icons
fi
# Gecko
$POL_WGET "$GECKO_SITE/gecko.lst" -O- > "$POL_USER_ROOT/tmp/gecko.lst" && mv "$POL_USER_ROOT/tmp/gecko.lst" "$POL_USER_ROOT/configurations/listes/gecko.lst"
# Mono
$POL_WGET "$MONO_SITE/mono.lst" -O- > "$POL_USER_ROOT/tmp/mono.lst" && mv "$POL_USER_ROOT/tmp/mono.lst" "$POL_USER_ROOT/configurations/listes/mono.lst"
if [ ! "$WEB_TIMESTAMP" = "" ] && [ ! "$WEB_TIMESTAMP" = "$LAST_TIMESTAMP" ] # Skip useless updates
then
POL_Debug_Message "Web version : $WEB_TIMESTAMP"
POL_Debug_Message "Current local version : $LAST_TIMESTAMP"
POL_Debug_Message "Updating list"
mkdir -p "$POL_USER_ROOT/configurations/listes/"
cd "$POL_USER_ROOT/configurations/listes"
rm 0 1 2 3 4 5 6 7 8 9 search 2> /dev/null
touch 0 1 2 3 4 5 6 7 8 9 search
echo 0
if [ "$POL_OS" = "Linux" ]
then
$POL_WGET "$SITE/V4_data/repository/get_list_v4.php" -O- | config_update
$POL_WGET "$SITE/V4_data/repository/get_md5_list.php?playonlinux=1" -O- > md5sums
elif [ "$POL_OS" = "FreeBSD" ]
then
$POL_WGET "$SITE/V4_data/repository/get_list_v4.php" -O- | config_update
$POL_WGET "$SITE/V4_data/repository/get_md5_list.php?playonlinux=1" -O- > md5sums
else
$POL_WGET "$SITE/V4_data/repository/get_list_v4.php?playonmac=1" -O- | config_update
$POL_WGET "$SITE/V4_data/repository/get_md5_list.php?playonmac=1" -O- > md5sums
fi
POL_Config_Write LAST_TIMESTAMP "$WEB_TIMESTAMP"
else
POL_Debug_Message "List is up to date"
fi
}
update_check
|