mirror of https://github.com/wolfSSL/wolfssh.git
commit
6129cf66d3
|
@ -52,6 +52,7 @@ AC_PROG_INSTALL
|
||||||
AC_HEADER_STDC
|
AC_HEADER_STDC
|
||||||
AC_CHECK_SIZEOF([long long])
|
AC_CHECK_SIZEOF([long long])
|
||||||
AC_CHECK_SIZEOF([long])
|
AC_CHECK_SIZEOF([long])
|
||||||
|
AC_CHECK_SIZEOF([off_t])
|
||||||
|
|
||||||
# Check headers/libs
|
# Check headers/libs
|
||||||
AC_CHECK_FUNCS([gethostbyname getaddrinfo gettimeofday inet_ntoa memset socket])
|
AC_CHECK_FUNCS([gethostbyname getaddrinfo gettimeofday inet_ntoa memset socket])
|
||||||
|
|
22
src/port.c
22
src/port.c
|
@ -85,6 +85,16 @@ int wfopen(WFILE** f, const char* filename, const char* mode)
|
||||||
#if (defined(WOLFSSH_SFTP) || defined(WOLFSSH_SCP)) && \
|
#if (defined(WOLFSSH_SFTP) || defined(WOLFSSH_SCP)) && \
|
||||||
!defined(NO_WOLFSSH_SERVER)
|
!defined(NO_WOLFSSH_SERVER)
|
||||||
|
|
||||||
|
#ifndef SIZEOF_OFF_T
|
||||||
|
/* if not using autoconf then make a guess on off_t size based on sizeof
|
||||||
|
* long long */
|
||||||
|
#if defined(SIZEOF_LONG) && SIZEOF_LONG == 8
|
||||||
|
#define SIZEOF_OFF_T 8
|
||||||
|
#else
|
||||||
|
#define SIZEOF_OFF_T 4
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(USE_WINDOWS_API) || defined(WOLFSSL_NUCLEUS) || \
|
#if defined(USE_WINDOWS_API) || defined(WOLFSSL_NUCLEUS) || \
|
||||||
defined(FREESCALE_MQX)
|
defined(FREESCALE_MQX)
|
||||||
|
|
||||||
|
@ -122,7 +132,11 @@ int wfopen(WFILE** f, const char* filename, const char* mode)
|
||||||
int wPwrite(WFD fd, unsigned char* buf, unsigned int sz,
|
int wPwrite(WFD fd, unsigned char* buf, unsigned int sz,
|
||||||
const unsigned int* shortOffset)
|
const unsigned int* shortOffset)
|
||||||
{
|
{
|
||||||
long offset = ((long)shortOffset[1] << 32) | shortOffset[0];
|
off_t offset = (off_t)shortOffset[0];
|
||||||
|
|
||||||
|
#if SIZEOF_OFF_T == 8
|
||||||
|
offset = ((off_t)shortOffset[1] << 32) | offset;
|
||||||
|
#endif
|
||||||
return (int)pwrite(fd, buf, sz, offset);
|
return (int)pwrite(fd, buf, sz, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,7 +144,11 @@ int wfopen(WFILE** f, const char* filename, const char* mode)
|
||||||
int wPread(WFD fd, unsigned char* buf, unsigned int sz,
|
int wPread(WFD fd, unsigned char* buf, unsigned int sz,
|
||||||
const unsigned int* shortOffset)
|
const unsigned int* shortOffset)
|
||||||
{
|
{
|
||||||
long offset = ((long)shortOffset[1] << 32) | shortOffset[0];
|
off_t offset = (off_t)shortOffset[0];
|
||||||
|
|
||||||
|
#if SIZEOF_OFF_T == 8
|
||||||
|
offset = ((off_t)shortOffset[1] << 32) | offset;
|
||||||
|
#endif
|
||||||
return (int)pread(fd, buf, sz, offset);
|
return (int)pread(fd, buf, sz, offset);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3807,7 +3807,9 @@ int SFTP_GetAttributes(void* fs, const char* fileName, WS_SFTP_FILEATRB* atr,
|
||||||
|
|
||||||
atr->flags |= WOLFSSH_FILEATRB_SIZE;
|
atr->flags |= WOLFSSH_FILEATRB_SIZE;
|
||||||
atr->sz[0] = (word32)(stats.st_size & 0xFFFFFFFF);
|
atr->sz[0] = (word32)(stats.st_size & 0xFFFFFFFF);
|
||||||
|
#if SIZEOF_OFF_T == 8
|
||||||
atr->sz[1] = (word32)((stats.st_size >> 32) & 0xFFFFFFFF);
|
atr->sz[1] = (word32)((stats.st_size >> 32) & 0xFFFFFFFF);
|
||||||
|
#endif
|
||||||
|
|
||||||
atr->flags |= WOLFSSH_FILEATRB_UIDGID;
|
atr->flags |= WOLFSSH_FILEATRB_UIDGID;
|
||||||
atr->uid = (word32)stats.st_uid;
|
atr->uid = (word32)stats.st_uid;
|
||||||
|
@ -3849,7 +3851,9 @@ int SFTP_GetAttributes_Handle(WOLFSSH* ssh, byte* handle, int handleSz,
|
||||||
|
|
||||||
atr->flags |= WOLFSSH_FILEATRB_SIZE;
|
atr->flags |= WOLFSSH_FILEATRB_SIZE;
|
||||||
atr->sz[0] = (word32)(stats.st_size & 0xFFFFFFFF);
|
atr->sz[0] = (word32)(stats.st_size & 0xFFFFFFFF);
|
||||||
|
#if SIZEOF_OFF_T == 8
|
||||||
atr->sz[1] = (word32)((stats.st_size >> 32) & 0xFFFFFFFF);
|
atr->sz[1] = (word32)((stats.st_size >> 32) & 0xFFFFFFFF);
|
||||||
|
#endif
|
||||||
|
|
||||||
atr->flags |= WOLFSSH_FILEATRB_UIDGID;
|
atr->flags |= WOLFSSH_FILEATRB_UIDGID;
|
||||||
atr->uid = (word32)stats.st_uid;
|
atr->uid = (word32)stats.st_uid;
|
||||||
|
|
Loading…
Reference in New Issue