1--TEST--
2Test opendir() function : usage variations - different relative paths
3--SKIPIF--
4<?php
5if (substr(PHP_OS, 0, 3) != 'WIN') {
6  die("skip Valid only on Windows");
7}
8?>
9--FILE--
10<?php
11/* Prototype  : mixed opendir(string $path[, resource $context])
12 * Description: Open a directory and return a dir_handle
13 * Source code: ext/standard/dir.c
14 */
15
16/*
17 * Test opendir() with different relative paths as $path argument
18 */
19
20echo "*** Testing opendir() : usage variation ***\n";
21
22$base_dir_path = __DIR__ . '/opendir_variation4-win32-mb';
23@mkdir($base_dir_path);
24
25$level_one_dir_name = "私はガラスを食べられますlevel_one";
26$level_one_dir_path = "$base_dir_path/$level_one_dir_name";
27
28$level_two_dir_name = "私はガラスを食べられますlevel_two";
29$level_two_dir_path = "$base_dir_path/$level_one_dir_name/$level_two_dir_name";
30
31// create directories
32mkdir($level_one_dir_path);
33mkdir($level_two_dir_path);
34
35echo "\n-- \$path = './私はガラスを食べられますlevel_one': --\n";
36var_dump(chdir($base_dir_path));
37var_dump($dh = opendir("./$level_one_dir_name"));
38clean_dh($dh);
39
40echo "\n-- \$path = '私はガラスを食べられますlevel_one/私はガラスを食べられますlevel_two': --\n";
41var_dump(chdir($base_dir_path));
42var_dump($dh = opendir("$level_one_dir_name/$level_two_dir_name"));
43clean_dh($dh);
44
45echo "\n-- \$path = '..': --\n";
46var_dump($dh = opendir('..'));
47clean_dh($dh);
48
49echo "\n-- \$path = 'level_two', '.': --\n";
50var_dump(chdir($level_two_dir_path));
51var_dump($dh = opendir('.'));
52clean_dh($dh);
53
54echo "\n-- \$path = '../': --\n";
55var_dump($dh = opendir('../'));
56clean_dh($dh);
57
58echo "\n-- \$path = './': --\n";
59var_dump(chdir($level_two_dir_path));
60var_dump($dh = opendir('./'));
61clean_dh($dh);
62
63echo "\n-- \$path = '../../'私はガラスを食べられますlevel_one': --\n";
64var_dump(chdir($level_two_dir_path));
65var_dump($dh = opendir("../../$level_one_dir_name"));
66clean_dh($dh);
67
68/*
69 * function to remove directory handle before re-using variable name in test
70 * and to ensure directory is not in use at CLEAN section so can me removed
71 */
72function clean_dh($dh){
73	if (is_resource($dh)) {
74		closedir($dh);
75	}
76	unset($dh);
77}
78?>
79===DONE===
80--CLEAN--
81<?php
82$base_dir_path = __DIR__ . '/opendir_variation4-win32-mb';
83rmdir("$base_dir_path/私はガラスを食べられますlevel_one/私はガラスを食べられますlevel_two");
84rmdir("$base_dir_path/私はガラスを食べられますlevel_one");
85rmdir($base_dir_path);
86?>
87--EXPECTF--
88*** Testing opendir() : usage variation ***
89
90-- $path = './私はガラスを食べられますlevel_one': --
91bool(true)
92resource(%d) of type (stream)
93
94-- $path = '私はガラスを食べられますlevel_one/私はガラスを食べられますlevel_two': --
95bool(true)
96resource(%d) of type (stream)
97
98-- $path = '..': --
99resource(%d) of type (stream)
100
101-- $path = 'level_two', '.': --
102bool(true)
103resource(%d) of type (stream)
104
105-- $path = '../': --
106resource(%d) of type (stream)
107
108-- $path = './': --
109bool(true)
110resource(%d) of type (stream)
111
112-- $path = '../../'私はガラスを食べられますlevel_one': --
113bool(true)
114resource(%d) of type (stream)
115===DONE===
116