mirror of
https://gitee.com/mirrors_PX4/PX4-Autopilot.git
synced 2026-11-03 05:21:35 +08:00
FTP: fix truncate errors. Also correct errno reporting.
Seems that warnx() everytime changes originak errno to EINVAL.
This commit is contained in:
@@ -230,6 +230,7 @@ out:
|
|||||||
warnx("FTP: ack\n");
|
warnx("FTP: ack\n");
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
|
int r_errno = errno;
|
||||||
warnx("FTP: nak %u", errorCode);
|
warnx("FTP: nak %u", errorCode);
|
||||||
payload->req_opcode = payload->opcode;
|
payload->req_opcode = payload->opcode;
|
||||||
payload->opcode = kRspNak;
|
payload->opcode = kRspNak;
|
||||||
@@ -237,7 +238,7 @@ out:
|
|||||||
payload->data[0] = errorCode;
|
payload->data[0] = errorCode;
|
||||||
if (errorCode == kErrFailErrno) {
|
if (errorCode == kErrFailErrno) {
|
||||||
payload->size = 2;
|
payload->size = 2;
|
||||||
payload->data[1] = errno;
|
payload->data[1] = r_errno;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -544,8 +545,7 @@ MavlinkFTP::_workTruncateFile(PayloadHeader* payload)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check perms allow us to write (not romfs)
|
// check perms allow us to write (not romfs)
|
||||||
int mode = st.st_mode & (S_IRWXU | S_IRWXG | S_IRWXO);
|
if (!(st.st_mode & (S_IWUSR | S_IWGRP | S_IWOTH))) {
|
||||||
if (!(mode & ~(S_IRUSR | S_IXUSR | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH))) {
|
|
||||||
errno = EROFS;
|
errno = EROFS;
|
||||||
return kErrFailErrno;
|
return kErrFailErrno;
|
||||||
}
|
}
|
||||||
@@ -571,7 +571,7 @@ MavlinkFTP::_workTruncateFile(PayloadHeader* payload)
|
|||||||
return kErrFailErrno;
|
return kErrFailErrno;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lseek(fd, payload->offset - 1, SEEK_SET) != 0) {
|
if (lseek(fd, payload->offset - 1, SEEK_SET) < 0) {
|
||||||
::close(fd);
|
::close(fd);
|
||||||
return kErrFailErrno;
|
return kErrFailErrno;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user