1--TEST--
2Test tempnam() function: usage variations - test prefix maximum size
3--SKIPIF--
4<?php
5if (PHP_OS_FAMILY === 'Windows') {
6    die("skip Do not run on Windows");
7}
8?>
9--FILE--
10<?php
11/* Testing the maximum prefix size */
12
13echo "*** Testing tempnam() maximum prefix size ***\n";
14$file_path = __DIR__."/tempnamVar9";
15mkdir($file_path);
16
17$pre_prefix = "begin_";
18$post_prefix = "_end";
19$fixed_length = strlen($pre_prefix) + strlen($post_prefix);
20/* An array of prefixes */
21$names_arr = [
22  $pre_prefix . str_repeat("x", 7) . $post_prefix,
23  $pre_prefix . str_repeat("x", 63 - $fixed_length) . $post_prefix,
24  $pre_prefix . str_repeat("x", 64 - $fixed_length) . $post_prefix,
25  $pre_prefix . str_repeat("x", 65 - $fixed_length) . $post_prefix,
26  $pre_prefix . str_repeat("x", 300) . $post_prefix,
27];
28
29foreach($names_arr as $i=>$prefix) {
30    echo "-- Iteration $i --\n";
31    try {
32        $file_name = tempnam("$file_path", $prefix);
33    } catch (Error $e) {
34        echo $e->getMessage(), "\n";
35        continue;
36    }
37
38    $base_name = basename($file_name);
39    echo "File name is => ", $base_name, "\n";
40    echo "File name length is => ", strlen($base_name), "\n";
41
42    if (file_exists($file_name)) {
43        unlink($file_name);
44    }
45}
46rmdir($file_path);
47
48?>
49--CLEAN--
50<?php
51$file_path = __DIR__."/tempnamVar9";
52if (file_exists($file_path)) {
53    array_map('unlink', glob($file_path . "/*"));
54    rmdir($file_path);
55}
56?>
57--EXPECTF--
58*** Testing tempnam() maximum prefix size ***
59-- Iteration 0 --
60File name is => begin_%rx{7}%r_end%r.{19}%r
61File name length is => 36
62-- Iteration 1 --
63File name is => begin_%rx{53}%r_end%r.{19}%r
64File name length is => 82
65-- Iteration 2 --
66File name is => begin_%rx{54}%r_en%r.{19}%r
67File name length is => 82
68-- Iteration 3 --
69File name is => begin_%rx{55}%r_e%r.{19}%r
70File name length is => 82
71-- Iteration 4 --
72File name is => begin_%rx{57}%r%r.{19}%r
73File name length is => 82
74