scratch – Blame information for rev 34

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));
13 flock($f, LOCK_UN);
14 fclose($f);
15 }
16 ###########################################################################
17 ## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ##
18 ###########################################################################
19 function atomized_get_contents($file, $block = 1)
20 {
21 $f = fopen($file, 'r+');
22 if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block)
23 return;
24 $s = get_file_size($file);
25 if ($s == 0) {
26 flock($f, LOCK_UN);
27 fclose($f);
28 return;
4 office 29 }
34 office 30 $c = fread($f, $s);
31 flock($f, LOCK_UN);
32 fclose($f);
33 return $c;
4 office 34 }
34 office 35  
4 office 36 ###########################################################################
37 ## Copyright (C) Wizardry and Steamworks 2015 - License: GNU GPLv3 ##
38 ###########################################################################
34 office 39 function get_file_size($file, $block = 1)
12 office 40 {
34 office 41 $f = fopen($file, 'r+');
42 if (!$f || !flock($f, LOCK_SH | LOCK_NB, $block) || $block)
43 return;
44  
45 $s = 1073741824;
46 $i = 0;
47 fseek($f, 0, SEEK_SET);
48 do {
49 fseek($f, $s, SEEK_CUR);
50  
51 if (fgetc($f) === false) {
52 fseek($f, -$s, SEEK_CUR);
53 $s = (int)($s / 2);
54 continue;
4 office 55 }
34 office 56 fseek($f, -1, SEEK_CUR);
57 $i += $s;
58 } while ($s > 1);
59  
60 while (fgetc($f) !== false)
61 $i++;
62  
63 flock($f, LOCK_UN);
64 fclose($f);
65 return $i;
4 office 66 }