mirror of
https://github.com/wiiu-env/ftpiiu_plugin.git
synced 2024-11-25 22:24:17 +01:00
Handle archive bit gracefully
This commit is contained in:
parent
7364ea7dd5
commit
9f31cde4ee
@ -1699,9 +1699,46 @@ bool FtpSession::listTransfer ()
|
|||||||
// lstat the entry
|
// lstat the entry
|
||||||
if (::lstat (fullPath.c_str (), &st) != 0)
|
if (::lstat (fullPath.c_str (), &st) != 0)
|
||||||
{
|
{
|
||||||
|
#ifndef __SWITCH__
|
||||||
sendResponse ("550 %s\r\n", std::strerror (errno));
|
sendResponse ("550 %s\r\n", std::strerror (errno));
|
||||||
setState (State::COMMAND, true, true);
|
setState (State::COMMAND, true, true);
|
||||||
return false;
|
return false;
|
||||||
|
#else
|
||||||
|
// probably archive bit set; list name with dummy stats
|
||||||
|
std::memset (&st, 0, sizeof (st));
|
||||||
|
error ("%s: type %u\n", dent->d_name, dent->d_type);
|
||||||
|
switch (dent->d_type)
|
||||||
|
{
|
||||||
|
case DT_BLK:
|
||||||
|
st.st_mode = S_IFBLK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DT_CHR:
|
||||||
|
st.st_mode = S_IFCHR;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DT_DIR:
|
||||||
|
st.st_mode = S_IFDIR;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DT_FIFO:
|
||||||
|
st.st_mode = S_IFIFO;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DT_LNK:
|
||||||
|
st.st_mode = S_IFLNK;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DT_REG:
|
||||||
|
case DT_UNKNOWN:
|
||||||
|
st.st_mode = S_IFREG;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case DT_SOCK:
|
||||||
|
st.st_mode = S_IFSOCK;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
auto const path = encodePath (dent->d_name);
|
auto const path = encodePath (dent->d_name);
|
||||||
|
Loading…
Reference in New Issue
Block a user