[1.0] Various fixes to fopen mode handling in SFTP Stream
* bantu/SFTPStreamTest:
Explicitly set size to 0 when creating or truncating.
mode[0] of 'c' is not supposed to truncate.
Need to create the file when it does not exist and mode[0] is not 'r'.
Add SFTPStreamTest::testFopenFcloseCreatesFile()
SFTP: update conditions under which cache for lstat / . is used for 1.0 branch
* terrafrost/lstat-fix-1.0:
Tests/SFTP: $lstat->$stat
Tests/SFTP: just check to see that stat / lstat return an array
SFTP: update conditions under which cache for lstat / . is used
Tests/SFTP: add test for stat's on .
fix E_NOTICE with SSH2 global requests
* terrafrost/ssh2-global-request:
SSH2: string shift by 4 instead of by 1
SSH2: fix E_NOTICE involving global requests
First one: e9b698fd65075273ec11a1ffae3ebeccaad6e086, fba6894474b767fcacb2dc25cae1508107b417be, 1cd286642ef6ceb5a0c2405799f68798eb20470e
Second one: 16430d4d2e77e257c26b3a00542faefa56b2454e, 0cc6125f8795f577aa9e01535c1a58545e290866
make it so that the timeout in the constructor behaves in the same
way that timeout's set via setTimeout() do. eg. isTimeout() tells
you if a timeout was thrown etc.
SSH2: update conditions under which _disconnect's code is executed
* terrafrost/disconnect-fix:
SSH2: update conditions under which _disconnect's code is executed
Currently, Net_SCP::put() has a callback parameter, allowing the consumer to monitor/log/report progress (or whatever they please).
This patch adds the same feature, working in the same way, to Net_SFTP::put()
the last _send_channel_packet was unnecessarily complex. this lead
to a number of problems. for example,
the window size was checked for adjustments in two places. in the
second place it receives a window adjustment packet and just assumes
that the window adjustment packet was big enough for the rest of the
data.
(thanks, pixall!)
Currently, the call to "scp -t" or "scp -f" just uses naive quoting - i.e. a couple of quote marks are thrown in.
But, this can easily be escaped from - if the filename has a quote mark of its own in it, for example.
e.g. if the filename is as follows, then bad things will happen:
";rm -rf /
Instead, escapeshellarg should be used, to make sure it gets escaped properly.