Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:45949 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 92260 invoked from network); 4 Nov 2009 09:19:03 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 4 Nov 2009 09:19:03 -0000 X-Host-Fingerprint: 130.186.18.180 pdl-18-180.nat.cineca.it Received: from [130.186.18.180] ([130.186.18.180:26894] helo=localhost.localdomain) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 19/E8-34118-60741FA4 for ; Wed, 04 Nov 2009 04:19:02 -0500 Message-ID: <19.E8.34118.60741FA4@pb1.pair.com> To: internals@lists.php.net Date: Wed, 04 Nov 2009 10:18:49 +0100 Reply-To: d.romanini@cineca.it Organization: CINECA User-Agent: Thunderbird 2.0.0.21 (X11/20090318) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------080407060107090703070301" X-Posted-By: 130.186.18.180 Subject: PHP Stream wrappers seek with whence SEEK_CUR doesn't work From: davide.romanini@gmail.com (Davide Romanini) --------------080407060107090703070301 Content-Type: text/plain; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit Hi, I'm developing a custom stream wrapper and I've found this bug implementing the stream_seek() method. My php version: PHP 5.2.8 (cli) (built: Dec 17 2008 00:54:27) Copyright (c) 1997-2008 The PHP Group Zend Engine v2.2.0, Copyright (c) 1998-2008 Zend Technologies with Zend Extension Manager v1.0.11, Copyright (c) 2003-2006, by Zend Technologies with Zend Optimizer v3.2.0, Copyright (c) 1998-2006, by Zend Technologies with Zend Debugger v5.2.2, Copyright (c) 1999-2006, by Zend Technologies I've attached a simple script to reproduce the bug. It's a modified version of the example stream wrapper at http://www.php.net/manual/en/stream.streamwrapper.example-1.php. Expected result should be: whence=0 whence=1 whence=0 line1 line2 line3 but it is: whence=0 whence=0 whence=0 line1 line2 line3 It seems that the SEEK_CUR parameter is always ignored and the whence value passed to my wrapper is SEEK_SET. Using SEEK_END works as expected. Regards, Davide Romanini --------------080407060107090703070301 Content-Type: application/x-httpd-php; name="wrapper_seek_bug.php" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="wrapper_seek_bug.php" PD9waHAKY2xhc3MgVmFyaWFibGVTdHJlYW0gewogICAgdmFyICRwb3NpdGlvbjsKICAgIHZh ciAkdmFybmFtZTsKCiAgICBmdW5jdGlvbiBzdHJlYW1fb3BlbigkcGF0aCwgJG1vZGUsICRv cHRpb25zLCAmJG9wZW5lZF9wYXRoKQogICAgewogICAgICAgICR1cmwgPSBwYXJzZV91cmwo JHBhdGgpOwogICAgICAgICR0aGlzLT52YXJuYW1lID0gJHVybFsiaG9zdCJdOwogICAgICAg ICR0aGlzLT5wb3NpdGlvbiA9IDA7CgogICAgICAgIHJldHVybiB0cnVlOwogICAgfQoKICAg IGZ1bmN0aW9uIHN0cmVhbV9yZWFkKCRjb3VudCkKICAgIHsKICAgICAgICAkcmV0ID0gc3Vi c3RyKCRHTE9CQUxTWyR0aGlzLT52YXJuYW1lXSwgJHRoaXMtPnBvc2l0aW9uLCAkY291bnQp OwogICAgICAgICR0aGlzLT5wb3NpdGlvbiArPSBzdHJsZW4oJHJldCk7CiAgICAgICAgcmV0 dXJuICRyZXQ7CiAgICB9CgogICAgZnVuY3Rpb24gc3RyZWFtX3dyaXRlKCRkYXRhKQogICAg ewogICAgICAgICRsZWZ0ID0gc3Vic3RyKCRHTE9CQUxTWyR0aGlzLT52YXJuYW1lXSwgMCwg JHRoaXMtPnBvc2l0aW9uKTsKICAgICAgICAkcmlnaHQgPSBzdWJzdHIoJEdMT0JBTFNbJHRo aXMtPnZhcm5hbWVdLCAkdGhpcy0+cG9zaXRpb24gKyBzdHJsZW4oJGRhdGEpKTsKICAgICAg ICAkR0xPQkFMU1skdGhpcy0+dmFybmFtZV0gPSAkbGVmdCAuICRkYXRhIC4gJHJpZ2h0Owog ICAgICAgICR0aGlzLT5wb3NpdGlvbiArPSBzdHJsZW4oJGRhdGEpOwogICAgICAgIHJldHVy biBzdHJsZW4oJGRhdGEpOwogICAgfQoKICAgIGZ1bmN0aW9uIHN0cmVhbV90ZWxsKCkKICAg IHsKICAgICAgICByZXR1cm4gJHRoaXMtPnBvc2l0aW9uOwogICAgfQoKICAgIGZ1bmN0aW9u IHN0cmVhbV9lb2YoKQogICAgewogICAgICAgIHJldHVybiAkdGhpcy0+cG9zaXRpb24gPj0g c3RybGVuKCRHTE9CQUxTWyR0aGlzLT52YXJuYW1lXSk7CiAgICB9CgogICAgZnVuY3Rpb24g c3RyZWFtX3NlZWsoJG9mZnNldCwgJHdoZW5jZSkKICAgIHsKCQkJCWVycm9yX2xvZygid2hl bmNlPSR3aGVuY2UiKTsKICAgICAgICBzd2l0Y2ggKCR3aGVuY2UpIHsKICAgICAgICAgICAg Y2FzZSBTRUVLX1NFVDoKICAgICAgICAgICAgICAgIGlmICgkb2Zmc2V0IDwgc3RybGVuKCRH TE9CQUxTWyR0aGlzLT52YXJuYW1lXSkgJiYgJG9mZnNldCA+PSAwKSB7CiAgICAgICAgICAg ICAgICAgICAgICR0aGlzLT5wb3NpdGlvbiA9ICRvZmZzZXQ7CiAgICAgICAgICAgICAgICAg ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg ICAgYnJlYWs7CgogICAgICAgICAgICBjYXNlIFNFRUtfQ1VSOgogICAgICAgICAgICAgICAg aWYgKCRvZmZzZXQgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAkdGhpcy0+cG9zaXRp b24gKz0gJG9mZnNldDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAg ICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBicmVhazsKCiAgICAgICAgICAg IGNhc2UgU0VFS19FTkQ6CiAgICAgICAgICAgICAgICBpZiAoc3RybGVuKCRHTE9CQUxTWyR0 aGlzLT52YXJuYW1lXSkgKyAkb2Zmc2V0ID49IDApIHsKICAgICAgICAgICAgICAgICAgICAg JHRoaXMtPnBvc2l0aW9uID0gc3RybGVuKCRHTE9CQUxTWyR0aGlzLT52YXJuYW1lXSkgKyAk b2Zmc2V0OwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAg ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAg ICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICAgICAgZGVmYXVs dDoKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9Cn0KCnN0 cmVhbV93cmFwcGVyX3JlZ2lzdGVyKCJ2YXIiLCAiVmFyaWFibGVTdHJlYW0iKQogICAgb3Ig ZGllKCJGYWlsZWQgdG8gcmVnaXN0ZXIgcHJvdG9jb2wiKTsKCiRteXZhciA9ICIiOwoKJGZw ID0gZm9wZW4oInZhcjovL215dmFyIiwgInIrIik7Cgpmd3JpdGUoJGZwLCAibGluZTFcbiIp Owpmd3JpdGUoJGZwLCAibGluZTJcbiIpOwpmd3JpdGUoJGZwLCAibGluZTNcbiIpOwoKZnNl ZWsoJGZwLCAxMCk7CmZzZWVrKCRmcCwgIDMsIFNFRUtfQ1VSKTsKCnJld2luZCgkZnApOwp3 aGlsZSAoIWZlb2YoJGZwKSkgewogICAgZWNobyBmZ2V0cygkZnApOwp9CmZjbG9zZSgkZnAp OwoK --------------080407060107090703070301--