OSDN Git Service

BugTrack/2401 Locked file_get_contents/file_put_contents on bugtrack
[pukiwiki/pukiwiki.git] / lib / file.php
index 8da7f7b..b90a2f8 100644 (file)
@@ -44,7 +44,7 @@ function get_source($page = NULL, $lock = TRUE, $join = FALSE)
                        } else {
                                $result = fread($fp, $size);
                                if ($result !== FALSE) {
-                                       // Removing line-feeds
+                                       // Removing Carriage-Return
                                        $result = str_replace("\r", '', $result);
                                }
                        }
@@ -52,7 +52,7 @@ function get_source($page = NULL, $lock = TRUE, $join = FALSE)
                        // Returns an array
                        $result = file($path);
                        if ($result !== FALSE) {
-                               // Removing line-feeds
+                               // Removing Carriage-Return
                                $result = str_replace("\r", '', $result);
                        }
                }
@@ -841,3 +841,19 @@ function pkwk_touch_file($filename, $time = FALSE, $atime = FALSE)
                        htmlsc(basename($filename)));
        }
 }
+
+/**
+ * Lock-enabled file_get_contents
+ *
+ * Require: PHP5+
+ */
+function pkwk_file_get_contents($filename) {
+       if (! file_exists($filename)) {
+               return false;
+       }
+       $fp   = fopen($filename, 'rb');
+       flock($fp, LOCK_SH);
+       $file = file_get_contents($filename);
+       flock($fp, LOCK_UN);
+       return $file;
+}