Go to the documentation of this file.
32 #define TRACE_LEVEL SFTP_TRACE_LEVEL
51 uint8_t *
p,
size_t *written)
84 p +=
sizeof(uint32_t) +
n;
85 *written +=
sizeof(uint32_t) +
n;
119 static const char_t months[13][4] =
137 if(attributes->
flags != 0)
140 n =
osSprintf(
p,
"---------- 1 owner group %10" PRIu64,
206 n +=
osSprintf(
p +
n,
" %s %02" PRIu8
" %02" PRIu8
":%02" PRIu8,
251 uint32_t permissions;
260 p +=
sizeof(uint32_t);
261 *written +=
sizeof(uint32_t);
268 p[0] = (uint8_t) attributes->
type;
271 p +=
sizeof(uint8_t);
272 *written +=
sizeof(uint8_t);
282 p +=
sizeof(uint64_t);
283 *written +=
sizeof(uint64_t);
293 p +=
sizeof(uint32_t);
294 *written +=
sizeof(uint32_t);
300 p +=
sizeof(uint32_t);
301 *written +=
sizeof(uint32_t);
321 p +=
sizeof(uint32_t);
322 *written +=
sizeof(uint32_t);
334 p +=
sizeof(uint32_t);
335 *written +=
sizeof(uint32_t);
343 p +=
sizeof(uint32_t);
344 *written +=
sizeof(uint32_t);
363 size_t length,
size_t *consumed)
382 p +=
sizeof(uint32_t) +
name->filename.length;
383 length -=
sizeof(uint32_t) +
name->filename.length;
395 p +=
sizeof(uint32_t) +
name->longname.length;
396 length -=
sizeof(uint32_t) +
name->longname.length;
414 name->longname.length > 0)
417 if(
name->longname.value[0] ==
'd')
429 *consumed =
p -
data;
447 const uint8_t *
data,
size_t length,
size_t *consumed)
452 uint32_t extendedCount;
464 if(
length <
sizeof(uint32_t))
471 p +=
sizeof(uint32_t);
472 length -=
sizeof(uint32_t);
479 if(
length <
sizeof(uint8_t))
486 p +=
sizeof(uint8_t);
487 length -=
sizeof(uint8_t);
499 if(
length <
sizeof(uint64_t))
506 p +=
sizeof(uint64_t);
507 length -=
sizeof(uint64_t);
514 if(
length <
sizeof(uint32_t))
521 p +=
sizeof(uint32_t);
522 length -=
sizeof(uint32_t);
525 if(
length <
sizeof(uint32_t))
532 p +=
sizeof(uint32_t);
533 length -=
sizeof(uint32_t);
540 if(
length <
sizeof(uint32_t))
554 p +=
sizeof(uint32_t);
555 length -=
sizeof(uint32_t);
562 if(
length <
sizeof(uint32_t))
571 p +=
sizeof(uint32_t);
572 length -=
sizeof(uint32_t);
575 if(
length <
sizeof(uint32_t))
584 p +=
sizeof(uint32_t);
585 length -=
sizeof(uint32_t);
592 if(
length <
sizeof(uint32_t))
599 p +=
sizeof(uint32_t);
600 length -=
sizeof(uint32_t);
610 for(i = 0; i < extendedCount; i++)
620 p +=
sizeof(uint32_t) + extendedType.
length;
630 p +=
sizeof(uint32_t) + extendedData.
length;
635 *consumed =
p -
data;
702 uint32_t permissions;
#define SSH_FILEXFER_ATTR_EXTENDED
time_t convertDateToUnixTime(const DateTime *date)
Convert date to Unix timestamp.
error_t sftpFormatName(SftpVersion version, const SftpName *name, uint8_t *p, size_t *written)
Format name structure.
error_t sshParseString(const uint8_t *p, size_t length, SshString *string)
Parse a string.
void convertUnixTimeToDate(time_t t, DateTime *date)
Convert Unix timestamp to date.
@ SSH_FILEXFER_TYPE_CHAR_DEVICE
#define SSH_FILEXFER_ATTR_SIZE
error_t sshFormatBinaryString(const void *value, size_t valueLen, uint8_t *p, size_t *written)
Format a binary string.
@ SSH_FILEXFER_TYPE_REGULAR
#define osMemcpy(dest, src, length)
#define osSprintf(dest,...)
error_t sftpParseAttributes(SftpVersion version, SftpFileAttrs *attributes, const uint8_t *data, size_t length, size_t *consumed)
Parse file attributes.
error_t sftpParseName(SftpVersion version, SftpName *name, const uint8_t *data, size_t length, size_t *consumed)
Parse name structure.
error_t sftpFormatAttributes(SftpVersion version, const SftpFileAttrs *attributes, uint8_t *p, size_t *written)
Format file attributes.
@ SSH_FILEXFER_TYPE_UNKNOWN
SftpFileType sftpConvertPermToFileType(uint32_t permissions)
Extract file type from permission bits.
#define SSH_FILEXFER_ATTR_ACMODTIME
@ SSH_FILEXFER_TYPE_SOCKET
error_t sftpFormatLongFilename(const SshString *filename, const SftpFileAttrs *attributes, char_t *p, size_t *written)
Format long file name.
#define SSH_FILEXFER_ATTR_PERMISSIONS
@ SSH_FILEXFER_TYPE_DIRECTORY
Definitions common to SFTP client and server.
SftpVersion
SFTP protocol version.
@ SSH_FILEXFER_TYPE_BLOCK_DEVICE
uint32_t sftpConvertFileTypeToPerm(SftpFileType type)
Convert file type to permission bits.
@ SSH_FILEXFER_TYPE_SYMLINK
#define osMemset(p, value, length)
__weak_func time_t getCurrentUnixTime(void)
Get current time.
#define SSH_FILEXFER_ATTR_UIDGID