zoe             Tue Jun  5 07:54:58 2007 UTC

  Modified files:              
    /php-src/ext/standard/tests/file    file.inc 
  Log:
  Added fill_buffer() and fixed file_fill() to write binary data only
  
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/file.inc?r1=1.2&r2=1.3&diff_format=u
Index: php-src/ext/standard/tests/file/file.inc
diff -u php-src/ext/standard/tests/file/file.inc:1.2 
php-src/ext/standard/tests/file/file.inc:1.3
--- php-src/ext/standard/tests/file/file.inc:1.2        Fri May 25 13:50:06 2007
+++ php-src/ext/standard/tests/file/file.inc    Tue Jun  5 07:54:58 2007
@@ -7,6 +7,7 @@
        delete_links() : delete links 
        fill_files()   : fill file with specified contents 
        change_file_perms : Change permission of files 
+       fill_buffer    : fill buffer with specified contents
 
 */ 
 
@@ -30,7 +31,52 @@
 }
 
 /*
- Function : bool fill_file(resource $file_handle, string $fill_type, string 
$file_size);
+ Function : bool fill_buffer(string &$buffer, string $fill_type, int 
$fill_size);
+ Description: Fills the $buffer with data as specified with requested size.
+   $buffer = buffer to be filled
+   $fill_type: 
+       "text" = fills with string of size $file_size
+       "numeric" = fills with numeric value of size $file_size
+       "text_with_new_line" = similar to "text" fill type but writes with new 
line
+       "alphanumeric" = fills with alphnumeric values 
+ Returns: true on success, false on invalid fill type
+*/
+function fill_buffer(&$buffer, $fill_type, $fill_size) {
+
+  if ( $fill_type == "text" ) {
+    $data = "text ";
+    $size_divider = strlen($data);
+    $add_value = strlen($data);
+  } else if ( $fill_type == "text_with_new_line" ) {
+    $data = "line\nline of text\n";
+    $size_divider = strlen($data);
+    $add_value = strlen($data);
+  } else if ( $fill_type == "alphanumeric" ) {
+    $data = "ab12 ";
+    $size_divider = strlen($data);
+    $add_value = strlen($data);
+  } else if ( $fill_type == "numeric" ) {
+    $data = 2;
+    $size_divider = 1;
+    $add_value = 0;
+  } else {
+    // invalid fill type;
+    return false;
+  }
+
+  $tmp_buff = str_repeat($data, ($chunk_size/$size_divider) + $add_value );
+  
+  if ( strlen($tmp_buff) > $fill_size ) {
+    $buffer = substr($tmp_buff, 0, $fill_size);
+  } else {
+    $buffer = $tmp_buff;
+  }
+
+  return true;
+}
+
+/*
+ Function : bool fill_file(resource $file_handle, string $fill_type, int 
$file_size);
  Description: Fills the file with data as specified with requested size.
    $file_handle = file handle, opened with write options,
    $fill_type: 
@@ -79,7 +125,7 @@
         $chunk_size = $size;
       }
       $num_values = str_repeat($data, ($chunk_size/$size_divider) + $add_value 
);
-      $bytes_written = fwrite($file_handle, $num_values, $chunk_size);
+      $bytes_written = fwrite($file_handle, (binary)$num_values, $chunk_size);
       if ( $bytes_written != $chunk_size ) {
             return false;
       }
@@ -87,7 +133,7 @@
     } while ( $size > 0 );
   } else {
     $num_values = str_repeat($data, ($chunk_size/$size_divider) + $add_value );
-    $bytes_written = fwrite($file_handle, $num_values, $file_size);
+    $bytes_written = fwrite($file_handle, (binary)$num_values, $file_size);
     if ( $bytes_written != $chunk_size ) {
       return false;
     }
@@ -185,7 +231,7 @@
                        $content_type = "numeric",
                        $permission = 0755,
                        $size = 1,
-                       $mode = "w",
+                       $mode = "wb",
                        $name_prefix = "file",
                        $name_suffix = 1,
                        $flag = "kilobytes",

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to