- added Net_SFTP::rawlist() (thanks, theduck!)

git-svn-id: http://phpseclib.svn.sourceforge.net/svnroot/phpseclib/trunk@100 21d32557-59b3-4da0-833f-c5933fad653e
This commit is contained in:
Jim Wigginton 2010-04-08 14:41:07 +00:00
parent 39c97d3373
commit 95153d6d59

View File

@ -48,7 +48,7 @@
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @copyright MMIX Jim Wigginton * @copyright MMIX Jim Wigginton
* @license http://www.gnu.org/licenses/lgpl.txt * @license http://www.gnu.org/licenses/lgpl.txt
* @version $Id: SFTP.php,v 1.19 2010-04-07 03:50:54 terrafrost Exp $ * @version $Id: SFTP.php,v 1.20 2010-04-08 14:41:07 terrafrost Exp $
* @link http://phpseclib.sourceforge.net * @link http://phpseclib.sourceforge.net
*/ */
@ -574,6 +574,23 @@ class Net_SFTP extends Net_SSH2 {
* @access public * @access public
*/ */
function nlist($dir = '.') function nlist($dir = '.')
{
return $this->_list($dir, false);
}
/**
* Returns a list of files in the given directory
*
* @param optional String $dir
* @return Mixed
* @access public
*/
function rawlist($dir = '.')
{
return $this->_list($dir, true);
}
function _list($dir, $raw = true)
{ {
if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) { if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
return false; return false;
@ -622,10 +639,15 @@ class Net_SFTP extends Net_SSH2 {
extract(unpack('Ncount', $this->_string_shift($response, 4))); extract(unpack('Ncount', $this->_string_shift($response, 4)));
for ($i = 0; $i < $count; $i++) { for ($i = 0; $i < $count; $i++) {
extract(unpack('Nlength', $this->_string_shift($response, 4))); extract(unpack('Nlength', $this->_string_shift($response, 4)));
$contents[] = $this->_string_shift($response, $length); $shortname = $this->_string_shift($response, $length);
extract(unpack('Nlength', $this->_string_shift($response, 4))); extract(unpack('Nlength', $this->_string_shift($response, 4)));
$this->_string_shift($response, $length); // we don't care about the longname $this->_string_shift($response, $length); // SFTPv4+ drop this field - the "longname" field
$this->_parseAttributes($response); // we also don't care about the attributes $attributes = $this->_parseAttributes($response); // we also don't care about the attributes
if ($raw) {
$contents[] = $shortname;
} else {
$contents[$shortname] = $attributes;
}
// SFTPv6 has an optional boolean end-of-list field, but we'll ignore that, since the // SFTPv6 has an optional boolean end-of-list field, but we'll ignore that, since the
// final SSH_FXP_STATUS packet should tell us that, already. // final SSH_FXP_STATUS packet should tell us that, already.
} }