Annotation of embedaddon/php/ext/standard/tests/file/fopencookie.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: fopencookie detected and working (or cast mechanism works)
3: --FILE--
4: <?php
5: # vim600:syn=php:
6:
7: /* This test verifies that the casting mechanism is working correctly.
8: * On systems with fopencookie, a FILE* is created around the user
9: * stream and that is passed back to the ZE to include.
10: * On systems without fopencookie, the stream is fed into a temporary
11: * file, and that temporary file is passed back to the ZE.
12: * The important thing here is really fopencookie; the glibc people
13: * changed the binary interface, so if haven't detected it correctly,
14: * you can expect this test to segfault.
15: *
16: * FIXME: the test really needs something to fseek(3) on the FILE*
17: * used internally for this test to be really effective.
18: */
19:
20: class userstream {
21: public $position = 0;
22: public $data = "If you can read this, it worked";
23:
24: function stream_open($path, $mode, $options, &$opened_path)
25: {
26: return true;
27: }
28:
29: function stream_read($count)
30: {
31: $ret = substr($this->data, $this->position, $count);
32: $this->position += strlen($ret);
33: return $ret;
34: }
35:
36: function stream_tell()
37: {
38: return $this->position;
39: }
40:
41: function stream_eof()
42: {
43: return $this->position >= strlen($this->data);
44: }
45:
46: function stream_seek($offset, $whence)
47: {
48: switch($whence) {
49: case SEEK_SET:
50: if ($offset < strlen($this->data) && $offset >= 0) {
51: $this->position = $offset;
52: return true;
53: } else {
54: return false;
55: }
56: break;
57: case SEEK_CUR:
58: if ($offset >= 0) {
59: $this->position += $offset;
60: return true;
61: } else {
62: return false;
63: }
64: break;
65: case SEEK_END:
66: if (strlen($this->data) + $offset >= 0) {
67: $this->position = strlen($this->data) + $offset;
68: return true;
69: } else {
70: return false;
71: }
72: break;
73: default:
74: return false;
75: }
76: }
77: function stream_stat() {
78: return array('size' => strlen($this->data));
79: }
80: }
81:
82: stream_wrapper_register("cookietest", "userstream");
83:
84: include("cookietest://foo");
85:
86: ?>
87: --EXPECT--
88: If you can read this, it worked
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>