source: spip-zone/_dev_/bin_svn/spip_gen.php @ 815

Last change on this file since 815 was 815, checked in by fil@…, 15 years ago

script de creation des archives sur le serveur trac

File size: 1.8 KB
Line 
1<?php
2
3$dir_base = $argv[1].'/';  #"../../spip/";
4$fichier = $argv[2]; #".spip.bin";
5
6if (!$fichier) die ("Usage: spip_gen.php /chemin/vers/spip spip.bin");
7
8#echo "($dir_base, $fichier)\n";
9#exit;
10
11function ecrire_short($f, $n) {
12        global $_fwrite;
13        $bin = pack('n', $n);
14        $_fwrite($f, $bin, 2);
15}
16
17function ecrire_long($f, $n) {
18        global $_fwrite;
19        $bin = pack('N', $n);
20        $_fwrite($f, $bin, 4);
21}
22
23function ecrire_chaine($f, $s) {
24        global $_fwrite;
25        ecrire_long($f, strlen($s));
26        $_fwrite($f, $s, strlen($s));
27}
28
29
30function packer_repertoire($f, $dir = '') {
31        global $dir_base, $_fwrite;
32
33        $handle = opendir("$dir_base$dir");
34        if ($dir) $dir .= '/';
35
36        while (($fichier = readdir($handle)) != '') {
37                // Eviter ".", "..", ".htaccess", etc.
38                if ($fichier[0] == '.') continue;
39                if ($fichier == 'CVS') continue;
40
41                $fichier = "$dir$fichier";
42                $chemin = "$dir_base$fichier";
43                if (is_file($chemin)) {
44                        echo "<li>$fichier";
45                        ecrire_chaine($f, $fichier);
46                        $taille = filesize($chemin);
47                        ecrire_long($f, $taille);
48                        $source = fopen($chemin, "rb");
49                        $bin = fread($source, $taille);
50                        fclose($source);
51                        $_fwrite($f, $bin, $taille);
52                }
53                else if (is_dir($chemin)) {
54                        echo "<li><font color='blue'>$fichier</font>";
55                        ecrire_chaine($f, $fichier);
56                        ecrire_long($f, 0);
57                        packer_repertoire($f, $fichier);
58                }
59        }
60
61        closedir($handle);
62}
63
64
65function packer($fichier) {
66        global $_fopen, $_fwrite, $_fclose;
67
68        echo "<h2>$fichier</h2>\n";
69        echo "<small>";
70        $f = $_fopen($fichier, "wb");
71        $_fwrite($f, "spip", 4);
72        packer_repertoire($f);
73        ecrire_long($f, 0);
74        $_fclose($f);
75        echo "</small>\n";
76}
77
78$_fwrite = fwrite;
79$_fopen = fopen;
80$_fclose = fclose;
81
82## inutile d'avoir les deux versions tout de meme, la .gz suffit pour tester
83##packer($fichier);
84
85$_fwrite = gzwrite;
86$_fopen = gzopen;
87$_fclose = gzclose;
88
89packer("$fichier.gz");
90
91
92?>
Note: See TracBrowser for help on using the repository browser.