]> granicus.if.org Git - php/commitdiff
New testcases for fscanf() function
authorRaghubansh Kumar <kraghuba@php.net>
Fri, 10 Aug 2007 17:54:48 +0000 (17:54 +0000)
committerRaghubansh Kumar <kraghuba@php.net>
Fri, 10 Aug 2007 17:54:48 +0000 (17:54 +0000)
56 files changed:
ext/standard/tests/file/fscanf_error.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation1.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation10.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation11.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation12.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation13.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation14.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation15.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation16.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation17.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation18.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation19.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation2.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation20.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation21.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation22.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation23.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation24.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation25.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation26.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation27.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation28.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation29.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation3.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation30.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation31.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation32.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation33.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation34.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation35.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation36.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation37.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation38.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation39.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation4.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation40.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation41.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation42.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation43.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation44.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation45.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation46.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation47.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation48.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation49.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation5.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation50.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation51.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation52.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation53.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation54.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation55.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation6.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation7.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation8.phpt [new file with mode: 0644]
ext/standard/tests/file/fscanf_variation9.phpt [new file with mode: 0644]

diff --git a/ext/standard/tests/file/fscanf_error.phpt b/ext/standard/tests/file/fscanf_error.phpt
new file mode 100644 (file)
index 0000000..71a9dfe
--- /dev/null
@@ -0,0 +1,99 @@
+--TEST--
+Test fscanf() function: error conditions
+
+--FILE--
+<?php
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+echo "*** Testing fscanf() for error conditions ***\n";
+$file_path = dirname(__FILE__);
+
+$filename = "$file_path/fscanf_error.tmp";
+$file_handle = fopen($filename, 'w');
+if ($file_handle == false) 
+  exit("Error:failed to open file $filename");
+fwrite($file_handle, "hello world");
+fclose($file_handle);
+
+// zero argument
+var_dump( fscanf() );
+
+// single argument
+$file_handle = fopen($filename, 'r');
+if ($file_handle == false) 
+  exit("Error:failed to open file $filename");
+var_dump( fscanf($file_handle) );
+fclose($file_handle);
+
+// invalid file handle
+var_dump( fscanf($file_handle, "%s") );
+
+// number of formats in format strings not matching the no of variables
+$file_handle = fopen($filename, 'r');
+if ($file_handle == false) 
+  exit("Error:failed to open file $filename");
+var_dump( fscanf($file_handle, "%d%s%f", $int_var, $string_var) );
+fclose($file_handle);
+
+// different invalid format strings
+$invalid_formats = array( $undefined_var, undefined_constant,
+                          "%", "%h", "%.", "%d%m"
+                   );
+
+
+// looping to use various invalid formats with fscanf()
+foreach($invalid_formats as $format)  {
+  $file_handle = fopen($filename, 'r');
+  if ($file_handle == false) 
+    exit("Error:failed to open file $filename");
+  var_dump( fscanf($file_handle, $format) );
+  fclose($file_handle); 
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_error.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Testing fscanf() for error conditions ***
+
+Warning: Wrong parameter count for fscanf() in %s on line %d
+NULL
+
+Warning: Wrong parameter count for fscanf() in %s on line %d
+NULL
+
+Warning: fscanf(): %d is not a valid File-Handle resource in %s on line %d
+bool(false)
+
+Warning: fscanf(): Different numbers of variable names and field specifiers in %s on line %d
+int(-1)
+
+Notice: Undefined variable: undefined_var in %s on line %d
+
+Notice: Use of undefined constant undefined_constant - assumed 'undefined_constant' in %s on line %d
+array(0) {
+}
+array(0) {
+}
+
+Warning: fscanf(): Bad scan conversion character " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character "." in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character "m" in %s on line %d
+NULL
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation1.phpt b/ext/standard/tests/file/fscanf_variation1.phpt
new file mode 100644 (file)
index 0000000..baebe61
--- /dev/null
@@ -0,0 +1,49 @@
+--TEST--
+Test fscanf() function: usage variations - return type without third argument
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* test fscanf() for its return type */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Testing fscanf(): for its return type without third argument ***\n";
+
+// create a file
+$filename = "$file_path/fscanf_variation1.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+fwrite($file_handle, "hello_world ");
+fwrite($file_handle, 12345);
+fclose($file_handle);
+
+// open file for reading 
+$file_handle = fopen($filename, "r");
+// capturing the return value from fscanf() called without third argument
+$return_value = fscanf($file_handle, "%s");
+var_dump( is_array($return_value), $return_value); // return type is an array
+fclose($file_handle);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation1.tmp";
+unlink($filename); 
+?>
+--EXPECTF--
+*** Testing fscanf(): for its return type without third argument ***
+bool(true)
+array(1) {
+  [0]=>
+  string(11) "hello_world"
+}
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation10.phpt b/ext/standard/tests/file/fscanf_variation10.phpt
new file mode 100644 (file)
index 0000000..0222bec
--- /dev/null
@@ -0,0 +1,221 @@
+--TEST--
+Test fscanf() function: usage variations - float formats with resource 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan resource type using different float format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different float format types with resource ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation10.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+
+// resource type variable
+$fp = fopen (__FILE__, "r");
+$dfp = opendir ( dirname(__FILE__) );
+  
+// array of resource types
+$resource_types = array (
+  $fp,
+  $dfp
+);
+
+$float_formats = array( "%f", 
+                      "%hf", "%lf", "%Lf",
+                      " %f", "%f ", "% f",
+                      "\t%f", "\n%f", "%4f",
+                      "%30f", "%[0-9]", "%*f"
+               );
+
+$counter = 1;
+
+// writing to the file
+foreach($resource_types as $value) {
+  fprintf($file_handle, $value);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different formats formats
+foreach($float_formats as $float_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$float_format) );
+  }
+  $counter++;
+}
+
+// closing the resources
+fclose($fp);
+fclose($dfp);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation10.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different float format types with resource ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation11.phpt b/ext/standard/tests/file/fscanf_variation11.phpt
new file mode 100644 (file)
index 0000000..f01a72e
--- /dev/null
@@ -0,0 +1,736 @@
+--TEST--
+Test fscanf() function: usage variations - float formats with arrays 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan arrays using different float format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different float format types with arrays ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation11.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array types
+$array_types = array (
+  array(),
+  array(0),
+  array(1),
+  array(NULL),
+  array(null),
+  array("string"),
+  array(true),
+  array(TRUE),
+  array(false),
+  array(FALSE),
+  array(1,2,3,4),
+  array(1 => "One", "two" => 2)
+);
+
+$float_formats = array( "%f",
+                        "%hf", "%lf", "%Lf",
+                        " %f", "%f ", "% f",
+                        "\t%f", "\n%f", "%4f",
+                        "%30f", "%[0-9]", "%*f"
+                 );
+
+$counter = 1;
+
+// writing to the file
+foreach($array_types as $value) {
+  fprintf($file_handle, $value);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different float formats
+foreach($float_formats as $float_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$float_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation11.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different float format types with arrays ***
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation12.phpt b/ext/standard/tests/file/fscanf_variation12.phpt
new file mode 100644 (file)
index 0000000..99fd6d2
--- /dev/null
@@ -0,0 +1,945 @@
+--TEST--
+Test fscanf() function: usage variations - float formats with strings
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan strings using different float format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different float format types with strings ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation12.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of strings
+$strings = array (
+  "",
+  '',
+  "0",
+  '0',
+  "1",
+  '1',
+  "\x01",
+  '\x01',
+  "\01",
+  '\01',
+  'string',
+  "string",
+  "true",
+  "FALSE",
+  'false',
+  'TRUE',
+  "NULL",
+  'null'
+);
+
+$float_formats = array( "%f", "%hf", "%lf", "%Lf", " %f", "%f ", "% f", "\t%f", "\n%f", "%4f", "%30f", "%[0-9]", "%*f");
+
+$counter = 1;
+
+// writing to the file
+foreach($strings as $string) {
+  fprintf($file_handle, $string);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different float formats
+foreach($float_formats as $float_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$float_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation12.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different float format types with strings ***
+
+-- iteration 1 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+NULL
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation13.phpt b/ext/standard/tests/file/fscanf_variation13.phpt
new file mode 100644 (file)
index 0000000..354fe40
--- /dev/null
@@ -0,0 +1,245 @@
+--TEST--
+Test fscanf() function: usage variations - float formats with boolean 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan boolean data using different float format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different float format types with boolean data ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation13.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of boolean types
+$bool_types = array (
+  true,
+  false,
+  TRUE,
+  FALSE,
+);
+
+$float_formats = array( "%f", "%hf", "%lf", "%Lf", " %f", "%f ", "% f", "\t%f", "\n%f", "%4f", "%30f", "%[0-9]", "%*f");
+
+$counter = 1;
+
+// writing to the file
+foreach($bool_types as $value) {
+  fprintf($file_handle, $value);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different float formats
+foreach($float_formats as $float_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$float_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation13.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different float format types with boolean data ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+NULL
+array(0) {
+}
+NULL
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation14.phpt b/ext/standard/tests/file/fscanf_variation14.phpt
new file mode 100644 (file)
index 0000000..2f2ec4f
--- /dev/null
@@ -0,0 +1,1078 @@
+--TEST--
+Test fscanf() function: usage variations - string formats with strings 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different strings using different string format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different string format types with different string ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation14.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid strings
+
+/* string created using Heredoc (<<<) */
+$heredoc_string = <<<EOT
+This is string defined
+using heredoc.
+EOT;
+/* heredoc string with only numerics */
+$heredoc_numeric_string = <<<EOT
+123456 3993
+4849 string
+EOT;
+/* null heardoc string */
+$heredoc_empty_string = <<<EOT
+EOT;
+$heredoc_null_string = <<<EOT
+NULL
+EOT;
+
+$valid_strings = array(
+  "",
+  " ",
+  '',
+  ' ',
+  "string",
+  'string',
+  "NULL",
+  'null',
+  "FALSE",
+  'true',
+  "\x0b",
+  "\0",
+  '\0',
+  '\060',
+  "\070",
+  "0x55F",
+  "055",
+  "@#$#$%%$^^$%^%^$^&",
+  $heredoc_string,
+  $heredoc_numeric_string,
+  $heredoc_empty_string,
+  $heredoc_null_string
+);
+
+// various string formats
+$string_formats = array( "%s", 
+                         "%hs", "%ls", "%Ls",
+                         " %s", "%s ", "% s",
+                         "\t%s", "\n%s", "%4s",
+                         "%30s", "%[a-zA-Z0-9]", "%*s"
+                  );
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_strings as $string) {
+  @fprintf($file_handle, $string);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different string formats
+foreach($string_formats as $string_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$string_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation14.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different string format types with different string ***
+
+-- iteration 1 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 2 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 3 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 4 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 5 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 6 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 9 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 10 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(4) "stri"
+}
+array(1) {
+  [0]=>
+  string(4) "stri"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(4) "FALS"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(4) "0x55"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(4) "usin"
+}
+array(1) {
+  [0]=>
+  string(4) "1234"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 11 --
+NULL
+NULL
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(2) "\0"
+}
+array(1) {
+  [0]=>
+  string(4) "\060"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+NULL
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+NULL
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(5) "0x55F"
+}
+array(1) {
+  [0]=>
+  string(3) "055"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(4) "This"
+}
+array(1) {
+  [0]=>
+  string(5) "using"
+}
+array(1) {
+  [0]=>
+  string(6) "123456"
+}
+array(1) {
+  [0]=>
+  string(4) "4849"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+bool(false)
+
+-- iteration 13 --
+NULL
+NULL
+NULL
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+NULL
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+NULL
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation15.phpt b/ext/standard/tests/file/fscanf_variation15.phpt
new file mode 100644 (file)
index 0000000..d925a9d
--- /dev/null
@@ -0,0 +1,862 @@
+--TEST--
+Test fscanf() function: usage variations - string formats with float values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan float values using different string format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different string format types with float values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation15.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of float type values
+
+$float_values = array (
+  -2147483649, 
+  2147483648,  
+  -0x80000001, // float value, beyond max negative int
+  0x800000001, // float value, beyond max positive int
+  020000000001, // float value, beyond max positive int
+  -020000000001, // float value, beyond max negative int
+  0.0,
+  -0.1,
+  1.0,
+  1e5,
+  -1e6,
+  1E8,
+  -1E9,
+  10.0000000000000000005,
+  10.5e+5
+);
+
+$string_formats = array( "%s",
+                         "%hs", "%ls", "%Ls",
+                         " %s", "%s ", "% s",
+                         "\t%s", "\n%s", "%4s",
+                         "%30s", "%[a-zA-Z0-9]", "%*s");
+
+$counter = 1;
+
+// writing to the file
+foreach($float_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different string formats
+foreach($string_formats as $string_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$string_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation15.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different string format types with float values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "3435"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(4) "1000"
+}
+array(1) {
+  [0]=>
+  string(4) "-100"
+}
+array(1) {
+  [0]=>
+  string(4) "1000"
+}
+array(1) {
+  [0]=>
+  string(4) "-100"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(4) "1050"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation16.phpt b/ext/standard/tests/file/fscanf_variation16.phpt
new file mode 100644 (file)
index 0000000..1312c18
--- /dev/null
@@ -0,0 +1,220 @@
+--TEST--
+Test fscanf() function: usage variations - string formats with resource 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan resource type using different string format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different string format types with resource ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation16.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+
+// resource type variable
+$fp = fopen (__FILE__, "r");
+$dfp = opendir ( dirname(__FILE__) );
+  
+// array of resource types
+$resource_types = array (
+  $fp,
+  $dfp
+);
+
+$string_formats = array( "%s",
+                         "%hs", "%ls", "%Ls",
+                         " %s", "%s ", "% s",
+                         "\t%s", "\n%s", "%4s",
+                         "%30s", "%[a-zA-Z0-9]", "%*s");
+
+$counter = 1;
+
+// writing to the file
+foreach($resource_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different string formats
+foreach($string_formats as $string_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$string_format) );
+  }
+  $counter++;
+}
+
+// closing the resources
+fclose($fp);
+fclose($dfp);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation16.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different string format types with resource ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(4) "Reso"
+}
+array(1) {
+  [0]=>
+  string(4) "Reso"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation17.phpt b/ext/standard/tests/file/fscanf_variation17.phpt
new file mode 100644 (file)
index 0000000..f300e3c
--- /dev/null
@@ -0,0 +1,711 @@
+--TEST--
+Test fscanf() function: usage variations - string formats with arrays 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan arrays using different string format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different string format types with arrays ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation17.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array types
+$array_types = array (
+  array(),
+  array(0),
+  array(1),
+  array(NULL),
+  array(null),
+  array("string"),
+  array(true),
+  array(TRUE),
+  array(false),
+  array(FALSE),
+  array(1,2,3,4),
+  array(1 => "One", "two" => 2)
+);
+
+$string_formats = array( "%s",
+                         "%hs", "%ls", "%Ls", 
+                         " %s", "%s ", "% s",
+                         "\t%s", "\n%s", "%4s",
+                         "%30s", "%[a-zA-Z0-9]", "%*s");
+
+$counter = 1;
+
+// writing to the file
+foreach($array_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different string formats
+foreach($string_formats as $string_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$string_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation17.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different string format types with arrays ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation18.phpt b/ext/standard/tests/file/fscanf_variation18.phpt
new file mode 100644 (file)
index 0000000..be0f210
--- /dev/null
@@ -0,0 +1,1013 @@
+--TEST--
+Test fscanf() function: usage variations - string formats with integer values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan integer values using different string format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different string format types with integer values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation18.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of string type values
+
+$integer_values = array (
+  0,
+  1,
+  -1,
+  -2147483648, // max negative integer value
+  -2147483647,
+  2147483647,  // max positive integer value
+  2147483640,
+  0x123B,      // integer as hexadecimal
+  0x12ab,
+  0Xfff,
+  0XFA,
+  -0x80000000, // max negative integer as hexadecimal
+  0x7fffffff,  // max postive integer as hexadecimal
+  0x7FFFFFFF,  // max postive integer as hexadecimal
+  0123,        // integer as octal
+  01912,       // should be quivalent to octal 1
+  -020000000000, // max negative integer as octal
+  017777777777  // max positive integer as octal
+);
+
+$string_formats = array( "%s",
+                         "%hs", "%ls", "%Ls",
+                         " %s", "%s ", "% s",
+                         "\t%s", "\n%s", "%4s",
+                         "%30s", "%[a-zA-Z0-9]", "%*s"
+                  );
+
+$counter = 1;
+
+// writing to the file
+foreach($integer_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different string formats
+foreach($string_formats as $string_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$string_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation18.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different string format types with integer values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation19.phpt b/ext/standard/tests/file/fscanf_variation19.phpt
new file mode 100644 (file)
index 0000000..85b7d76
--- /dev/null
@@ -0,0 +1,249 @@
+--TEST--
+Test fscanf() function: usage variations - string formats with boolean 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan boolean data using different string format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different string format types with boolean data ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation19.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of boolean types
+$bool_types = array (
+  true,
+  false,
+  TRUE,
+  FALSE,
+);
+
+$string_formats = array( "%s",
+                         "%hs", "%ls", "%Ls",
+                         " %s", "%s ", "% s",
+                        "\t%s", "\n%s", "%4s",
+                        "%30s", "%[a-zA-Z0-9]", "%*s");
+
+$counter = 1;
+
+// writing to the file
+foreach($bool_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different string formats
+foreach($string_formats as $string_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$string_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation19.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different string format types with boolean data ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+NULL
+array(0) {
+}
+NULL
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation2.phpt b/ext/standard/tests/file/fscanf_variation2.phpt
new file mode 100644 (file)
index 0000000..6416155
--- /dev/null
@@ -0,0 +1,1007 @@
+--TEST--
+Test fscanf() function: usage variations - integer formats with integer values 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different integer values using different interger format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different integer format types with different integer values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation2.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid  integer vlaues
+$valid_ints = array(
+  0,
+  1,
+  -1,
+  -2147483648, // max negative integer value
+  -2147483647,
+  2147483647,  // max positive integer value
+  2147483640,
+  0x123B,      // integer as hexadecimal
+  0x12ab,
+  0Xfff,
+  0XFA,
+  -0x80000000, // max negative integer as hexadecimal
+  0x7fffffff,  // max postive integer as hexadecimal
+  0x7FFFFFFF,  // max postive integer as hexadecimal
+  0123,        // integer as octal
+  01912,       // should be quivalent to octal 1
+  -020000000000, // max negative integer as octal
+  017777777777  // max positive integer as octal
+);
+// various integer formats
+$int_formats = array( "%d", "%hd", "%ld", "%Ld", " %d", "%d ", "% d", "\t%d", "\n%d", "%4d", "%30d", "%[0-9]", "%*d");
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_ints as $int_value) {
+  fprintf($file_handle, $int_value);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($int_formats as $int_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$int_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation2.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different integer format types with different integer values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-214)
+}
+array(1) {
+  [0]=>
+  int(-214)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-214)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-214)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation20.phpt b/ext/standard/tests/file/fscanf_variation20.phpt
new file mode 100644 (file)
index 0000000..cbd7fbe
--- /dev/null
@@ -0,0 +1,1011 @@
+--TEST--
+Test fscanf() function: usage variations - char formats with integer values 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different integer values using different char format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different char format types with different integer values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation20.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid  integer vlaues
+$valid_ints = array(
+  0,
+  1,
+  -1,
+  -2147483648, // max negative integer value
+  -2147483647,
+  2147483647,  // max positive integer value
+  2147483640,
+  0x123B,      // integer as hexadecimal
+  0x12ab,
+  0Xfff,
+  0XFA,
+  -0x80000000, // max negative integer as hexadecimal
+  0x7fffffff,  // max postive integer as hexadecimal
+  0x7FFFFFFF,  // max postive integer as hexadecimal
+  0123,        // integer as octal
+  01912,       // should be quivalent to octal 1
+  -020000000000, // max negative integer as octal
+  017777777777  // max positive integer as octal
+);
+// various char formats
+$char_formats = array( "%c",
+                      "%hc", "%lc", "%Lc",
+                      " %c", "%c ", "% c",
+                      "\t%c", "\n%c", "%4c",
+                      "%30c", "%[a-bA-B@#$&]", "%*c");
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_ints as $int_value) {
+  @fprintf($file_handle, $int_value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different char formats
+foreach($char_formats as $char_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$char_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation20.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different char format types with different integer values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(2) "-1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation21.phpt b/ext/standard/tests/file/fscanf_variation21.phpt
new file mode 100644 (file)
index 0000000..a8eedd6
--- /dev/null
@@ -0,0 +1,862 @@
+--TEST--
+Test fscanf() function: usage variations - char formats with float values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan float values using different char format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different char format types with float values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation21.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of float type values
+
+$float_values = array (
+  -2147483649, 
+  2147483648,  
+  -0x80000001, // float value, beyond max negative int
+  0x800000001, // float value, beyond max positive int
+  020000000001, // float value, beyond max positive int
+  -020000000001, // float value, beyond max negative int
+  0.0,
+  -0.1,
+  1.0,
+  1e5,
+  -1e6,
+  1E8,
+  -1E9,
+  10.0000000000000000005,
+  10.5e+5
+);
+
+$char_formats = array( "%c",
+                       "%hc", "%lc", "%Lc",
+                      " %c", "%c ", "% c",
+                      "\t%c", "\n%c", "%4c",
+                      "%30c", "%[a-zA-Z@#$&0-9]", "%*c");
+
+$counter = 1;
+
+// writing to the file
+foreach($float_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different char formats
+foreach($char_formats as $char_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$char_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation21.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different char format types with float values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  string(1) "2"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(4) "3435"
+}
+array(1) {
+  [0]=>
+  string(4) "2147"
+}
+array(1) {
+  [0]=>
+  string(4) "-214"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(4) "1000"
+}
+array(1) {
+  [0]=>
+  string(4) "-100"
+}
+array(1) {
+  [0]=>
+  string(4) "1000"
+}
+array(1) {
+  [0]=>
+  string(4) "-100"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(4) "1050"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  string(11) "-2147483649"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(4) "-0.1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  string(8) "-1000000"
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  string(11) "-1000000000"
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation22.phpt b/ext/standard/tests/file/fscanf_variation22.phpt
new file mode 100644 (file)
index 0000000..d43226a
--- /dev/null
@@ -0,0 +1,220 @@
+--TEST--
+Test fscanf() function: usage variations - char formats with resource 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan resource type using different char format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different char format types with resource ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation22.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+
+// resource type variable
+$fp = fopen (__FILE__, "r");
+$dfp = opendir ( dirname(__FILE__) );
+  
+// array of resource types
+$resource_types = array (
+  $fp,
+  $dfp
+);
+
+$char_formats = array( "%c", 
+                      "%hc", "%lc", "%Lc",
+                      " %c", "%c ", "% c",
+                      "\t%c", "\n%c", "%4c",
+                      "%30c", "%[a-zA-Z@#$&0-9]", "%*c");
+
+$counter = 1;
+
+// writing to the file
+foreach($resource_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different char formats
+foreach($char_formats as $char_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$char_format) );
+  }
+  $counter++;
+}
+
+// closing the resources
+fclose($fp);
+fclose($dfp);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation22.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different char format types with resource ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+array(1) {
+  [0]=>
+  string(1) "R"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(4) "Reso"
+}
+array(1) {
+  [0]=>
+  string(4) "Reso"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+array(1) {
+  [0]=>
+  string(8) "Resource"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation23.phpt b/ext/standard/tests/file/fscanf_variation23.phpt
new file mode 100644 (file)
index 0000000..86298ce
--- /dev/null
@@ -0,0 +1,711 @@
+--TEST--
+Test fscanf() function: usage variations - char formats with arrays 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan arrays using different char format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different char format types with arrays ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation23.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array types
+$array_types = array (
+  array(),
+  array(0),
+  array(1),
+  array(NULL),
+  array(null),
+  array("string"),
+  array(true),
+  array(TRUE),
+  array(false),
+  array(FALSE),
+  array(1,2,3,4),
+  array(1 => "One", "two" => 2)
+);
+
+$char_formats = array( "%c",
+                      "%hc", "%lc", "%Lc",
+                      " %c", "%c ", "% c",
+                      "\t%c", "\n%c", "%4c", 
+                      "%30c", "%[a-zA-Z@#$&0-9]", "%*c");
+
+$counter = 1;
+
+// writing to the file
+foreach($array_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different char formats
+foreach($char_formats as $char_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$char_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation23.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different char format types with arrays ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+array(1) {
+  [0]=>
+  string(1) "A"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+array(1) {
+  [0]=>
+  string(4) "Arra"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+array(1) {
+  [0]=>
+  string(5) "Array"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation24.phpt b/ext/standard/tests/file/fscanf_variation24.phpt
new file mode 100644 (file)
index 0000000..6474ce8
--- /dev/null
@@ -0,0 +1,993 @@
+--TEST--
+Test fscanf() function: usage variations - char formats with strings
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan strings using different char format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different char format types with strings ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation24.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of strings
+$strings = array (
+  "",
+  '',
+  "0",
+  '0',
+  "1",
+  '1',
+  "\x01",
+  '\x01',
+  "\01",
+  '\01',
+  'string',
+  "string",
+  "true",
+  "FALSE",
+  'false',
+  'TRUE',
+  "NULL",
+  'null'
+);
+
+$char_formats = array( "%c",
+                      "%hc", "%lc", "%Lc", 
+                      " %c", "%c ", "% c",
+                      "\t%c", "\n%c", "%4c", 
+                      "%30c", "%[a-zA-Z@#$&0-9]", "%*c");
+
+$counter = 1;
+
+// writing to the file
+foreach($strings as $string) {
+  @fprintf($file_handle, $string);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different char formats
+foreach($char_formats as $char_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$char_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation24.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different char format types with strings ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "t"
+}
+array(1) {
+  [0]=>
+  string(1) "F"
+}
+array(1) {
+  [0]=>
+  string(1) "f"
+}
+array(1) {
+  [0]=>
+  string(1) "T"
+}
+array(1) {
+  [0]=>
+  string(1) "N"
+}
+array(1) {
+  [0]=>
+  string(1) "n"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "t"
+}
+array(1) {
+  [0]=>
+  string(1) "F"
+}
+array(1) {
+  [0]=>
+  string(1) "f"
+}
+array(1) {
+  [0]=>
+  string(1) "T"
+}
+array(1) {
+  [0]=>
+  string(1) "N"
+}
+array(1) {
+  [0]=>
+  string(1) "n"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "t"
+}
+array(1) {
+  [0]=>
+  string(1) "F"
+}
+array(1) {
+  [0]=>
+  string(1) "f"
+}
+array(1) {
+  [0]=>
+  string(1) "T"
+}
+array(1) {
+  [0]=>
+  string(1) "N"
+}
+array(1) {
+  [0]=>
+  string(1) "n"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "t"
+}
+array(1) {
+  [0]=>
+  string(1) "F"
+}
+array(1) {
+  [0]=>
+  string(1) "f"
+}
+array(1) {
+  [0]=>
+  string(1) "T"
+}
+array(1) {
+  [0]=>
+  string(1) "N"
+}
+array(1) {
+  [0]=>
+  string(1) "n"
+}
+bool(false)
+
+-- iteration 5 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "t"
+}
+array(1) {
+  [0]=>
+  string(1) "F"
+}
+array(1) {
+  [0]=>
+  string(1) "f"
+}
+array(1) {
+  [0]=>
+  string(1) "T"
+}
+array(1) {
+  [0]=>
+  string(1) "N"
+}
+array(1) {
+  [0]=>
+  string(1) "n"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "t"
+}
+array(1) {
+  [0]=>
+  string(1) "F"
+}
+array(1) {
+  [0]=>
+  string(1) "f"
+}
+array(1) {
+  [0]=>
+  string(1) "T"
+}
+array(1) {
+  [0]=>
+  string(1) "N"
+}
+array(1) {
+  [0]=>
+  string(1) "n"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "t"
+}
+array(1) {
+  [0]=>
+  string(1) "F"
+}
+array(1) {
+  [0]=>
+  string(1) "f"
+}
+array(1) {
+  [0]=>
+  string(1) "T"
+}
+array(1) {
+  [0]=>
+  string(1) "N"
+}
+array(1) {
+  [0]=>
+  string(1) "n"
+}
+bool(false)
+
+-- iteration 9 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(1) "\"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "s"
+}
+array(1) {
+  [0]=>
+  string(1) "t"
+}
+array(1) {
+  [0]=>
+  string(1) "F"
+}
+array(1) {
+  [0]=>
+  string(1) "f"
+}
+array(1) {
+  [0]=>
+  string(1) "T"
+}
+array(1) {
+  [0]=>
+  string(1) "N"
+}
+array(1) {
+  [0]=>
+  string(1) "n"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(4) "\x01"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(3) "\01"
+}
+array(1) {
+  [0]=>
+  string(4) "stri"
+}
+array(1) {
+  [0]=>
+  string(4) "stri"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+array(1) {
+  [0]=>
+  string(4) "FALS"
+}
+array(1) {
+  [0]=>
+  string(4) "fals"
+}
+array(1) {
+  [0]=>
+  string(4) "TRUE"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(4) "\x01"
+}
+array(1) {
+  [0]=>
+  string(1) "\ 1"
+}
+array(1) {
+  [0]=>
+  string(3) "\01"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(5) "false"
+}
+array(1) {
+  [0]=>
+  string(4) "TRUE"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(6) "string"
+}
+array(1) {
+  [0]=>
+  string(4) "true"
+}
+array(1) {
+  [0]=>
+  string(5) "FALSE"
+}
+array(1) {
+  [0]=>
+  string(5) "false"
+}
+array(1) {
+  [0]=>
+  string(4) "TRUE"
+}
+array(1) {
+  [0]=>
+  string(4) "NULL"
+}
+array(1) {
+  [0]=>
+  string(4) "null"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation25.phpt b/ext/standard/tests/file/fscanf_variation25.phpt
new file mode 100644 (file)
index 0000000..3a4a098
--- /dev/null
@@ -0,0 +1,293 @@
+--TEST--
+Test fscanf() function: usage variations - char formats with boolean 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan boolean data using different char format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different char format types with boolean data ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation25.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of boolean types
+$bool_types = array (
+  true,
+  false,
+  TRUE,
+  FALSE,
+);
+
+$char_formats = array( "%c",
+                      "%hc", "%lc", "%Lc",
+                      " %c", "%c ", "% c",
+                      "\t%c", "\n%c", "%4c", 
+                      "%30c", "%[a-zA-Z@#$&0-9]", "%*c");
+
+$counter = 1;
+
+// writing to the file
+foreach($bool_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different char formats
+foreach($char_formats as $char_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$char_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation25.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different char format types with boolean data ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+NULL
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(0) ""
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation26.phpt b/ext/standard/tests/file/fscanf_variation26.phpt
new file mode 100644 (file)
index 0000000..1741a26
--- /dev/null
@@ -0,0 +1,355 @@
+--TEST--
+Test fscanf() function: usage variations - char formats with chars 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different chars using different char format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different char format types with chars ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation26.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of chars
+$char_types = array( 'a', "a", 67, -67, 99 );
+
+$char_formats = array( "%c",
+                      "%hc", "%lc", "%Lc",
+                      " %c", "%c ", "% c",
+                      "\t%c", "\n%c", "%4c",
+                      "%30c", "%[a-zA-Z@#$&0-9]", "%*c");
+
+$counter = 1;
+
+// writing to the file
+foreach($char_types as $char) {
+  @fprintf($file_handle, $char);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different char formats
+foreach($char_formats as $char_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$char_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation26.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different char format types with chars ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "9"
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "9"
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "9"
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "9"
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "9"
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "9"
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "9"
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+array(1) {
+  [0]=>
+  string(1) "9"
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(2) "67"
+}
+array(1) {
+  [0]=>
+  string(3) "-67"
+}
+array(1) {
+  [0]=>
+  string(2) "99"
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(2) "67"
+}
+array(1) {
+  [0]=>
+  string(3) "-67"
+}
+array(1) {
+  [0]=>
+  string(2) "99"
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+array(1) {
+  [0]=>
+  string(2) "67"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "99"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation27.phpt b/ext/standard/tests/file/fscanf_variation27.phpt
new file mode 100644 (file)
index 0000000..e335075
--- /dev/null
@@ -0,0 +1,1012 @@
+--TEST--
+Test fscanf() function: usage variations - octal formats with integer values 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different integer values using different octal format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different octal format types with different integer values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation27.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid  integer vlaues
+$valid_ints = array(
+  0,
+  1,
+  -1,
+  -2147483648, // max negative integer value
+  -2147483647,
+  2147483647,  // max positive integer value
+  2147483640,
+  0x123B,      // integer as hexadecimal
+  0x12ab,
+  0Xfff,
+  0XFA,
+  -0x80000000, // max negative integer as hexadecimal
+  0x7fffffff,  // max postive integer as hexadecimal
+  0x7FFFFFFF,  // max postive integer as hexadecimal
+  0123,        // integer as octal
+  01912,       // should be quivalent to octal 1
+  -020000000000, // max negative integer as octal
+  017777777777  // max positive integer as octal
+);
+// various octal formats
+$octal_formats = array( "%o",
+                        "%ho", "%lo", "%Lo",
+                        " %o", "%o ", "% o",
+                        "\t%o", "\n%o", "%4o",
+                        "%30o", "%[0-7]", "%*o"
+                 );
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_ints as $int_value) {
+  @fprintf($file_handle, $int_value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different octal formats
+foreach($octal_formats as $octal_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$octal_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation27.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different octal format types with different integer values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-140)
+}
+array(1) {
+  [0]=>
+  int(-140)
+}
+array(1) {
+  [0]=>
+  int(1127)
+}
+array(1) {
+  [0]=>
+  int(1127)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-140)
+}
+array(1) {
+  [0]=>
+  int(1127)
+}
+array(1) {
+  [0]=>
+  int(1127)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-140)
+}
+array(1) {
+  [0]=>
+  int(1127)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(2487)
+}
+array(1) {
+  [0]=>
+  int(319)
+}
+array(1) {
+  [0]=>
+  int(32)
+}
+array(1) {
+  [0]=>
+  int(168)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(5) "21474"
+}
+array(1) {
+  [0]=>
+  string(5) "21474"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(3) "477"
+}
+array(1) {
+  [0]=>
+  string(2) "40"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(5) "21474"
+}
+array(1) {
+  [0]=>
+  string(5) "21474"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(5) "21474"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation28.phpt b/ext/standard/tests/file/fscanf_variation28.phpt
new file mode 100644 (file)
index 0000000..6cb0dc6
--- /dev/null
@@ -0,0 +1,863 @@
+--TEST--
+Test fscanf() function: usage variations - octal formats with float values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan float values using different octal format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different octal format types with float values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation28.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of float type values
+
+$float_values = array (
+  -2147483649, 
+  2147483648,  
+  -0x80000001, // float value, beyond max negative int
+  0x800000001, // float value, beyond max positive int
+  020000000001, // float value, beyond max positive int
+  -020000000001, // float value, beyond max negative int
+  0.0,
+  -0.1,
+  1.0,
+  1e5,
+  -1e6,
+  1E8,
+  -1E9,
+  10.0000000000000000005,
+  10.5e+5
+);
+
+$octal_formats = array( "%o",
+                        "%ho", "%lo", "%Lo",
+                        " %o", "%o ", "% o",
+                        "\t%o", "\n%o", "%4o",
+                        "%30o", "%[0-7]", "%*o"
+                 );
+
+$counter = 1;
+
+// writing to the file
+foreach($float_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different octal formats
+foreach($octal_formats as $octal_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$octal_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation28.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different octal format types with float values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(-140)
+}
+array(1) {
+  [0]=>
+  int(1127)
+}
+array(1) {
+  [0]=>
+  int(-140)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(1127)
+}
+array(1) {
+  [0]=>
+  int(-140)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(512)
+}
+array(1) {
+  [0]=>
+  int(-64)
+}
+array(1) {
+  [0]=>
+  int(512)
+}
+array(1) {
+  [0]=>
+  int(-64)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(552)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(1821)
+}
+array(1) {
+  [0]=>
+  int(9020)
+}
+array(1) {
+  [0]=>
+  int(-9020)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(32768)
+}
+array(1) {
+  [0]=>
+  int(-262144)
+}
+array(1) {
+  [0]=>
+  int(16777216)
+}
+array(1) {
+  [0]=>
+  int(-134217728)
+}
+array(1) {
+  [0]=>
+  int(8)
+}
+array(1) {
+  [0]=>
+  int(282624)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(5) "21474"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(4) "3435"
+}
+array(1) {
+  [0]=>
+  string(5) "21474"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation29.phpt b/ext/standard/tests/file/fscanf_variation29.phpt
new file mode 100644 (file)
index 0000000..89f82e9
--- /dev/null
@@ -0,0 +1,221 @@
+--TEST--
+Test fscanf() function: usage variations - octal formats with resource 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan resource type using different octal format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different octal format types with resource ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation29.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+
+// resource type variable
+$fp = fopen (__FILE__, "r");
+$dfp = opendir ( dirname(__FILE__) );
+  
+// array of resource types
+$resource_types = array (
+  $fp,
+  $dfp
+);
+
+$octal_formats = array(  "%o", 
+                         "%ho", "%lo", "%Lo",
+                        " %o", "%o ", "% o",
+                        "\t%o", "\n%o", "%4o",
+                        "%30o", "%[0-9]", "%*o"
+                );
+
+$counter = 1;
+
+// writing to the file
+foreach($resource_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different octal formats
+foreach($octal_formats as $octal_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$octal_format) );
+  }
+  $counter++;
+}
+
+// closing the resources
+fclose($fp);
+fclose($dfp);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation29.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different octal format types with resource ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation3.phpt b/ext/standard/tests/file/fscanf_variation3.phpt
new file mode 100644 (file)
index 0000000..8342c18
--- /dev/null
@@ -0,0 +1,858 @@
+--TEST--
+Test fscanf() function: usage variations - integer formats with float values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan float values using different integer format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different integer format types with float values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation3.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of float type values
+
+$float_values = array (
+  -2147483649, 
+  2147483648,  
+  -0x80000001, // float value, beyond max negative int
+  0x800000001, // float value, beyond max positive int
+  020000000001, // float value, beyond max positive int
+  -020000000001, // float value, beyond max negative int
+  0.0,
+  -0.1,
+  1.0,
+  1e5,
+  -1e6,
+  1E8,
+  -1E9,
+  10.0000000000000000005,
+  10.5e+5
+);
+
+$int_formats = array( "%d", "%hd", "%ld", "%Ld", " %d", "%d ", "% d", "\t%d", "\n%d", "%4d", "%30d", "%[0-9]", "%*d");
+
+$counter = 1;
+
+// writing to the file
+foreach($float_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($int_formats as $int_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$int_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation3.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different integer format types with float values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(-214)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(-214)
+}
+array(1) {
+  [0]=>
+  int(3435)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(-214)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1000)
+}
+array(1) {
+  [0]=>
+  int(-100)
+}
+array(1) {
+  [0]=>
+  int(1000)
+}
+array(1) {
+  [0]=>
+  int(-100)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  int(-1000000)
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  int(-1000000000)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation30.phpt b/ext/standard/tests/file/fscanf_variation30.phpt
new file mode 100644 (file)
index 0000000..ab95382
--- /dev/null
@@ -0,0 +1,712 @@
+--TEST--
+Test fscanf() function: usage variations - octal formats with arrays 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan arrays using different octal format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different octal format types with arrays ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation30.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array types
+$array_types = array (
+  array(),
+  array(0),
+  array(1),
+  array(NULL),
+  array(null),
+  array("string"),
+  array(true),
+  array(TRUE),
+  array(false),
+  array(FALSE),
+  array(1,2,3,4),
+  array(1 => "One", "two" => 2)
+);
+
+$octal_formats = array ( "%o",
+                        "%ho", "%lo", "%Lo",
+                        " %o", "%o ", "% o",
+                        "\t%o", "\n%o", "%4o",
+                        "%30o", "%[0-7]", "%*o"
+                );
+
+$counter = 1;
+
+// writing to the file
+foreach($array_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different octal formats
+foreach($octal_formats as $octal_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$octal_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation30.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different octal format types with arrays ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation31.phpt b/ext/standard/tests/file/fscanf_variation31.phpt
new file mode 100644 (file)
index 0000000..ab14f52
--- /dev/null
@@ -0,0 +1,945 @@
+--TEST--
+Test fscanf() function: usage variations - octal formats with strings
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan strings using different octal format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different octal format types with strings ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation31.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of strings
+$strings = array (
+  "",
+  '',
+  "0",
+  '0',
+  "1",
+  '1',
+  "\x01",
+  '\x01',
+  "\01",
+  '\01',
+  'string',
+  "string",
+  "true",
+  "FALSE",
+  'false',
+  'TRUE',
+  "NULL",
+  'null'
+);
+
+$octal_formats = array( "%o", "%ho", "%lo", "%Lo", " %o", "%o ", "% o", "\t%o", "\n%o", "%4o", "%30o", "%[0-9]", "%*o");
+
+$counter = 1;
+
+// writing to the file
+foreach($strings as $string) {
+  @fprintf($file_handle, $string);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different octal formats
+foreach($octal_formats as $octal_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$octal_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation31.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different octal format types with strings ***
+
+-- iteration 1 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+NULL
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation32.phpt b/ext/standard/tests/file/fscanf_variation32.phpt
new file mode 100644 (file)
index 0000000..ba92c62
--- /dev/null
@@ -0,0 +1,250 @@
+--TEST--
+Test fscanf() function: usage variations - octal formats with boolean 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan boolean data using different octal format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different octal format types with boolean data ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation32.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of boolean types
+$bool_types = array (
+  true,
+  false,
+  TRUE,
+  FALSE,
+);
+
+$octal_formats = array(  "%o",
+                        "%ho", "%lo", "%Lo",
+                        " %o", "%o ", "% o",
+                        "\t%o", "\n%o", "%4o",
+                        "%30o", "%[0-7]", "%*o"
+                );
+
+$counter = 1;
+
+// writing to the file
+foreach($bool_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different octal formats
+foreach($octal_formats as $octal_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$octal_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation32.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different octal format types with boolean data ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+NULL
+array(0) {
+}
+NULL
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation33.phpt b/ext/standard/tests/file/fscanf_variation33.phpt
new file mode 100644 (file)
index 0000000..2f0afd0
--- /dev/null
@@ -0,0 +1,1012 @@
+--TEST--
+Test fscanf() function: usage variations - hexa formats with integer values 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different integer values using different hexa format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different hexa format types with different integer values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation33.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid  integer vlaues
+$valid_ints = array(
+  0,
+  1,
+  -1,
+  -2147483648, // max negative integer value
+  -2147483647,
+  2147483647,  // max positive integer value
+  2147483640,
+  0x123B,      // integer as hexadecimal
+  0x12ab,
+  0Xfff,
+  0XFA,
+  -0x80000000, // max negative integer as hexadecimal
+  0x7fffffff,  // max postive integer as hexadecimal
+  0x7FFFFFFF,  // max postive integer as hexadecimal
+  0123,        // integer as octal
+  01912,       // should be quivalent to octal 1
+  -020000000000, // max negative integer as octal
+  017777777777  // max positive integer as octal
+);
+// various hexa formats
+$hexa_formats = array(  "%x",
+                       "%xx", "%lx", "%Lx",
+                       " %x", "%x ", "% x",
+                       "\t%x", "\n%x", "%4x",
+                       "%30x", "%[0-9A-Fa-f]", "%*x"
+               );
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_ints as $int_value) {
+  @fprintf($file_handle, $int_value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different hexa formats
+foreach($hexa_formats as $hexa_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$hexa_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation33.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different hexa format types with different integer values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-532)
+}
+array(1) {
+  [0]=>
+  int(-532)
+}
+array(1) {
+  [0]=>
+  int(8519)
+}
+array(1) {
+  [0]=>
+  int(8519)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-532)
+}
+array(1) {
+  [0]=>
+  int(8519)
+}
+array(1) {
+  [0]=>
+  int(8519)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-532)
+}
+array(1) {
+  [0]=>
+  int(8519)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(18023)
+}
+array(1) {
+  [0]=>
+  int(18297)
+}
+array(1) {
+  [0]=>
+  int(16533)
+}
+array(1) {
+  [0]=>
+  int(592)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(131)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation34.phpt b/ext/standard/tests/file/fscanf_variation34.phpt
new file mode 100644 (file)
index 0000000..8a17bc2
--- /dev/null
@@ -0,0 +1,862 @@
+--TEST--
+Test fscanf() function: usage variations - hexa formats with float values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan float values using different hexa format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different hexa format types with float values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation34.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of float type values
+
+$float_values = array (
+  -2147483649, 
+  2147483648,  
+  -0x80000001, // float value, beyond max negative int
+  0x800000001, // float value, beyond max positive int
+  020000000001, // float value, beyond max positive int
+  -020000000001, // float value, beyond max negative int
+  0.0,
+  -0.1,
+  1.0,
+  1e5,
+  -1e6,
+  1E8,
+  -1E9,
+  10.0000000000000000005,
+  10.5e+5
+);
+
+$hexa_formats = array(         "%x",
+                       "%hx", "%lx", "%Lx",
+                       " %x", "%x ", "% x",
+                       "\t%x", "\n%x", "%4x",
+                       "%30x", "%[0-9A-Za-z]", "%*x");
+
+$counter = 1;
+
+// writing to the file
+foreach($float_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different hexa formats
+foreach($hexa_formats as $hexa_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$hexa_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation34.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different hexa format types with float values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(-532)
+}
+array(1) {
+  [0]=>
+  int(8519)
+}
+array(1) {
+  [0]=>
+  int(-532)
+}
+array(1) {
+  [0]=>
+  int(13365)
+}
+array(1) {
+  [0]=>
+  int(8519)
+}
+array(1) {
+  [0]=>
+  int(-532)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(4096)
+}
+array(1) {
+  [0]=>
+  int(-256)
+}
+array(1) {
+  [0]=>
+  int(4096)
+}
+array(1) {
+  [0]=>
+  int(-256)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(4176)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1048576)
+}
+array(1) {
+  [0]=>
+  int(-16777216)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(-2147483648)
+}
+array(1) {
+  [0]=>
+  int(16)
+}
+array(1) {
+  [0]=>
+  int(17104896)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation35.phpt b/ext/standard/tests/file/fscanf_variation35.phpt
new file mode 100644 (file)
index 0000000..d259f12
--- /dev/null
@@ -0,0 +1,216 @@
+--TEST--
+Test fscanf() function: usage variations - hexa formats with resource 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan resource type using different hexa format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different hexa format types with resource ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation35.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+
+// resource type variable
+$fp = fopen (__FILE__, "r");
+$dfp = opendir ( dirname(__FILE__) );
+  
+// array of resource types
+$resource_types = array (
+  $fp,
+  $dfp
+);
+
+$hexa_formats = array( "%x", "%hx", "%lx", "%Lx", " %x", "%x ", "% x", "\t%x", "\n%x", "%4x", "%30x", "%[0-9]", "%*x");
+
+$counter = 1;
+
+// writing to the file
+foreach($resource_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different hexa formats
+foreach($hexa_formats as $hexa_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$hexa_format) );
+  }
+  $counter++;
+}
+
+// closing the resources
+fclose($fp);
+fclose($dfp);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation35.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different hexa format types with resource ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation36.phpt b/ext/standard/tests/file/fscanf_variation36.phpt
new file mode 100644 (file)
index 0000000..1e5f4e6
--- /dev/null
@@ -0,0 +1,707 @@
+--TEST--
+Test fscanf() function: usage variations - hexa formats with arrays 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan arrays using different hexa format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different hexa format types with arrays ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation36.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array types
+$array_types = array (
+  array(),
+  array(0),
+  array(1),
+  array(NULL),
+  array(null),
+  array("string"),
+  array(true),
+  array(TRUE),
+  array(false),
+  array(FALSE),
+  array(1,2,3,4),
+  array(1 => "One", "two" => 2)
+);
+
+$hexa_formats = array( "%x", "%hx", "%lx", "%Lx", " %x", "%x ", "% x", "\t%x", "\n%x", "%4x", "%30x", "%[0-9]", "%*x");
+
+$counter = 1;
+
+// writing to the file
+foreach($array_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different hexa formats
+foreach($hexa_formats as $hexa_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$hexa_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation36.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different hexa format types with arrays ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation37.phpt b/ext/standard/tests/file/fscanf_variation37.phpt
new file mode 100644 (file)
index 0000000..aa07f58
--- /dev/null
@@ -0,0 +1,945 @@
+--TEST--
+Test fscanf() function: usage variations - hexa formats with strings
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan strings using different hexa format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different hexa format types with strings ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation37.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of strings
+$strings = array (
+  "",
+  '',
+  "0",
+  '0',
+  "1",
+  '1',
+  "\x01",
+  '\x01',
+  "\01",
+  '\01',
+  'string',
+  "string",
+  "true",
+  "FALSE",
+  'false',
+  'TRUE',
+  "NULL",
+  'null'
+);
+
+$hexa_formats = array( "%x", "%hx", "%lx", "%Lx", " %x", "%x ", "% x", "\t%x", "\n%x", "%4x", "%30x", "%[0-9]", "%*x");
+
+$counter = 1;
+
+// writing to the file
+foreach($strings as $string) {
+  @fprintf($file_handle, $string);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different hexa formats
+foreach($hexa_formats as $hexa_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$hexa_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation37.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different hexa format types with strings ***
+
+-- iteration 1 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+NULL
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation38.phpt b/ext/standard/tests/file/fscanf_variation38.phpt
new file mode 100644 (file)
index 0000000..6bb868c
--- /dev/null
@@ -0,0 +1,245 @@
+--TEST--
+Test fscanf() function: usage variations - hexa formats with boolean 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan boolean data using different hexa format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different hexa format types with boolean data ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation38.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of boolean types
+$bool_types = array (
+  true,
+  false,
+  TRUE,
+  FALSE,
+);
+
+$hexa_formats = array( "%x", "%hx", "%lx", "%Lx", " %x", "%x ", "% x", "\t%x", "\n%x", "%4x", "%30x", "%[0-9]", "%*x");
+
+$counter = 1;
+
+// writing to the file
+foreach($bool_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different hexa formats
+foreach($hexa_formats as $hexa_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$hexa_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation38.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different hexa format types with boolean data ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+NULL
+array(0) {
+}
+NULL
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation39.phpt b/ext/standard/tests/file/fscanf_variation39.phpt
new file mode 100644 (file)
index 0000000..7c11428
--- /dev/null
@@ -0,0 +1,1007 @@
+--TEST--
+Test fscanf() function: usage variations - unsigned int formats with integer values 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different integer values using different unsigned int format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different unsigned int format types with different integer values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation39.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid  integer values
+$valid_ints = array(
+  0,
+  1,
+  -1,
+  -2147483648, // max negative integer value
+  -2147483647,
+  2147483647,  // max positive integer value
+  2147483640,
+  0x123B,      // integer as hexadecimal
+  0x12ab,
+  0Xfff,
+  0XFA,
+  -0x80000000, // max negative integer as hexadecimal
+  0x7fffffff,  // max postive integer as hexadecimal
+  0x7FFFFFFF,  // max postive integer as hexadecimal
+  0123,        // integer as octal
+  01912,       // should be quivalent to octal 1
+  -020000000000, // max negative integer as octal
+  017777777777  // max positive integer as octal
+);
+// various unsigned int formats
+$unsigned_formats = array( "%u", "%hu", "%lu", "%Lu", " %u", "%u ", "% u", "\t%u", "\n%u", "%4u", "%30u", "%[0-9]", "%*u");
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_ints as $int_value) {
+  @fprintf($file_handle, $int_value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different unsigned int formats
+foreach($unsigned_formats as $unsigned_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$unsigned_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation39.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different unsigned int format types with different integer values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "4294967082"
+}
+array(1) {
+  [0]=>
+  string(10) "4294967082"
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967082"
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967082"
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483640)
+}
+array(1) {
+  [0]=>
+  int(4667)
+}
+array(1) {
+  [0]=>
+  int(4779)
+}
+array(1) {
+  [0]=>
+  int(4095)
+}
+array(1) {
+  [0]=>
+  int(250)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(83)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation4.phpt b/ext/standard/tests/file/fscanf_variation4.phpt
new file mode 100644 (file)
index 0000000..591836d
--- /dev/null
@@ -0,0 +1,217 @@
+--TEST--
+Test fscanf() function: usage variations - integer formats with resource 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan resource type using different integer format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different integer format types with resource ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation4.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// non-integer type of data
+
+// resource type variable
+$fp = fopen (__FILE__, "r");
+$dfp = opendir ( dirname(__FILE__) );
+  
+// array of resource types
+$resource_types = array (
+  $fp,
+  $dfp
+);
+
+$int_formats = array( "%d", "%hd", "%ld", "%Ld", " %d", "%d ", "% d", "\t%d", "\n%d", "%4d", "%30d", "%[0-9]", "%*d");
+
+$counter = 1;
+
+// writing to the file
+foreach($resource_types as $value) {
+  fprintf($file_handle, $value);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($int_formats as $int_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$int_format) );
+  }
+  $counter++;
+}
+
+// closing the resources
+fclose($fp);
+fclose($dfp);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation4.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different integer format types with resource ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation40.phpt b/ext/standard/tests/file/fscanf_variation40.phpt
new file mode 100644 (file)
index 0000000..31cfbfe
--- /dev/null
@@ -0,0 +1,858 @@
+--TEST--
+Test fscanf() function: usage variations - unsigned formats with float values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan float values using different unsigned format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different unsigned format types with float values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation40.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of float type values
+
+$float_values = array (
+  -2147483649, 
+  2147483648,  
+  -0x80000001, // float value, beyond max negative int
+  0x800000001, // float value, beyond max positive int
+  020000000001, // float value, beyond max positive int
+  -020000000001, // float value, beyond max negative int
+  0.0,
+  -0.1,
+  1.0,
+  1e5,
+  -1e6,
+  1E8,
+  -1E9,
+  10.0000000000000000005,
+  10.5e+5
+);
+
+$unsigned_formats = array( "%u", "%hu", "%lu", "%Lu", " %u", "%u ", "% u", "\t%u", "\n%u", "%4u", "%30u", "%[0-9]", "%*u");
+
+$counter = 1;
+
+// writing to the file
+foreach($float_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different unsigned formats
+foreach($unsigned_formats as $unsigned_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$unsigned_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation40.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different unsigned format types with float values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  string(10) "4294967082"
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967082"
+}
+array(1) {
+  [0]=>
+  int(3435)
+}
+array(1) {
+  [0]=>
+  int(2147)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967082"
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1000)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967196"
+}
+array(1) {
+  [0]=>
+  int(1000)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967196"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  string(10) "4294967295"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  int(2147483647)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(100000)
+}
+array(1) {
+  [0]=>
+  string(10) "4293967296"
+}
+array(1) {
+  [0]=>
+  int(100000000)
+}
+array(1) {
+  [0]=>
+  string(10) "3294967296"
+}
+array(1) {
+  [0]=>
+  int(10)
+}
+array(1) {
+  [0]=>
+  int(1050000)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation41.phpt b/ext/standard/tests/file/fscanf_variation41.phpt
new file mode 100644 (file)
index 0000000..76faf0b
--- /dev/null
@@ -0,0 +1,216 @@
+--TEST--
+Test fscanf() function: usage variations - unsigned formats with resource 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan resource type using different unsigned format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different unsigned format types with resource ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation41.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+
+// resource type variable
+$fp = fopen (__FILE__, "r");
+$dfp = opendir ( dirname(__FILE__) );
+  
+// array of resource types
+$resource_types = array (
+  $fp,
+  $dfp
+);
+
+$unsigned_formats = array( "%u", "%hu", "%lu", "%Lu", " %u", "%u ", "% u", "\t%u", "\n%u", "%4u", "%30u", "%[0-9]", "%*u");
+
+$counter = 1;
+
+// writing to the file
+foreach($resource_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different unsigned formats
+foreach($unsigned_formats as $unsigned_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$unsigned_format) );
+  }
+  $counter++;
+}
+
+// closing the resources
+fclose($fp);
+fclose($dfp);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation41.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different unsigned format types with resource ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation42.phpt b/ext/standard/tests/file/fscanf_variation42.phpt
new file mode 100644 (file)
index 0000000..1caf10c
--- /dev/null
@@ -0,0 +1,707 @@
+--TEST--
+Test fscanf() function: usage variations - unsigned formats with arrays 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan arrays using different unsigned format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different unsigned format types with arrays ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation42.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array types
+$array_types = array (
+  array(),
+  array(0),
+  array(1),
+  array(NULL),
+  array(null),
+  array("string"),
+  array(true),
+  array(TRUE),
+  array(false),
+  array(FALSE),
+  array(1,2,3,4),
+  array(1 => "One", "two" => 2)
+);
+
+$unsigned_formats = array( "%u", "%hu", "%lu", "%Lu", " %u", "%u ", "% u", "\t%u", "\n%u", "%4u", "%30u", "%[0-9]", "%*u");
+
+$counter = 1;
+
+// writing to the file
+foreach($array_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different unsigned formats
+foreach($unsigned_formats as $unsigned_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$unsigned_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation42.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different unsigned format types with arrays ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation43.phpt b/ext/standard/tests/file/fscanf_variation43.phpt
new file mode 100644 (file)
index 0000000..1b5b758
--- /dev/null
@@ -0,0 +1,945 @@
+--TEST--
+Test fscanf() function: usage variations - unsigned formats with strings
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan strings using different unsigned format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different unsigned format types with strings ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation43.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of strings
+$strings = array (
+  "",
+  '',
+  "0",
+  '0',
+  "1",
+  '1',
+  "\x01",
+  '\x01',
+  "\01",
+  '\01',
+  'string',
+  "string",
+  "true",
+  "FALSE",
+  'false',
+  'TRUE',
+  "NULL",
+  'null'
+);
+
+$unsigned_formats = array( "%u", "%hu", "%lu", "%Lu", " %u", "%u ", "% u", "\t%u", "\n%u", "%4u", "%30u", "%[0-9]", "%*u");
+
+$counter = 1;
+
+// writing to the file
+foreach($strings as $string) {
+  @fprintf($file_handle, $string);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different unsigned formats
+foreach($unsigned_formats as $unsigned_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$unsigned_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation43.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different unsigned format types with strings ***
+
+-- iteration 1 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+NULL
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation44.phpt b/ext/standard/tests/file/fscanf_variation44.phpt
new file mode 100644 (file)
index 0000000..1f5b3bc
--- /dev/null
@@ -0,0 +1,245 @@
+--TEST--
+Test fscanf() function: usage variations - unsigned formats with boolean 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan boolean data using different unsigned format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different unsigned format types with boolean data ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation44.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of boolean types
+$bool_types = array (
+  true,
+  false,
+  TRUE,
+  FALSE,
+);
+
+$unsigned_formats = array( "%u", "%hu", "%lu", "%Lu", " %u", "%u ", "% u", "\t%u", "\n%u", "%4u", "%30u", "%[0-9]", "%*u");
+
+$counter = 1;
+
+// writing to the file
+foreach($bool_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different unsigned formats
+foreach($unsigned_formats as $unsigned_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$unsigned_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation44.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different unsigned format types with boolean data ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+NULL
+array(0) {
+}
+NULL
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation45.phpt b/ext/standard/tests/file/fscanf_variation45.phpt
new file mode 100644 (file)
index 0000000..13655cb
--- /dev/null
@@ -0,0 +1,1007 @@
+--TEST--
+Test fscanf() function: usage variations - scientific formats with integer values 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different integer values using different scientific format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different scientific format types with different integer values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation45.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid  integer vlaues
+$valid_ints = array(
+  0,
+  1,
+  -1,
+  -2147483648, // max negative integer value
+  -2147483647,
+  2147483647,  // max positive integer value
+  2147483640,
+  0x123B,      // integer as hexadecimal
+  0x12ab,
+  0Xfff,
+  0XFA,
+  -0x80000000, // max negative integer as hexadecimal
+  0x7fffffff,  // max postive integer as hexadecimal
+  0x7FFFFFFF,  // max postive integer as hexadecimal
+  0123,        // integer as octal
+  01912,       // should be quivalent to octal 1
+  -020000000000, // max negative integer as octal
+  017777777777  // max positive integer as octal
+);
+// various scientific formats
+$scientific_formats = array( "%e", "%he", "%le", "%Le", " %e", "%e ", "% e", "\t%e", "\n%e", "%4e", "%30e", "%[0-1]", "%*e");
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_ints as $int_value) {
+  @fprintf($file_handle, $int_value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different scientific formats
+foreach($scientific_formats as $scientific_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$scientific_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation45.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different scientific format types with different integer values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation46.phpt b/ext/standard/tests/file/fscanf_variation46.phpt
new file mode 100644 (file)
index 0000000..9affb5e
--- /dev/null
@@ -0,0 +1,858 @@
+--TEST--
+Test fscanf() function: usage variations - scientific formats with float values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan float values using different scientific format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different scientific format types with float values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation46.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of float type values
+
+$float_values = array (
+  -2147483649, 
+  2147483648,  
+  -0x80000001, // float value, beyond max negative int
+  0x800000001, // float value, beyond max positive int
+  020000000001, // float value, beyond max positive int
+  -020000000001, // float value, beyond max negative int
+  0.0,
+  -0.1,
+  1.0,
+  1e5,
+  -1e6,
+  1E8,
+  -1E9,
+  10.0000000000000000005,
+  10.5e+5
+);
+
+$scientific_formats = array( "%e", "%he", "%le", "%Le", " %e", "%e ", "% e", "\t%e", "\n%e", "%4e", "%30e", "%[0-9]", "%*e");
+
+$counter = 1;
+
+// writing to the file
+foreach($float_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different scientific formats
+foreach($scientific_formats as $scientific_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$scientific_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation46.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different scientific format types with float values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(3435)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1000)
+}
+array(1) {
+  [0]=>
+  float(-100)
+}
+array(1) {
+  [0]=>
+  float(1000)
+}
+array(1) {
+  [0]=>
+  float(-100)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-1000000)
+}
+array(1) {
+  [0]=>
+  float(100000000)
+}
+array(1) {
+  [0]=>
+  float(-1000000000)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(9) "100000000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation47.phpt b/ext/standard/tests/file/fscanf_variation47.phpt
new file mode 100644 (file)
index 0000000..011169a
--- /dev/null
@@ -0,0 +1,216 @@
+--TEST--
+Test fscanf() function: usage variations - scientific formats with resource 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan resource type using different scientific format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different scientific format types with resource ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation47.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+
+// resource type variable
+$fp = fopen (__FILE__, "r");
+$dfp = opendir ( dirname(__FILE__) );
+  
+// array of resource types
+$resource_types = array (
+  $fp,
+  $dfp
+);
+
+$scientific_formats = array( "%e", "%he", "%le", "%Le", " %e", "%e ", "% e", "\t%e", "\n%e", "%4e", "%30e", "%[0-9]", "%*e");
+
+$counter = 1;
+
+// writing to the file
+foreach($resource_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different scientific formats
+foreach($scientific_formats as $scientific_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$scientific_format) );
+  }
+  $counter++;
+}
+
+// closing the resources
+fclose($fp);
+fclose($dfp);
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation47.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different scientific format types with resource ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation48.phpt b/ext/standard/tests/file/fscanf_variation48.phpt
new file mode 100644 (file)
index 0000000..5b61e5b
--- /dev/null
@@ -0,0 +1,707 @@
+--TEST--
+Test fscanf() function: usage variations - scientific formats with arrays 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan arrays using different scientific format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different scientific format types with arrays ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation48.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array types
+$array_types = array (
+  array(),
+  array(0),
+  array(1),
+  array(NULL),
+  array(null),
+  array("string"),
+  array(true),
+  array(TRUE),
+  array(false),
+  array(FALSE),
+  array(1,2,3,4),
+  array(1 => "One", "two" => 2)
+);
+
+$scientific_formats = array( "%e", "%he", "%le", "%Le", " %e", "%e ", "% e", "\t%e", "\n%e", "%4e", "%30e", "%[0-9]", "%*e");
+
+$counter = 1;
+
+// writing to the file
+foreach($array_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different scientific formats
+foreach($scientific_formats as $scientific_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$scientific_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation48.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different scientific format types with arrays ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation49.phpt b/ext/standard/tests/file/fscanf_variation49.phpt
new file mode 100644 (file)
index 0000000..29e1f31
--- /dev/null
@@ -0,0 +1,945 @@
+--TEST--
+Test fscanf() function: usage variations - scientific formats with strings
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan strings using different scientific format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different scientific format types with strings ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation49.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of strings
+$strings = array (
+  "",
+  '',
+  "0",
+  '0',
+  "1",
+  '1',
+  "\x01",
+  '\x01',
+  "\01",
+  '\01',
+  'string',
+  "string",
+  "true",
+  "FALSE",
+  'false',
+  'TRUE',
+  "NULL",
+  'null'
+);
+
+$scientific_formats = array( "%e", "%he", "%le", "%Le", " %e", "%e ", "% e", "\t%e", "\n%e", "%4e", "%30e", "%[0-9]", "%*e");
+
+$counter = 1;
+
+// writing to the file
+foreach($strings as $string) {
+  @fprintf($file_handle, $string);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different scientific formats
+foreach($scientific_formats as $scientific_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$scientific_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation49.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different scientific format types with strings ***
+
+-- iteration 1 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+NULL
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation5.phpt b/ext/standard/tests/file/fscanf_variation5.phpt
new file mode 100644 (file)
index 0000000..1e457a6
--- /dev/null
@@ -0,0 +1,731 @@
+--TEST--
+Test fscanf() function: usage variations - integer formats with arrays 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan arrays using different integer format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different integer format types with arrays ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation5.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array types
+$array_types = array (
+  array(),
+  array(0),
+  array(1),
+  array(NULL),
+  array(null),
+  array("string"),
+  array(true),
+  array(TRUE),
+  array(false),
+  array(FALSE),
+  array(1,2,3,4),
+  array(1 => "One", "two" => 2)
+);
+
+$int_formats = array( "%d", "%hd", "%ld", "%Ld", " %d", "%d ", "% d", "\t%d", "\n%d", "%4d", "%30d", "%[0-9]", "%*d");
+
+$counter = 1;
+
+// writing to the file
+foreach($array_types as $value) {
+  fprintf($file_handle, $value);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($int_formats as $int_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$int_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation5.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different integer format types with arrays ***
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+Notice: Array to string conversion in %s on line %d
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation50.phpt b/ext/standard/tests/file/fscanf_variation50.phpt
new file mode 100644 (file)
index 0000000..7c4316c
--- /dev/null
@@ -0,0 +1,245 @@
+--TEST--
+Test fscanf() function: usage variations - scientific formats with boolean 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan boolean data using different scientific format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different scientific format types with boolean data ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation50.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of boolean types
+$bool_types = array (
+  true,
+  false,
+  TRUE,
+  FALSE,
+);
+
+$scientific_formats = array( "%e", "%he", "%le", "%Le", " %e", "%e ", "% e", "\t%e", "\n%e", "%4e", "%30e", "%[0-9]", "%*e");
+
+$counter = 1;
+
+// writing to the file
+foreach($bool_types as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different scientific formats
+foreach($scientific_formats as $scientific_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$scientific_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation50.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different scientific format types with boolean data ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+array(1) {
+  [0]=>
+  float(1)
+}
+NULL
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+NULL
+array(0) {
+}
+NULL
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation51.phpt b/ext/standard/tests/file/fscanf_variation51.phpt
new file mode 100644 (file)
index 0000000..f27f56f
--- /dev/null
@@ -0,0 +1,150 @@
+--TEST--
+Test fscanf() function: usage variations - file opened in write only mode 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan a file for read when file is opened inwrite only mode */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): to read from a file opened in write only mode ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation51.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+//writing data to the file
+fwrite($file_handle,"sample text\n");
+
+//closing the file
+fclose($file_handle);
+
+// various formats
+$formats = array( "%d", "%f", "%e", "%u", " %s", "%x", "%o");
+
+$counter = 1;
+
+// various write only modes
+$modes = array("w", "wb", "wt",
+               "a", "ab", "at",
+               "x", "xb", "xt"
+         );
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($modes as $mode) {
+  
+  $file_handle = fopen($filename, $mode);
+  if($file_handle == false) {
+    exit("Error:failed to open file $filename");
+  }
+  echo "\n-- iteration $counter --\n";
+
+  foreach($formats as $format) {
+    var_dump( fscanf($file_handle,$format) );
+    rewind($file_handle);
+  }
+  $counter++;
+  fclose($file_handle);
+  unlink($filename);
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation51.tmp";
+unlink($filename);
+?>
+--EXPECT--
+*** Test fscanf(): to read from a file opened in write only mode ***
+
+-- iteration 1 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 2 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 3 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 4 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 5 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 6 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 7 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 8 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 9 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation52.phpt b/ext/standard/tests/file/fscanf_variation52.phpt
new file mode 100644 (file)
index 0000000..5ca7653
--- /dev/null
@@ -0,0 +1,175 @@
+--TEST--
+Test fscanf() function: usage variations - empty file 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan an empty file */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): to read an empty file ***\n"; 
+
+// various formats
+$formats = array( "%d", "%f", "%e", "%u", " %s", "%x", "%o");
+
+$counter = 1;
+
+// various read modes
+$modes = array("r", "rb", "rt", "r+", "r+b", "r+t",
+               "w+", "w+b", "w+t",
+               "a+", "a+b", "a+t"
+         );
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($modes as $mode) {
+  
+  // create an empty file
+  $filename = "$file_path/fscanf_variation52.tmp";
+  $file_handle = fopen($filename, "w");
+  if($file_handle == false)
+    exit("Error:failed to open file $filename");
+  //closing the file
+  fclose($file_handle);
+
+  // opening file in $mode mode
+  $file_handle = fopen($filename, $mode);
+  if($file_handle == false) {
+    exit("Error:failed to open file $filename");
+  }
+  echo "\n-- iteration $counter --\n";
+
+  foreach($formats as $format) {
+    var_dump( fscanf($file_handle,$format) );
+    rewind($file_handle);
+  }
+  $counter++;
+  fclose($file_handle);
+  unlink($filename);
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation52.tmp";
+unlink($filename);
+?>
+--EXPECT--
+*** Test fscanf(): to read an empty file ***
+
+-- iteration 1 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 2 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 3 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 4 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 5 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 6 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 7 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 8 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 9 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 10 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 11 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 12 --
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation53.phpt b/ext/standard/tests/file/fscanf_variation53.phpt
new file mode 100644 (file)
index 0000000..c9ccbff
--- /dev/null
@@ -0,0 +1,226 @@
+--TEST--
+Test fscanf() function: usage variations - file pointer pointing to EOF 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to read a file when file pointer is pointing to EOF */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): to read a file when file pointer is pointing to EOF ***\n"; 
+
+// various formats
+$formats = array( "%d", "%f", "%e", "%u", " %s", "%x", "%o");
+
+$counter = 1;
+
+// various read modes
+$modes = array("r", "rb", "rt", "r+", "r+b", "r+t",
+               "w+", "w+b", "w+t",
+               "a+", "a+b", "a+t"
+         );
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($modes as $mode) {
+  
+  // create an empty file
+  $filename = "$file_path/fscanf_variation52.tmp";
+  $file_handle = fopen($filename, "w");
+  if($file_handle == false)
+    exit("Error:failed to open file $filename");
+  //writing data to the file
+  @fwrite($file_handle, "Sample text\n");
+  
+  // writing a blank line
+  @fwrite($file_handle, "\n");
+
+  //closing the file
+  fclose($file_handle);
+
+  // opening file in $mode mode
+  $file_handle = fopen($filename, $mode);
+  if($file_handle == false) {
+    exit("Error:failed to open file $filename");
+  }
+  echo "\n-- iteration $counter --\n";
+  // current location
+  var_dump( ftell($file_handle) );
+  // set the file pointer to eof
+  var_dump( fseek($file_handle, 0, SEEK_END) );
+  
+  // current location  
+  var_dump( ftell($file_handle) );
+
+  foreach($formats as $format) {
+    var_dump( fscanf($file_handle,$format) );
+  }
+  $counter++;
+  fclose($file_handle);
+  unlink($filename);
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation53.tmp";
+unlink($filename);
+?>
+--EXPECT--
+*** Test fscanf(): to read a file when file pointer is pointing to EOF ***
+
+-- iteration 1 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 2 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 3 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 4 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 5 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 6 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 7 --
+int(0)
+int(0)
+int(0)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 8 --
+int(0)
+int(0)
+int(0)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 9 --
+int(0)
+int(0)
+int(0)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 10 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 11 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+-- iteration 12 --
+int(0)
+int(0)
+int(13)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation54.phpt b/ext/standard/tests/file/fscanf_variation54.phpt
new file mode 100644 (file)
index 0000000..33f15c1
--- /dev/null
@@ -0,0 +1,100 @@
+--TEST--
+Test fscanf() function: usage variations - objects
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan a file to read objects */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): to read objects from a file ***\n"; 
+
+// declare a class
+class foo
+{
+  public $var1 = 1;
+  public $var2 = 2;
+  function __toString() {
+    return "Object";
+  }
+}
+
+// create an object
+$obj = new foo(); //creating new object
+
+// create a file
+$filename = "$file_path/fscanf_variation54.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+//writing object to the file
+fwrite($file_handle, $obj);
+
+//closing the file
+fclose($file_handle);
+
+// various formats
+$formats = array( "%d", "%f", "%e", "%u", " %s", "%x", "%o");
+
+$counter = 1;
+
+// opening file for read  
+$file_handle = fopen($filename, "r");
+  if($file_handle == false) {
+    exit("Error:failed to open file $filename");
+  }
+echo "\n-- iteration $counter --\n";
+
+foreach($formats as $format) {
+  var_dump( fscanf($file_handle,$format) );
+  rewind($file_handle);
+}
+
+fclose($file_handle);
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation54.tmp";
+unlink($filename);
+?>
+--EXPECT--
+*** Test fscanf(): to read objects from a file ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(6) "Object"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+
+*** Done ***
\ No newline at end of file
diff --git a/ext/standard/tests/file/fscanf_variation55.phpt b/ext/standard/tests/file/fscanf_variation55.phpt
new file mode 100644 (file)
index 0000000..a1ce9f3
--- /dev/null
@@ -0,0 +1,1684 @@
+--TEST--
+Test fscanf() function: usage variations - tracking file pointer while reading 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/*
+  Test fscanf() to scan data using different format types and also
+  tracking the file pointer movement along with reading
+ */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): tracking file pointer along with reading data from file ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation55.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid data
+$valid_data = array(
+  12345,            // integer value
+  -12345,           
+  123.45,          // float value
+  -123.45,        
+  0x123B,           // hexadecimal value
+  0x12ab,
+  0123,             // octal value
+  -0123,            
+  "abcde",          // string
+  'abcde',
+  10e3,             // exponential value
+  10e-3           
+);
+// various formats
+$int_formats = array( "%d", "%f", "%s", "%o", "%x", "%u", "%c", "%e");
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_data as $data) {
+  fprintf($file_handle, $data);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+$modes = array("r", "rb", "rt");
+
+foreach($modes as $mode) {
+
+  echo "\n*** File opened in $mode mode ***\n";
+  // opening the file for reading
+  $file_handle = fopen($filename, $mode);
+  if($file_handle == false) {
+    exit("Error:failed to open file $filename");
+  }
+
+  $counter = 1;
+  // reading different data from file using different formats
+  foreach($int_formats as $int_format) {
+    // current file pointer position
+    var_dump( ftell($file_handle) ); 
+    // rewind the file so that for every foreach iteration the file pointer starts from bof
+    rewind($file_handle);
+    // current file pointer position after rewind operation
+    var_dump( ftell($file_handle) ); 
+    echo "\n-- iteration $counter --\n";
+    while( !feof($file_handle) ) {
+      var_dump( ftell($file_handle) ); 
+      var_dump( fscanf($file_handle,$int_format) );
+    }
+    $counter++;
+  } // end of inner for loop
+} // end of outer for loop
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation55.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): tracking file pointer along with reading data from file ***
+
+*** File opened in r mode ***
+int(0)
+int(0)
+
+-- iteration 1 --
+int(0)
+array(1) {
+  [0]=>
+  int(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(123)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-123)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  int(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 2 --
+int(0)
+array(1) {
+  [0]=>
+  float(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  float(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  float(123.45)
+}
+int(20)
+array(1) {
+  [0]=>
+  float(-123.45)
+}
+int(28)
+array(1) {
+  [0]=>
+  float(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  float(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  float(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  float(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  float(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  float(0.01)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 3 --
+int(0)
+array(1) {
+  [0]=>
+  string(5) "12345"
+}
+int(6)
+array(1) {
+  [0]=>
+  string(6) "-12345"
+}
+int(13)
+array(1) {
+  [0]=>
+  string(6) "123.45"
+}
+int(20)
+array(1) {
+  [0]=>
+  string(7) "-123.45"
+}
+int(28)
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+int(33)
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+int(38)
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+int(41)
+array(1) {
+  [0]=>
+  string(3) "-83"
+}
+int(45)
+array(1) {
+  [0]=>
+  string(5) "abcde"
+}
+int(51)
+array(1) {
+  [0]=>
+  string(5) "abcde"
+}
+int(57)
+array(1) {
+  [0]=>
+  string(5) "10000"
+}
+int(63)
+array(1) {
+  [0]=>
+  string(4) "0.01"
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 4 --
+int(0)
+array(1) {
+  [0]=>
+  int(5349)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-5349)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-83)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(2487)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(319)
+}
+int(38)
+array(1) {
+  [0]=>
+  NULL
+}
+int(41)
+array(1) {
+  [0]=>
+  NULL
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(4096)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 5 --
+int(0)
+array(1) {
+  [0]=>
+  int(74565)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-74565)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(291)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-291)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(18023)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(18297)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(131)
+}
+int(41)
+array(1) {
+  [0]=>
+  int(-131)
+}
+int(45)
+array(1) {
+  [0]=>
+  int(703710)
+}
+int(51)
+array(1) {
+  [0]=>
+  int(703710)
+}
+int(57)
+array(1) {
+  [0]=>
+  int(65536)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 6 --
+int(0)
+array(1) {
+  [0]=>
+  int(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  string(10) "4294954951"
+}
+int(13)
+array(1) {
+  [0]=>
+  int(123)
+}
+int(20)
+array(1) {
+  [0]=>
+  string(10) "4294967173"
+}
+int(28)
+array(1) {
+  [0]=>
+  int(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  string(10) "4294967213"
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 7 --
+int(0)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(6)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(13)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(20)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(28)
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+int(33)
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+int(38)
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+int(41)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(45)
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+int(51)
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+int(57)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(63)
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 8 --
+int(0)
+array(1) {
+  [0]=>
+  float(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  float(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  float(123.45)
+}
+int(20)
+array(1) {
+  [0]=>
+  float(-123.45)
+}
+int(28)
+array(1) {
+  [0]=>
+  float(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  float(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  float(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  float(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  float(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  float(0.01)
+}
+int(68)
+bool(false)
+
+*** File opened in rb mode ***
+int(0)
+int(0)
+
+-- iteration 1 --
+int(0)
+array(1) {
+  [0]=>
+  int(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(123)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-123)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  int(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 2 --
+int(0)
+array(1) {
+  [0]=>
+  float(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  float(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  float(123.45)
+}
+int(20)
+array(1) {
+  [0]=>
+  float(-123.45)
+}
+int(28)
+array(1) {
+  [0]=>
+  float(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  float(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  float(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  float(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  float(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  float(0.01)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 3 --
+int(0)
+array(1) {
+  [0]=>
+  string(5) "12345"
+}
+int(6)
+array(1) {
+  [0]=>
+  string(6) "-12345"
+}
+int(13)
+array(1) {
+  [0]=>
+  string(6) "123.45"
+}
+int(20)
+array(1) {
+  [0]=>
+  string(7) "-123.45"
+}
+int(28)
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+int(33)
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+int(38)
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+int(41)
+array(1) {
+  [0]=>
+  string(3) "-83"
+}
+int(45)
+array(1) {
+  [0]=>
+  string(5) "abcde"
+}
+int(51)
+array(1) {
+  [0]=>
+  string(5) "abcde"
+}
+int(57)
+array(1) {
+  [0]=>
+  string(5) "10000"
+}
+int(63)
+array(1) {
+  [0]=>
+  string(4) "0.01"
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 4 --
+int(0)
+array(1) {
+  [0]=>
+  int(5349)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-5349)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-83)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(2487)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(319)
+}
+int(38)
+array(1) {
+  [0]=>
+  NULL
+}
+int(41)
+array(1) {
+  [0]=>
+  NULL
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(4096)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 5 --
+int(0)
+array(1) {
+  [0]=>
+  int(74565)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-74565)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(291)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-291)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(18023)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(18297)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(131)
+}
+int(41)
+array(1) {
+  [0]=>
+  int(-131)
+}
+int(45)
+array(1) {
+  [0]=>
+  int(703710)
+}
+int(51)
+array(1) {
+  [0]=>
+  int(703710)
+}
+int(57)
+array(1) {
+  [0]=>
+  int(65536)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 6 --
+int(0)
+array(1) {
+  [0]=>
+  int(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  string(10) "4294954951"
+}
+int(13)
+array(1) {
+  [0]=>
+  int(123)
+}
+int(20)
+array(1) {
+  [0]=>
+  string(10) "4294967173"
+}
+int(28)
+array(1) {
+  [0]=>
+  int(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  string(10) "4294967213"
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 7 --
+int(0)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(6)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(13)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(20)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(28)
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+int(33)
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+int(38)
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+int(41)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(45)
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+int(51)
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+int(57)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(63)
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 8 --
+int(0)
+array(1) {
+  [0]=>
+  float(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  float(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  float(123.45)
+}
+int(20)
+array(1) {
+  [0]=>
+  float(-123.45)
+}
+int(28)
+array(1) {
+  [0]=>
+  float(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  float(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  float(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  float(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  float(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  float(0.01)
+}
+int(68)
+bool(false)
+
+*** File opened in rt mode ***
+int(0)
+int(0)
+
+-- iteration 1 --
+int(0)
+array(1) {
+  [0]=>
+  int(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(123)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-123)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  int(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 2 --
+int(0)
+array(1) {
+  [0]=>
+  float(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  float(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  float(123.45)
+}
+int(20)
+array(1) {
+  [0]=>
+  float(-123.45)
+}
+int(28)
+array(1) {
+  [0]=>
+  float(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  float(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  float(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  float(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  float(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  float(0.01)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 3 --
+int(0)
+array(1) {
+  [0]=>
+  string(5) "12345"
+}
+int(6)
+array(1) {
+  [0]=>
+  string(6) "-12345"
+}
+int(13)
+array(1) {
+  [0]=>
+  string(6) "123.45"
+}
+int(20)
+array(1) {
+  [0]=>
+  string(7) "-123.45"
+}
+int(28)
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+int(33)
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+int(38)
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+int(41)
+array(1) {
+  [0]=>
+  string(3) "-83"
+}
+int(45)
+array(1) {
+  [0]=>
+  string(5) "abcde"
+}
+int(51)
+array(1) {
+  [0]=>
+  string(5) "abcde"
+}
+int(57)
+array(1) {
+  [0]=>
+  string(5) "10000"
+}
+int(63)
+array(1) {
+  [0]=>
+  string(4) "0.01"
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 4 --
+int(0)
+array(1) {
+  [0]=>
+  int(5349)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-5349)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-83)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(2487)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(319)
+}
+int(38)
+array(1) {
+  [0]=>
+  NULL
+}
+int(41)
+array(1) {
+  [0]=>
+  NULL
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(4096)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 5 --
+int(0)
+array(1) {
+  [0]=>
+  int(74565)
+}
+int(6)
+array(1) {
+  [0]=>
+  int(-74565)
+}
+int(13)
+array(1) {
+  [0]=>
+  int(291)
+}
+int(20)
+array(1) {
+  [0]=>
+  int(-291)
+}
+int(28)
+array(1) {
+  [0]=>
+  int(18023)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(18297)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(131)
+}
+int(41)
+array(1) {
+  [0]=>
+  int(-131)
+}
+int(45)
+array(1) {
+  [0]=>
+  int(703710)
+}
+int(51)
+array(1) {
+  [0]=>
+  int(703710)
+}
+int(57)
+array(1) {
+  [0]=>
+  int(65536)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 6 --
+int(0)
+array(1) {
+  [0]=>
+  int(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  string(10) "4294954951"
+}
+int(13)
+array(1) {
+  [0]=>
+  int(123)
+}
+int(20)
+array(1) {
+  [0]=>
+  string(10) "4294967173"
+}
+int(28)
+array(1) {
+  [0]=>
+  int(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  int(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  int(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  string(10) "4294967213"
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  int(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  int(0)
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 7 --
+int(0)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(6)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(13)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(20)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(28)
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+int(33)
+array(1) {
+  [0]=>
+  string(1) "4"
+}
+int(38)
+array(1) {
+  [0]=>
+  string(1) "8"
+}
+int(41)
+array(1) {
+  [0]=>
+  string(1) "-"
+}
+int(45)
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+int(51)
+array(1) {
+  [0]=>
+  string(1) "a"
+}
+int(57)
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+int(63)
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+int(68)
+bool(false)
+int(68)
+int(0)
+
+-- iteration 8 --
+int(0)
+array(1) {
+  [0]=>
+  float(12345)
+}
+int(6)
+array(1) {
+  [0]=>
+  float(-12345)
+}
+int(13)
+array(1) {
+  [0]=>
+  float(123.45)
+}
+int(20)
+array(1) {
+  [0]=>
+  float(-123.45)
+}
+int(28)
+array(1) {
+  [0]=>
+  float(4667)
+}
+int(33)
+array(1) {
+  [0]=>
+  float(4779)
+}
+int(38)
+array(1) {
+  [0]=>
+  float(83)
+}
+int(41)
+array(1) {
+  [0]=>
+  float(-83)
+}
+int(45)
+array(1) {
+  [0]=>
+  NULL
+}
+int(51)
+array(1) {
+  [0]=>
+  NULL
+}
+int(57)
+array(1) {
+  [0]=>
+  float(10000)
+}
+int(63)
+array(1) {
+  [0]=>
+  float(0.01)
+}
+int(68)
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation6.phpt b/ext/standard/tests/file/fscanf_variation6.phpt
new file mode 100644 (file)
index 0000000..0f2b97d
--- /dev/null
@@ -0,0 +1,945 @@
+--TEST--
+Test fscanf() function: usage variations - integer formats with strings
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan strings using different integer format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different integer format types with strings ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation6.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of strings
+$strings = array (
+  "",
+  '',
+  "0",
+  '0',
+  "1",
+  '1',
+  "\x01",
+  '\x01',
+  "\01",
+  '\01',
+  'string',
+  "string",
+  "true",
+  "FALSE",
+  'false',
+  'TRUE',
+  "NULL",
+  'null'
+);
+
+$int_formats = array( "%d", "%hd", "%ld", "%Ld", " %d", "%d ", "% d", "\t%d", "\n%d", "%4d", "%30d", "%[0-9]", "%*d");
+
+$counter = 1;
+
+// writing to the file
+foreach($strings as $string) {
+  fprintf($file_handle, $string);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($int_formats as $int_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$int_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation6.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different integer format types with strings ***
+
+-- iteration 1 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 2 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 3 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 4 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 5 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 6 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 9 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 10 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 11 --
+NULL
+NULL
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(0)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  int(1)
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+NULL
+NULL
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation7.phpt b/ext/standard/tests/file/fscanf_variation7.phpt
new file mode 100644 (file)
index 0000000..d22c985
--- /dev/null
@@ -0,0 +1,245 @@
+--TEST--
+Test fscanf() function: usage variations - integer formats with boolean 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan boolean data using different integer format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different integer format types with boolean data ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation7.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of boolean types
+$bool_types = array (
+  true,
+  false,
+  TRUE,
+  FALSE,
+);
+
+$int_formats = array( "%d", "%hd", "%ld", "%Ld", " %d", "%d ", "% d", "\t%d", "\n%d", "%4d", "%30d", "%[0-9]", "%*d");
+
+$counter = 1;
+
+// writing to the file
+foreach($bool_types as $value) {
+  fprintf($file_handle, $value);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different integer formats
+foreach($int_formats as $int_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$int_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation7.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different integer format types with boolean data ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+array(1) {
+  [0]=>
+  int(1)
+}
+NULL
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+NULL
+array(0) {
+}
+NULL
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation8.phpt b/ext/standard/tests/file/fscanf_variation8.phpt
new file mode 100644 (file)
index 0000000..6212e35
--- /dev/null
@@ -0,0 +1,1613 @@
+--TEST--
+Test fscanf() function: usage variations - float formats with float values 
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan different float values using different format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different float format types with different float values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation8.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// different valid float vlaues
+$valid_floats = array(
+-2147483649, // float value
+  2147483648,  // float value
+  -0x80000001, // float value, beyond max negative int
+  0x800000001, // float value, beyond max positive int
+  020000000001, // float value, beyond max positive int
+  -020000000001, // float value, beyond max negative int
+  0.0,
+  -0.1,
+  10.0000000000000000005,
+  10.5e+5,
+  1e5,
+  -1e5,
+  1e-5,
+  -1e-5,
+  1e+5,
+  -1e+5,
+  1E5,
+  -1E5,
+  1E+5,
+  -1E+5,
+  1E-5,
+  -1E-5,
+  .5e+7,
+  -.5e+7,
+  .6e-19,
+  -.6e-19,
+  .05E+44,
+  -.05E+44,
+  .0034E-30,
+  -.0034E-30
+);
+
+// various float formats
+$float_formats = array( "%f", 
+                        "%hf", "%lf", "%Lf",
+                        " %f", "%f ", "% f",
+                        "\t%f", "\n%f", "%4f",
+                        "%30f", "%[0-9]", "%*f",
+                 );
+
+$counter = 1;
+
+// writing to the file
+foreach($valid_floats as $float_value) {
+  fprintf($file_handle, $float_value);
+  fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different float formats
+foreach($float_formats as $float_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$float_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation8.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different float format types with different float values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(3435)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050)
+}
+array(1) {
+  [0]=>
+  float(1000)
+}
+array(1) {
+  [0]=>
+  float(-100)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(1000)
+}
+array(1) {
+  [0]=>
+  float(-100)
+}
+array(1) {
+  [0]=>
+  float(1000)
+}
+array(1) {
+  [0]=>
+  float(-100)
+}
+array(1) {
+  [0]=>
+  float(1000)
+}
+array(1) {
+  [0]=>
+  float(-100)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(5000)
+}
+array(1) {
+  [0]=>
+  float(-500)
+}
+array(1) {
+  [0]=>
+  float(6)
+}
+array(1) {
+  [0]=>
+  float(-6)
+}
+array(1) {
+  [0]=>
+  float(5)
+}
+array(1) {
+  [0]=>
+  float(-5)
+}
+array(1) {
+  [0]=>
+  float(3.4)
+}
+array(1) {
+  [0]=>
+  float(-3.4)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(34359738369)
+}
+array(1) {
+  [0]=>
+  float(2147483649)
+}
+array(1) {
+  [0]=>
+  float(-2147483649)
+}
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(-0.1)
+}
+array(1) {
+  [0]=>
+  float(10)
+}
+array(1) {
+  [0]=>
+  float(1050000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(100000)
+}
+array(1) {
+  [0]=>
+  float(-100000)
+}
+array(1) {
+  [0]=>
+  float(1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(-1.0E-5)
+}
+array(1) {
+  [0]=>
+  float(5000000)
+}
+array(1) {
+  [0]=>
+  float(-5000000)
+}
+array(1) {
+  [0]=>
+  float(6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(-6.0E-20)
+}
+array(1) {
+  [0]=>
+  float(5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(-5.0E+42)
+}
+array(1) {
+  [0]=>
+  float(3.4E-33)
+}
+array(1) {
+  [0]=>
+  float(-3.4E-33)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483648"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(11) "34359738369"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483649"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(2) "10"
+}
+array(1) {
+  [0]=>
+  string(7) "1050000"
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(6) "100000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(7) "5000000"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "6"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "5"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(1) "3"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***
diff --git a/ext/standard/tests/file/fscanf_variation9.phpt b/ext/standard/tests/file/fscanf_variation9.phpt
new file mode 100644 (file)
index 0000000..1a193d3
--- /dev/null
@@ -0,0 +1,1008 @@
+--TEST--
+Test fscanf() function: usage variations - float formats with integer values
+--FILE--
+<?php
+
+/*
+  Prototype: mixed fscanf ( resource $handle, string $format [, mixed &$...] );
+  Description: Parses input from a file according to a format
+*/
+
+/* Test fscanf() to scan integer values using different float format types */
+
+$file_path = dirname(__FILE__);
+
+echo "*** Test fscanf(): different float format types with integer values ***\n"; 
+
+// create a file
+$filename = "$file_path/fscanf_variation9.tmp";
+$file_handle = fopen($filename, "w");
+if($file_handle == false)
+  exit("Error:failed to open file $filename");
+
+// array of float type values
+
+$integer_values = array (
+  0,
+  1,
+  -1,
+  -2147483648, // max negative integer value
+  -2147483647,
+  2147483647,  // max positive integer value
+  2147483640,
+  0x123B,      // integer as hexadecimal
+  0x12ab,
+  0Xfff,
+  0XFA,
+  -0x80000000, // max negative integer as hexadecimal
+  0x7fffffff,  // max postive integer as hexadecimal
+  0x7FFFFFFF,  // max postive integer as hexadecimal
+  0123,        // integer as octal
+  01912,       // should be quivalent to octal 1
+  -020000000000, // max negative integer as octal
+  017777777777  // max positive integer as octal
+);
+
+$float_formats = array( "%f", "%hf", "%lf", "%Lf", " %f", "%f ", "% f", "\t%f", "\n%f", "%4f", "%30f", "%[0-9]", "%*f");
+
+$counter = 1;
+
+// writing to the file
+foreach($integer_values as $value) {
+  @fprintf($file_handle, $value);
+  @fprintf($file_handle, "\n");
+}
+// closing the file
+fclose($file_handle);
+
+// opening the file for reading
+$file_handle = fopen($filename, "r");
+if($file_handle == false) {
+  exit("Error:failed to open file $filename");
+}
+
+$counter = 1;
+// reading the values from file using different float formats
+foreach($float_formats as $float_format) {
+  // rewind the file so that for every foreach iteration the file pointer starts from bof
+  rewind($file_handle);
+  echo "\n-- iteration $counter --\n";
+  while( !feof($file_handle) ) {
+    var_dump( fscanf($file_handle,$float_format) );
+  }
+  $counter++;
+}
+
+echo "\n*** Done ***";
+?>
+--CLEAN--
+<?php
+$file_path = dirname(__FILE__);
+$filename = "$file_path/fscanf_variation9.tmp";
+unlink($filename);
+?>
+--EXPECTF--
+*** Test fscanf(): different float format types with integer values ***
+
+-- iteration 1 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 2 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 3 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 4 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 5 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 6 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 7 --
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+
+Warning: fscanf(): Bad scan conversion character " " in %s on line %d
+NULL
+bool(false)
+
+-- iteration 8 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 9 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 10 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-214)
+}
+array(1) {
+  [0]=>
+  float(2147)
+}
+bool(false)
+
+-- iteration 11 --
+array(1) {
+  [0]=>
+  float(0)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(-2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483640)
+}
+array(1) {
+  [0]=>
+  float(4667)
+}
+array(1) {
+  [0]=>
+  float(4779)
+}
+array(1) {
+  [0]=>
+  float(4095)
+}
+array(1) {
+  [0]=>
+  float(250)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+array(1) {
+  [0]=>
+  float(83)
+}
+array(1) {
+  [0]=>
+  float(1)
+}
+array(1) {
+  [0]=>
+  float(-2147483648)
+}
+array(1) {
+  [0]=>
+  float(2147483647)
+}
+bool(false)
+
+-- iteration 12 --
+array(1) {
+  [0]=>
+  string(1) "0"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483640"
+}
+array(1) {
+  [0]=>
+  string(4) "4667"
+}
+array(1) {
+  [0]=>
+  string(4) "4779"
+}
+array(1) {
+  [0]=>
+  string(4) "4095"
+}
+array(1) {
+  [0]=>
+  string(3) "250"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+array(1) {
+  [0]=>
+  string(2) "83"
+}
+array(1) {
+  [0]=>
+  string(1) "1"
+}
+array(1) {
+  [0]=>
+  NULL
+}
+array(1) {
+  [0]=>
+  string(10) "2147483647"
+}
+bool(false)
+
+-- iteration 13 --
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+array(0) {
+}
+bool(false)
+
+*** Done ***