diff options
author | Vladimir Ermakov <vooon341@gmail.com> | 2014-09-15 21:29:19 +0400 |
---|---|---|
committer | Vladimir Ermakov <vooon341@gmail.com> | 2014-09-15 21:29:19 +0400 |
commit | 006717734c351926e8daced9805767970c5e65b7 (patch) | |
tree | 7cbcf95edc0a988f035d448e9d9787a2abf19404 /src | |
parent | 21367222379d6ae3b1c5c774942ac2aac5ca32cb (diff) | |
download | px4-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.cpp | 12 | ||||
-rw-r--r-- | src/modules/mavlink/mavlink_ftp.h | 1 |
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); |