aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorVladimir Ermakov <vooon341@gmail.com>2014-09-15 21:29:19 +0400
committerVladimir Ermakov <vooon341@gmail.com>2014-09-15 21:29:19 +0400
commit006717734c351926e8daced9805767970c5e65b7 (patch)
tree7cbcf95edc0a988f035d448e9d9787a2abf19404 /src
parent21367222379d6ae3b1c5c774942ac2aac5ca32cb (diff)
downloadpx4-firmware-006717734c351926e8daced9805767970c5e65b7.tar.gz
px4-firmware-006717734c351926e8daced9805767970c5e65b7.tar.bz2
px4-firmware-006717734c351926e8daced9805767970c5e65b7.zip
FTP: Add skip entry information for proper offset calculation.
Diffstat (limited to 'src')
-rw-r--r--src/modules/mavlink/mavlink_ftp.cpp12
-rw-r--r--src/modules/mavlink/mavlink_ftp.h1
2 files changed, 9 insertions, 4 deletions
diff --git a/src/modules/mavlink/mavlink_ftp.cpp b/src/modules/mavlink/mavlink_ftp.cpp
index cf5fae3b3..2a85c3702 100644
--- a/src/modules/mavlink/mavlink_ftp.cpp
+++ b/src/modules/mavlink/mavlink_ftp.cpp
@@ -351,16 +351,20 @@ MavlinkFTP::_workList(PayloadHeader* payload)
case DTYPE_DIRECTORY:
if (strcmp(entry.d_name, ".") == 0 || strcmp(entry.d_name, "..") == 0) {
// Don't bother sending these back
- continue;
+ direntType = kDirentSkip;
+ } else {
+ direntType = kDirentDir;
}
- direntType = kDirentDir;
break;
default:
// We only send back file and diretory entries, skip everything else
- continue;
+ direntType = kDirentSkip;
}
- if (entry.d_type == DTYPE_FILE) {
+ if (direntType == kDirentSkip) {
+ // Skip send only dirent identifier
+ buf[0] = '\0';
+ } else if (direntType == kDirentFile) {
// Files send filename and file length
snprintf(buf, sizeof(buf), "%s\t%d", entry.d_name, fileSize);
} else {
diff --git a/src/modules/mavlink/mavlink_ftp.h b/src/modules/mavlink/mavlink_ftp.h
index b52561e8a..657e2f855 100644
--- a/src/modules/mavlink/mavlink_ftp.h
+++ b/src/modules/mavlink/mavlink_ftp.h
@@ -159,6 +159,7 @@ private:
static const char kDirentFile = 'F'; ///< Identifies File returned from List command
static const char kDirentDir = 'D'; ///< Identifies Directory returned from List command
+ static const char kDirentSkip = 'S'; ///< Identifies Skipped entry from List command
/// @brief Maximum data size in RequestHeader::data
static const uint8_t kMaxDataLength = MAVLINK_MSG_FILE_TRANSFER_PROTOCOL_FIELD_PAYLOAD_LEN - sizeof(PayloadHeader);