2008-09-18 13:36:37 +01:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
# Check translations, generate verbose statistics.
|
|
|
|
|
# Copyright (C) 2004 Recai Oktas <roktas@omu.edu.tr>
|
2020-12-29 19:44:53 +00:00
|
|
|
|
# Copyright (C) 2007-2008 Andrius Štikonas <andrius@stikonas.eu> (my code can also be used under GPLv3 or any later)
|
2008-10-15 16:54:21 +01:00
|
|
|
|
# MediaWiki 'glamdrol' style sheet Copyright (C) 2005 by Jordą Polo <jorda AT ettin DOT org> Based on 'monobook', by Gabriel Wicke
|
2008-09-18 13:36:37 +01:00
|
|
|
|
#
|
|
|
|
|
# This program is free software: you can redistribute it and/or modify
|
|
|
|
|
# it under the terms of the GNU General Public License version 2 as published by
|
|
|
|
|
# the Free Software Foundation.
|
|
|
|
|
#
|
|
|
|
|
# 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
|
2018-12-28 12:14:33 +00:00
|
|
|
|
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
2018-12-28 12:14:33 +00:00
|
|
|
|
source "$(dirname $0)/variables"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
2013-03-28 11:23:11 +00:00
|
|
|
|
LC_ALL=C
|
2008-09-18 13:36:37 +01:00
|
|
|
|
ODD_CHARS='<27>'
|
|
|
|
|
CL=0 # counter for css style
|
|
|
|
|
STATUS="OK" # Total status of translations
|
|
|
|
|
|
2018-12-29 11:46:51 +00:00
|
|
|
|
while getopts ":c" opt; do
|
|
|
|
|
case $opt in
|
|
|
|
|
c)
|
2021-01-01 20:58:47 +00:00
|
|
|
|
CORE_TEXTDOMAINS="wesnoth lib editor help units multiplayer anl tutorial" ;;
|
2018-12-29 11:46:51 +00:00
|
|
|
|
esac
|
|
|
|
|
done
|
|
|
|
|
|
2013-03-28 11:23:11 +00:00
|
|
|
|
for BRANCH in $BRANCHES; do
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "Repository: $BLUE$BRANCH$ENDCOLOR"
|
2012-01-02 11:35:15 +00:00
|
|
|
|
STATSFILE="statistics-$BRANCH.html"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
ERRORS="translation-errors-$BRANCH"
|
|
|
|
|
nerror=0; nwarn=0; npo=0; nt=0; nu=0; nf=0
|
2019-06-10 00:00:02 +01:00
|
|
|
|
rm -f "$STATSFILE"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
2008-10-15 07:55:06 +01:00
|
|
|
|
echo -e "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
|
|
|
|
|
\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
|
|
|
|
|
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
|
|
|
|
|
<head>
|
|
|
|
|
<meta http-equiv=\"content-type\" content=\"application/xhtml+xml; charset=utf-8\" />
|
|
|
|
|
<title>Battle for Wesnoth</title>
|
2018-12-28 12:14:33 +00:00
|
|
|
|
<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.wesnoth.org/wesmere/css/wesmere-1.1.0.css\" />
|
|
|
|
|
<link rel=\"stylesheet\" type=\"text/css\" href=\"https://www.wesnoth.org/wesmere/css/gettext-1.1.0.css\" />
|
2009-12-11 20:12:35 +00:00
|
|
|
|
</head>
|
2008-10-15 16:54:21 +01:00
|
|
|
|
<body>
|
2018-12-28 12:14:33 +00:00
|
|
|
|
|
|
|
|
|
<div id=\"main\">
|
|
|
|
|
|
|
|
|
|
<div id=\"nav\" role=\"banner\">
|
|
|
|
|
<div class=\"centerbox\">
|
2008-10-15 07:55:06 +01:00
|
|
|
|
<div id=\"logo\">
|
2018-12-28 12:14:33 +00:00
|
|
|
|
<a href=\"https://www.wesnoth.org/\" aria-label=\"Wesnoth logo\"></a>
|
2008-10-15 07:55:06 +01:00
|
|
|
|
</div>
|
|
|
|
|
<div id=\"nav\">
|
|
|
|
|
<ul>
|
2018-12-28 12:14:33 +00:00
|
|
|
|
<li><a href=\"https://www.wesnoth.org/\">Home</a></li>
|
|
|
|
|
<li><a href=\"https://www.wesnoth.org/wiki/Play\">Play</a></li>
|
2008-10-15 07:55:06 +01:00
|
|
|
|
|
2018-12-28 12:14:33 +00:00
|
|
|
|
<li><a href=\"https://www.wesnoth.org/wiki/Create\">Create</a></li>
|
|
|
|
|
<li><a href=\"https://www.wesnoth.org/forum/\">Forums</a></li>
|
|
|
|
|
<li><a href=\"https://www.wesnoth.org/wiki/Support\">Support</a></li>
|
|
|
|
|
<li><a href=\"https://www.wesnoth.org/wiki/Project\">Project</a></li>
|
|
|
|
|
<li><a href=\"https://www.wesnoth.org/wiki/Credits\">Credits</a></li>
|
2008-10-15 07:55:06 +01:00
|
|
|
|
</ul>
|
|
|
|
|
</div>
|
2018-12-28 12:14:33 +00:00
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2008-10-15 07:55:06 +01:00
|
|
|
|
|
2018-12-28 12:14:33 +00:00
|
|
|
|
<h1 style=\"display:inline\">Wesnoth translation stats</h1>
|
2008-10-15 07:55:06 +01:00
|
|
|
|
<div> <br/> </div><p style=\"display:inline\">Last update: <strong>
|
2018-12-28 12:14:33 +00:00
|
|
|
|
$(LC_TIME="en_US.UTF-8" date)
|
2008-10-15 07:55:06 +01:00
|
|
|
|
</strong></p>
|
|
|
|
|
<div> <br/> </div>
|
2018-12-28 12:14:33 +00:00
|
|
|
|
<table class=\"gettext-stats\">
|
|
|
|
|
<thead><thead><tr>
|
|
|
|
|
<th class=\"title\" scope=\"col\">Textdomain</th>
|
|
|
|
|
<th scope=\"col\">Status</th>
|
|
|
|
|
<th class=\"translated\" scope=\"col\">Translated</th>
|
|
|
|
|
<th class=\"translated percent\" scope=\"col\">%</th>
|
|
|
|
|
<th class=\"fuzzy\" scope=\"col\">Fuzzy</th>
|
|
|
|
|
<th class=\"fuzzy percent\" scope=\"col\">%</th>
|
|
|
|
|
<th class=\"untranslated\" scope=\"col\">Untranslated</th>
|
|
|
|
|
<th class=\"untranslated percent\" scope=\"col\">%</th>
|
|
|
|
|
<th class=\"strcount\" scope=\"col\">Total</th>
|
|
|
|
|
<th class=\"graph\" scope=\"col\">Graph</th></tr></thead>
|
2019-06-10 00:00:02 +01:00
|
|
|
|
<tbody><tr>" >> "$STATSFILE"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
2018-12-29 11:46:51 +00:00
|
|
|
|
if [ -n "$CORE_TEXTDOMAINS" ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
POFILES=$BRANCH/$(echo "$CORE_TEXTDOMAINS" | awk '$NF=$NF "*.po"' OFS="*.po $BRANCH/")
|
2018-12-29 11:46:51 +00:00
|
|
|
|
else
|
|
|
|
|
POFILES="$BRANCH/*.po"
|
|
|
|
|
fi
|
|
|
|
|
for files in $POFILES; do
|
2019-06-10 00:00:02 +01:00
|
|
|
|
file=$(basename "$files")
|
|
|
|
|
filename=$(basename "$file" .po)
|
|
|
|
|
npo=$((npo + 1)); has_errors="no"; has_warnings="no";
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
|
|
|
|
# Extract the declared charset, may be we use this in future.
|
2018-12-28 12:14:33 +00:00
|
|
|
|
charset=$(sed -n '/^"Content-Type:/ s/.*charset=\([a-zA-Z0-9_-]*\).*/\1/p' "$BRANCH/$file")
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
|
|
|
|
echo -n "Checking $file for UTF-8 inconsistencies... "
|
2013-03-28 11:23:11 +00:00
|
|
|
|
if $ISUTF8 < "$BRANCH/$file" > /dev/null 2>&1; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
if ! echo "$charset" | grep -qi "UTF-8"; then
|
2008-09-18 13:36:37 +01:00
|
|
|
|
has_errors="yes"
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${RED}FAILED; non UTF-8 charset declaration for UTF-8 content$ENDCOLOR"
|
|
|
|
|
echo "$file: non UTF-8 charset declared for UTF-8 content; expect to see 'charset=UTF-8'." >> "$ERRORS"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
else
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${GREEN}OK$ENDCOLOR"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
|
|
|
|
else
|
2019-06-10 00:00:02 +01:00
|
|
|
|
if echo "$charset" | grep -qi "UTF-8"; then
|
2008-09-18 13:36:37 +01:00
|
|
|
|
has_errors="yes"
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${RED}FAILED; non UTF-8 content for UTF-8 charset declaration$ENDCOLOR"
|
|
|
|
|
echo "$file: UTF-8 charset declared for non UTF-8 content; expect to see a non UTF-8 charset." >> "$ERRORS"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
else
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${GREEN}OK$ENDCOLOR"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
|
|
|
|
fi
|
2019-06-10 00:00:02 +01:00
|
|
|
|
|
2008-09-18 13:36:37 +01:00
|
|
|
|
echo -n "Checking $file for odd characters... "
|
2019-06-10 00:00:02 +01:00
|
|
|
|
if grep -nH $ODD_CHARS "$BRANCH/$file" >> "$ERRORS"; then
|
2008-09-18 13:36:37 +01:00
|
|
|
|
has_warnings="yes"
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${RED}FAILED; odd characters found$ENDCOLOR"
|
|
|
|
|
echo "$file: one or more odd character from the '$ODD_CHARS' set found." >> "$ERRORS"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
else
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${GREEN}OK$ENDCOLOR"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Makes sense only if the file passed the UTF-8 check.
|
|
|
|
|
if [ "$has_errors" = "no" ]; then
|
|
|
|
|
echo -n "Checking $file with msgfmt... "
|
2019-06-10 00:00:02 +01:00
|
|
|
|
if ! LC_MESSAGES=C $MSGFMT --check -o /dev/null "$BRANCH/$file" >> "$ERRORS"; then
|
2008-09-18 13:36:37 +01:00
|
|
|
|
has_errors="yes"
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${RED}FAILED$ENDCOLOR"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
else
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${GREEN}OK$ENDCOLOR"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
|
|
|
|
fi
|
2019-06-10 00:00:02 +01:00
|
|
|
|
rf=0; ru=0; t=0; u=0; f=0; rt=0
|
2008-09-18 13:36:37 +01:00
|
|
|
|
if [ "$has_errors" = "yes" ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
nerror=$((nerror + 1))
|
2008-09-18 13:36:37 +01:00
|
|
|
|
sum=0
|
|
|
|
|
st="Error"
|
|
|
|
|
if [ $STATUS = "OK" ]; then
|
|
|
|
|
STATUS="Error"
|
|
|
|
|
fi
|
|
|
|
|
if [ $STATUS = "Warning" ]; then
|
|
|
|
|
STATUS="Error"
|
|
|
|
|
fi
|
|
|
|
|
else
|
2018-12-28 12:14:33 +00:00
|
|
|
|
stat=$(LC_MESSAGES=C $MSGFMT --statistics -o /dev/null "$BRANCH/$file" 2>&1)
|
|
|
|
|
t=$(echo "$stat" | sed -ne 's/\([0-9]\+\) translated .*/\1/p'); t=${t:-0}
|
|
|
|
|
u=$(echo "$stat" | sed -ne 's/.* \([0-9]\+\) untranslated .*/\1/p'); u=${u:-0}
|
|
|
|
|
f=$(echo "$stat" | sed -ne 's/.* \([0-9]\+\) fuzzy translation.*/\1/p'); f=${f:-0}
|
2019-06-10 00:00:02 +01:00
|
|
|
|
|
|
|
|
|
sum=$((t + f + u))
|
2008-09-18 13:36:37 +01:00
|
|
|
|
if [ ! "$sum" -eq 0 ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
rt=$(printf '%s%d%s%d\n' "scale=2; 100*" "$t" "/" $sum | bc)
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ ! "$sum" -eq 0 ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
rf=$(printf '%s%d%s%d\n' "scale=2; 100*" "$f" "/" $sum | bc)
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
2019-06-10 00:00:02 +01:00
|
|
|
|
|
2008-09-18 13:36:37 +01:00
|
|
|
|
if [ ! "$sum" -eq 0 ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
ru=$(printf '%s%d%s%d\n' "scale=2; 100*" "$u" "/" $sum | bc)
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
2019-06-10 00:00:02 +01:00
|
|
|
|
|
|
|
|
|
nt=$((nt + t)); nu=$((nu + u)); nf=$((nf + f))
|
|
|
|
|
|
2008-09-18 13:36:37 +01:00
|
|
|
|
st="OK"
|
|
|
|
|
if [ "$has_warnings" = "yes" ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
nwarn=$((nwarn + 1))
|
2008-09-18 13:36:37 +01:00
|
|
|
|
st='Warning'
|
|
|
|
|
if [ "$STATUS" = "OK" ]; then
|
|
|
|
|
STATUS='Warning'
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo "<tr class=\"row-$CL\">" >> "$STATSFILE"
|
|
|
|
|
CL=$(( (CL+1)%2 ))
|
|
|
|
|
echo " <td class=\"textdomain-name\" align=\"left\"><strong><a href=\"$BRANCH/$filename.po\">$(basename "$filename")</a></strong></td>
|
2018-12-28 12:14:33 +00:00
|
|
|
|
<td align=\"center\">$st</td>
|
2019-06-10 00:00:02 +01:00
|
|
|
|
<td class=\"translated\" align=\"right\">$t</td>" >> "$STATSFILE"
|
|
|
|
|
printf '%s%.2f%s\n' " <td class=\"percent\" align=\"right\">" "$rt" "</td>" >> "$STATSFILE"
|
|
|
|
|
echo " <td class=\"fuzzy\" align=\"right\">$f</td>" >> "$STATSFILE"
|
|
|
|
|
printf '%s%.2f%s\n' " <td class=\"percent\" align=\"right\">" "$rf" "</td>" >> "$STATSFILE"
|
|
|
|
|
echo " <td class=\"untranslated\" align=\"right\">$u</td>" >> "$STATSFILE"
|
|
|
|
|
printf '%s%.2f%s\n' " <td class=\"percent\" align=\"right\">" "$ru" "</td>" >> "$STATSFILE"
|
|
|
|
|
echo " <td class=\"strcount\" align=\"right\">$sum</td>" >> "$STATSFILE"
|
|
|
|
|
n4=$(printf '%s%f\n' "scale=2; 9*" "$rt" | bc)
|
|
|
|
|
n6=$(printf '%s%f\n' "scale=2; 9*" "$rf" | bc)
|
|
|
|
|
n8=$(printf '%s%f\n' "scale=2; 9*" "$ru" | bc)
|
|
|
|
|
printf '%s%.2f%s%.2f%s%.2f%s\n' " <td class=\"graph\"><span class=\"stats-bar green-bar\" style=\"width:" "$n4" "px\"></span><span class=\"stats-bar blue-bar\" style=\"width:" "$n6" "px\"></span><span class=\"stats-bar red-bar\" style=\"width:" "$n8" "px\"></span></td>" >> "$STATSFILE"
|
|
|
|
|
echo "</tr>" >> "$STATSFILE"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
if [ "$npo" -eq 0 ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -e "${RED}No '${PO}.po' file under '$BRANCH'.$ENDCOLOR"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
exit 0
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ "$nerror" -gt 0 ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -n -e "${RED}Fatal errors found. See '"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
tput smso; echo -n "$ERRORS"; tput rmso
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -ne "' for details.$ENDCOLOR"
|
2008-10-15 07:55:06 +01:00
|
|
|
|
echo ""
|
2008-09-18 13:36:37 +01:00
|
|
|
|
else
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -ne "${GREEN}No fatal errors found.$ENDCOLOR"
|
2008-10-15 07:55:06 +01:00
|
|
|
|
echo ""
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
|
|
|
|
if [ -s "$ERRORS" ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -n -e "$RED See '"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
tput smso; echo -n "$ERRORS"; tput rmso
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -ne "' for warnings.$ENDCOLOR"
|
2008-10-15 07:55:06 +01:00
|
|
|
|
echo ""
|
2008-09-18 13:36:37 +01:00
|
|
|
|
else
|
2019-06-10 00:00:02 +01:00
|
|
|
|
rm -f "$ERRORS"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [ "$npo" = "$nerror" ]; then
|
2019-06-10 00:00:02 +01:00
|
|
|
|
echo -en "${RED}All files have fatal errors.$ENDCOLOR"
|
2008-10-15 07:55:06 +01:00
|
|
|
|
echo ""
|
2008-09-18 13:36:37 +01:00
|
|
|
|
else
|
2019-06-10 00:00:02 +01:00
|
|
|
|
sum=$((nt + nf + nu))
|
2018-12-28 12:14:33 +00:00
|
|
|
|
nrt=$(printf '%s%d%s%d\n' "scale=2; 100*" $nt "/" $sum | bc)
|
|
|
|
|
nrf=$(printf '%s%d%s%d\n' "scale=2; 100*" $nf "/" $sum | bc)
|
|
|
|
|
nru=$(printf '%s%d%s%d\n' "scale=2; 100*" $nu "/" $sum | bc)
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
2018-12-28 12:14:33 +00:00
|
|
|
|
echo "<tfoot><tr class=\"teamstats\">
|
|
|
|
|
<th class=\"title\" scope=\"row\">Total</th>
|
|
|
|
|
<td align=\"center\">$STATUS</td>
|
2019-06-10 00:00:02 +01:00
|
|
|
|
<td class=\"translated\">$nt</td>" >> "$STATSFILE"
|
|
|
|
|
printf '%s%.2f%s\n' "<td align=\"right\">" "$nrt" "</td>" >> "$STATSFILE"
|
|
|
|
|
echo "<td class=\"fuzzy\">$nf</td>" >> "$STATSFILE"
|
|
|
|
|
printf '%s%.2f%s\n' "<td align=\"right\">" "$nrf" "</td>" >> "$STATSFILE"
|
|
|
|
|
echo "<td class=\"untranslated\">$nu</td>" >> "$STATSFILE"
|
|
|
|
|
printf '%s%.2f%s\n' "<td align=\"right\">" "$nru" "</td>" >> "$STATSFILE"
|
|
|
|
|
echo "<td class=\"strcount\">$((nt + nf + nu))</td>" >> "$STATSFILE"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
2019-06-10 00:00:02 +01:00
|
|
|
|
nrt=$(printf '%s%f\n' "scale=2; 9*" "$nrt" | bc)
|
|
|
|
|
nrf=$(printf '%s%f\n' "scale=2; 9*" "$nrf" | bc)
|
|
|
|
|
nru=$(printf '%s%f\n' "scale=2; 9*" "$nru" | bc)
|
2008-09-18 13:36:37 +01:00
|
|
|
|
|
2019-06-10 00:00:02 +01:00
|
|
|
|
printf '%s%.2f%s%.2f%s%.2f%s\n' " <td class=\"graph\"><span class=\"stats-bar green-bar\" style=\"width:" "$nrt" "px\"></span><span class=\"stats-bar blue-bar\" style=\"width:" "$nrf" "px\"></span><span class=\"stats-bar red-bar\" style=\"width:" "$nru" "px\"></span></td>" >> "$STATSFILE"
|
|
|
|
|
|
2008-10-15 07:55:06 +01:00
|
|
|
|
echo "</tr>
|
|
|
|
|
</table>
|
|
|
|
|
</td>
|
|
|
|
|
</tr>
|
|
|
|
|
</table>
|
2008-10-15 16:54:21 +01:00
|
|
|
|
<div><br/></div>
|
2008-10-15 07:55:06 +01:00
|
|
|
|
<div id=\"footer\">
|
|
|
|
|
<div id=\"footnote\">
|
2019-06-10 00:00:02 +01:00
|
|
|
|
© 2003-$(date +%Y) The Battle for Wesnoth<br/>
|
2018-12-28 12:14:33 +00:00
|
|
|
|
Site design Copyright © 2017–2018 by Iris Morelle.
|
2008-10-15 07:55:06 +01:00
|
|
|
|
<br/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</body>
|
2019-06-10 00:00:02 +01:00
|
|
|
|
</html>" >> "$STATSFILE"
|
2008-09-18 13:36:37 +01:00
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
# Exit with error count just because it may sense.
|
|
|
|
|
exit $nerror
|