summaryrefslogtreecommitdiff
path: root/tools/upalyzer
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2008-02-11 19:07:36 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2008-02-11 19:07:36 +0000
commit7f2a504d7bcbc255616af97e050e59b0a2d99c12 (patch)
tree358df0d3f4606aa5386a1937f4d8127633e99a99 /tools/upalyzer
parent230c65a923aeaf456d61e5fbf4faec4c93313308 (diff)
downloadmana-7f2a504d7bcbc255616af97e050e59b0a2d99c12.tar.gz
mana-7f2a504d7bcbc255616af97e050e59b0a2d99c12.tar.bz2
mana-7f2a504d7bcbc255616af97e050e59b0a2d99c12.tar.xz
mana-7f2a504d7bcbc255616af97e050e59b0a2d99c12.zip
Merged revisions 3750-3751,3755-3759,3761,3766-3767,3773-3776,3779,3781,3783-3789,3791-3800,3807,3814-3815,3817,3819-3820,3822,3824-3825,3827,3829-3838,3840-3841,3843-3858,3860-3875 via svnmerge from
https://themanaworld.svn.sourceforge.net/svnroot/themanaworld/tmw/branches/0.0 ........ r3750 | crush_tmw | 2007-11-20 00:36:02 +0100 (Tue, 20 Nov 2007) | 1 line Updated desert maps with new tiles by Len. ........ r3755 | crush_tmw | 2007-11-20 17:47:44 +0100 (Tue, 20 Nov 2007) | 1 line fixed a collision layer error ........ r3773 | crush_tmw | 2007-12-12 16:45:25 +0100 (Wed, 12 Dec 2007) | 2 lines Added my tmxcopy tool for copying parts of maps to other maps. ........ r3774 | b_lindeijer | 2007-12-12 20:06:49 +0100 (Wed, 12 Dec 2007) | 2 lines Added two new cave tiles by yosuhara. ........ r3775 | crush_tmw | 2007-12-12 20:25:40 +0100 (Wed, 12 Dec 2007) | 1 line Fixed the blurred outlines of the new tiles. ........ r3791 | b_lindeijer | 2007-12-18 17:19:53 +0100 (Tue, 18 Dec 2007) | 2 lines Added initial version of the update analysis tool upalyzer. ........ r3792 | b_lindeijer | 2007-12-18 17:22:27 +0100 (Tue, 18 Dec 2007) | 2 lines Small fix to the displayed obsolete data percentage. ........ r3793 | b_lindeijer | 2007-12-18 17:31:52 +0100 (Tue, 18 Dec 2007) | 2 lines Calculate usage percentage correctly and display zip file overhead. ........ r3794 | b_lindeijer | 2007-12-18 19:44:12 +0100 (Tue, 18 Dec 2007) | 4 lines Optimized with single loop approach and nicer printing calls, inspired by doener's version. Also added list of update entries and their respective update. ........ r3795 | b_lindeijer | 2007-12-19 10:26:21 +0100 (Wed, 19 Dec 2007) | 4 lines Fixed association of entries to update, added no-cache headers, added a bit of error reporting in case of invalid zip files, kept original ordering of the update list and sorted the list of entries on their filename. ........ r3796 | b_lindeijer | 2007-12-19 11:32:28 +0100 (Wed, 19 Dec 2007) | 3 lines Added list of files in each update with indication on whether they are still used. ........ r3797 | b_lindeijer | 2007-12-19 12:16:24 +0100 (Wed, 19 Dec 2007) | 2 lines Fixed weird problem with zip_open failing with relative path. ........ r3798 | b_lindeijer | 2007-12-19 12:22:50 +0100 (Wed, 19 Dec 2007) | 2 lines Incorporated some more of doener's leet PHP skills. ;) ........ r3800 | crush_tmw | 2007-12-19 19:11:22 +0100 (Wed, 19 Dec 2007) | 1 line Fixed a map bug (monster trap) on map 18 (woodland village surrounding) ........ r3814 | b_lindeijer | 2007-12-24 17:23:56 +0100 (Mon, 24 Dec 2007) | 2 lines Updated debian subfolder. ........ r3817 | b_lindeijer | 2007-12-25 15:26:22 +0100 (Tue, 25 Dec 2007) | 2 lines Fixed missing backslash. ........ r3822 | crush_tmw | 2007-12-28 01:26:57 +0100 (Fri, 28 Dec 2007) | 1 line Some mapping errors fixed by Zipon. ........ r3824 | crush_tmw | 2007-12-29 03:25:16 +0100 (Sat, 29 Dec 2007) | 1 line Added new map by 5t3v3 (east desert cave) and enhanced version of eastern desert by Len. ........ r3827 | crush_tmw | 2007-12-30 01:28:00 +0100 (Sun, 30 Dec 2007) | 1 line switched layer compression on. ........ r3830 | crush_tmw | 2008-01-03 18:17:00 +0100 (Thu, 03 Jan 2008) | 1 line Some map bugs reported by Strump, fixed by Zipon. ........ r3840 | crush_tmw | 2008-01-14 11:22:14 +0100 (Mon, 14 Jan 2008) | 1 line Added new versions of snow maps by 5t3v3 (with minor fixes) ........ r3845 | crush_tmw | 2008-01-19 12:43:32 +0100 (Sat, 19 Jan 2008) | 1 line Fixes for the new snowland maps by 5t3v3. ........ r3846 | crush_tmw | 2008-01-19 14:00:37 +0100 (Sat, 19 Jan 2008) | 1 line Added hot spring particle effect to pond south of snow village. ........ r3873 | crush_tmw | 2008-02-08 23:07:21 +0100 (Fri, 08 Feb 2008) | 1 line Added Dimonds Cove Restaurant maps. ........ r3875 | crush_tmw | 2008-02-10 15:40:00 +0100 (Sun, 10 Feb 2008) | 1 line Added Dimonds Cove outdoor map. ........
Diffstat (limited to 'tools/upalyzer')
-rw-r--r--tools/upalyzer/analyze.php177
1 files changed, 177 insertions, 0 deletions
diff --git a/tools/upalyzer/analyze.php b/tools/upalyzer/analyze.php
new file mode 100644
index 00000000..106fcbb5
--- /dev/null
+++ b/tools/upalyzer/analyze.php
@@ -0,0 +1,177 @@
+<?php
+/* analyze.php
+ * Copyright 2007 Bjørn Lindeijer
+ *
+ * This file is part of upalyzer.
+ *
+ * upalyzer 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
+ * any later version.
+ *
+ * upalyzer 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 upalyzer; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+header("Content-type: text/html");
+header("Cache-Control: no-store, no-cache, must-revalidate");
+header("Cache-Control: post-check=0, pre-check=0", false);
+header("Pragma: no-cache");
+
+?>
+<html>
+<head><title>Update analysis</title></head>
+<body>
+<pre>
+List of current updates:
+
+<?php
+$update_file = array_filter(array_reverse(file('resources2.txt')));
+$updates = array();
+$update_file_maxlen = 0;
+$data_size = 0;
+$data_uncompressed_size = 0;
+$data_used_size = 0;
+$data_overhead_size = 0;
+$update_entries = array();
+$update_entry_maxlen = 0;
+
+foreach ($update_file as $update_line)
+{
+ list($file, $hash) = explode(' ', trim($update_line), 2);
+ $update = array(
+ 'file' => $file,
+ 'adler32' => $hash,
+ 'filesize' => filesize($file),
+ 'size' => 0,
+ 'used_entry_count' => 0,
+ 'used_size' => 0,
+ 'uncompressed_size' => 0);
+ $update_file_maxlen = max($update_file_maxlen, strlen($file));
+
+ $entries = array();
+ $zip = zip_open(realpath($file));
+
+ if ($zip && !is_int($zip)) {
+ while ($zip_entry = zip_read($zip)) {
+ $update['uncompressed_size'] += zip_entry_filesize($zip_entry);
+ $entry_name = zip_entry_name($zip_entry);
+ $entry_size = zip_entry_compressedsize($zip_entry);
+ $entry_used = !array_key_exists($entry_name, $update_entries);
+ $entries[$entry_name] = array(
+ 'name' => $entry_name,
+ 'size' => $entry_size,
+ 'used' => $entry_used);
+ $update['size'] += $entry_size;
+
+ if ($entry_used) {
+ $update['used_entry_count']++;
+ $update['used_size'] += $entry_size;
+ $update_entries[$entry_name] = $update;
+ }
+
+ $update_entry_maxlen = max($update_entry_maxlen, strlen($entry_name));
+ }
+ zip_close($zip);
+ }
+ else {
+ $update['zip_error'] = $zip or true;
+ }
+
+ ksort($entries);
+ $update['entries'] = $entries;
+ $update['used_percentage'] = $update['used_size'] / $update['size'];
+ $updates[] = $update;
+
+ $data_used_size += $update['used_size'];
+ $data_size += $update['size'];
+ $data_uncompressed_size += $update['uncompressed_size'];
+ $data_overhead_size += $update['filesize'] - $update['size'];
+}
+
+function print_update_name($update, $pad = true)
+{
+ global $update_file_maxlen;
+ printf("<a href=\"#%s\">%s</a>", $update['file'], $update['file']);
+ if ($pad)
+ echo str_repeat(' ', $update_file_maxlen - strlen($update['file']));
+}
+
+// Print overall statistics
+
+foreach (array_reverse($updates) as $update)
+{
+ print_update_name($update);
+ echo ' '. $update['adler32'];
+ printf(" %4d kb", $update['filesize'] / 1024);
+ if (!$update['zip_error']) {
+ printf(" %4d kb", $update['uncompressed_size'] / 1024);
+ printf(" %3d%% used (%d/%d files)", $update['used_percentage'] * 100,
+ $update['used_entry_count'],
+ count($update['entries']));
+ } else {
+ printf(" Error! ");
+ if (is_int($update['zip_error']))
+ echo $update['zip_error'];
+ }
+ echo "\n";
+}
+
+printf("\n");
+printf("Amount of data: %4d kb (+%d kb zip file overhead)\n",
+ $data_size / 1024,
+ $data_overhead_size / 1024);
+printf("Uncompressed: %4d kb\n", $data_uncompressed_size / 1024);
+printf("Obsoleted data: %4d kb (%d%%)\n",
+ ($data_size - $data_used_size) / 1024,
+ 100 - ($data_used_size / $data_size) * 100);
+
+printf("\n");
+
+
+// Print list of update entries and the update they are loaded from
+
+ksort($update_entries);
+
+foreach ($update_entries as $entry => $update)
+{
+ printf("%-{$update_entry_maxlen}s ", $entry);
+ print_update_name($update, false);
+ echo "\n";
+}
+
+
+// For each update, print its list of files and indicate whether they are used
+
+foreach (array_reverse($updates) as $update)
+{
+ print "\n<a name=\"".$update['file']."\"/><b>".$update['file']."</b>\n";
+
+ foreach ($update['entries'] as $entry_name => $entry) {
+ printf("%-{$update_entry_maxlen}s", $entry_name);
+ if ($entry['used']) {
+ echo ' *';
+ } else {
+ echo ' ';
+ print_update_name($update_entries[$entry_name], false);
+ }
+ echo "\n";
+ }
+}
+
+/*
+if ($dh = opendir('.')) {
+ while (($file = readdir($dh)) !== false) {
+ }
+ closedir($dh);
+}
+*/
+?>
+</pre>
+</body>
+</html>