The 'c' mode will do the following:
[core.git] / inc / classes / main / file_directories / io / class_FrameworkFileInputOutputPointer.php
index 824df452eec683a41c7d534d671d835edb5962af..b167fee3d363d409865c577e24500c5d2e9534d7 100644 (file)
@@ -21,7 +21,7 @@
  * You should have received a copy of the GNU General Public License
  * along with this program. If not, see <http://www.gnu.org/licenses/>.
  */
-class FrameworkFileInputOutputPointer extends BaseFileIo {
+class FrameworkFileInputOutputPointer extends BaseFileIo implements InputOutputPointer {
        /**
         * Protected constructor
         *
@@ -38,10 +38,10 @@ class FrameworkFileInputOutputPointer extends BaseFileIo {
         *
         * @param       $fileName       The file name we shall pass to fopen()
         * @return      void
-        * @throws      FileIsEmptyException    If the given file name is NULL or empty
+        * @throws      FileIsEmptyException            If the given file name is NULL or empty
         * @throws      FileReadProtectedException      If PHP cannot read an existing file
         * @throws      FileWriteProtectedException     If PHP cannot write an existing file
-        * @throws      FileIoException                 If fopen() returns not a file resource
+        * @throws      FileIoException                         If fopen() returns not a file resource
         */
        public static final function createFrameworkFileInputOutputPointer ($fileName) {
                // Some pre-sanity checks...
@@ -57,7 +57,7 @@ class FrameworkFileInputOutputPointer extends BaseFileIo {
                }
 
                // Try to open a handler
-               $filePointer = fopen($fileName, 'r+b');
+               $filePointer = fopen($fileName, 'c+b');
                if ((is_null($filePointer)) || ($filePointer === FALSE)) {
                        // Something bad happend
                        throw new FileIoException($fileName, self::EXCEPTION_FILE_POINTER_INVALID);
@@ -115,7 +115,29 @@ class FrameworkFileInputOutputPointer extends BaseFileIo {
                }
 
                // Write data to the file pointer and return written bytes
-               return fwrite($this->getPointer(), $dataStream);
+               return fwrite($this->getPointer(), $dataStream, strlen($dataStream));
+       }
+
+       /**
+        * Rewinds to the beginning of the file
+        *
+        * @return      void
+        */
+       public function rewind () {
+               // Rewind the pointer
+               assert(rewind($this->getPointer()) === 1);
+       }
+
+       /**
+        * Seeks to given position
+        *
+        * @param       $seekPosition   Seek position in file
+        * @param       $whence                 "Seek mode" (see http://de.php.net/fseek)
+        * @return      void
+        */
+       public function seek ($seekPosition, $whence = SEEK_SET) {
+               // Move the file pointer
+               assert(fseek($this->getPointer(), $seekPosition, $whence) === 0);
        }
 }