scratch – Blame information for rev 66

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