Re: FTP returns wrong file size (and a fix) - second try
| From: | Vlad Krupin | Date: | Mon, 18 Mar 2002 22:07:31 +0000 |
| Subject: | Re: FTP returns wrong file size (and a fix) - second try | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-81460@lists.php.net to get a copy of this message | ||
If someone needs an ASCII size, they need to scream and file a bug report and then I'll implement it. This function has not been working properly for ages and no-one complained. This way at least it will work consistently and make sense. Optional ASCII mode size will require a bloat (like an optional parameter) :(.
Vlad
derick@php.net wrote:
On Mon, 18 Mar 2002, Joseph Tate wrote:Would there ever be a need to get the ASCII ftp_size? If not, the go ahead, but if there ever might be, you may want to add a parameter to ftp_size so that it behaves like ftp_get et all. The parameter could default to BINARY.That sounds like a good idea to me. I can't think of a way why it would be useful, but it doesn't hurt either. I'd go for the ftp_size() with default BINARY, and optional ASCII mode size. (And it's fine with me to merge it) regards, DerickJoseph----------------------------------------------------------------------------Original Message----- From: Vlad Krupin [mailto:vlad@php.net] Sent: Monday, March 18, 2002 4:15 PM To: PHP Developers Mailing List Cc: derick@php.net Subject: [PHP-DEV] FTP returns wrong file size (and a fix) - second try Hi, this is the second try to get feedback and to make a fix to ftp_size() function. After bringing that issue up a few days back, I got response from Derick only with some concerns, which I'll address here. Please, respond or I'll just apply the patch because it makes sense to me and see what happens. First of all, ftp_size() function is broken. It will return different results for the same file depending on what function was called before it. To fix it, we have to set the mode of the ftp server session to BINARY rather than ASCII. It is a one-liner patch. Derick was concerned that this will change the state of the session without the user explicitly requesting it and we do not restore it. However, this is irrelevant since all the functions that depend on that state will set it for themselves: - ftp_nlist() and ftp_rawlist() already do just that - they just set the type to ASCII and do not restore it. - ftp_get(), ftp_fget(), ftp_put() and ftp_fput() require you to set the type explicitly - other functions do not depend on transfer type (except for ftp_size() ). It was an obvious oversight not to make ftp_size() set the mode before requesting the size of a file (I would have never imagined that the size of the file differs depending on whether we do 'dir' in text mode or binary mode... duh!) So, to wrap it up. Making that change will not affect *any* other functionality of the ftp extension (you are welcome to read through the source - I just did that) and will fix ftp_size() to consistently return correct results. Question: Does anybody object to putting that change in, *and* also merging it into the release branch? This is an obvious bug, and the fix doesn't affect anything else. Vlad -- PHP Development Mailing List <http://www.php.net/> To unsubscribe, visit: http://www.php.net/unsub.phpPHP: Scripting the Web - derick@php.net All your branches are belong to me! SRM: Script Running Machine - www.vl-srm.net-----------------------------------------------------------------------