The 'c' mode will do the following:
[core.git] / inc / classes / main / file_directories / io / class_FrameworkFileInputOutputPointer.php
index 078c206be29400b5aee821748067a73f2827630d..b167fee3d363d409865c577e24500c5d2e9534d7 100644 (file)
@@ -57,7 +57,7 @@ class FrameworkFileInputOutputPointer extends BaseFileIo implements InputOutputP
                }
 
                // Try to open a handler
-               $filePointer = fopen($fileName, 'a+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 implements InputOutputP
                }
 
                // 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);
        }
 }