scratch – Blame information for rev 81

Subversion Repositories:
Rev:
Rev Author Line No. Line
4 office 1 <?php
2  
3 ###########################################################################
4 ## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ##
5 ###########################################################################
34 office 6 function atomized_put_contents($file, $data, $block = 1)
12 office 7 {
34 office 8 $f = fopen($file, 'a');
9 if (!$f || !flock($f, LOCK_EX | LOCK_NB, $block) || $block)
10 return;
11 ftruncate($f, 0);
12 fwrite($f, $data, strlen($data));
81 office 13 $t = filemtime ($file);
34 office 14 flock($f, LOCK_UN);
15 fclose($f);
81 office 16 return $t;
34 office 17 }
37 office 18  
34 office 19 ###########################################################################
20 ## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ##
21 ###########################################################################
22 function atomized_get_contents($file, $block = 1)
23 {
24 $f = fopen($file, 'r+');
25 if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block)
26 return;
27 $s = get_file_size($file);
28 if ($s == 0) {
29 flock($f, LOCK_UN);
30 fclose($f);
31 return;
4 office 32 }
34 office 33 $c = fread($f, $s);
34 flock($f, LOCK_UN);
35 fclose($f);
36 return $c;
4 office 37 }
34 office 38  
4 office 39 ###########################################################################
40 ## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ##
41 ###########################################################################
34 office 42 function get_file_size($file, $block = 1)
12 office 43 {
34 office 44 $f = fopen($file, 'r+');
45 if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block)
46 return;
47  
48 $s = 1073741824;
49 $i = 0;
50 fseek($f, 0, SEEK_SET);
51 do {
52 fseek($f, $s, SEEK_CUR);
53  
54 if (fgetc($f) === false) {
55 fseek($f, -$s, SEEK_CUR);
56 $s = (int)($s / 2);
57 continue;
4 office 58 }
34 office 59 fseek($f, -1, SEEK_CUR);
60 $i += $s;
61 } while ($s > 1);
62  
63 while (fgetc($f) !== false)
64 $i++;
65  
66 flock($f, LOCK_UN);
67 fclose($f);
68 return $i;
4 office 69 }