summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/libssh/libssh.h3
-rw-r--r--src/scp.c15
2 files changed, 16 insertions, 2 deletions
diff --git a/include/libssh/libssh.h b/include/libssh/libssh.h
index 2a8c70f..2b9aa50 100644
--- a/include/libssh/libssh.h
+++ b/include/libssh/libssh.h
@@ -495,7 +495,8 @@ LIBSSH_API int ssh_scp_push_file64(ssh_scp scp, const char *filename, uint64_t s
LIBSSH_API int ssh_scp_read(ssh_scp scp, void *buffer, size_t size);
LIBSSH_API const char *ssh_scp_request_get_filename(ssh_scp scp);
LIBSSH_API int ssh_scp_request_get_permissions(ssh_scp scp);
-LIBSSH_API uint64_t ssh_scp_request_get_size(ssh_scp scp);
+LIBSSH_API size_t ssh_scp_request_get_size(ssh_scp scp);
+LIBSSH_API uint64_t ssh_scp_request_get_size64(ssh_scp scp);
LIBSSH_API const char *ssh_scp_request_get_warning(ssh_scp scp);
LIBSSH_API int ssh_scp_write(ssh_scp scp, const void *buffer, size_t len);
LIBSSH_API int ssh_select(ssh_channel *channels, ssh_channel *outchannels, socket_t maxfd,
diff --git a/src/scp.c b/src/scp.c
index e903775..ac53345 100644
--- a/src/scp.c
+++ b/src/scp.c
@@ -737,8 +737,21 @@ int ssh_scp_request_get_permissions(ssh_scp scp){
/** @brief Get the size of the file being pushed from the other party.
*
* @returns The numeric size of the file being read.
+ * @warning The real size may not fit in a 32 bits field and may
+ * be truncated.
+ * @see ssh_scp_request_get_size64()
*/
-uint64_t ssh_scp_request_get_size(ssh_scp scp){
+size_t ssh_scp_request_get_size(ssh_scp scp){
+ if(scp==NULL)
+ return 0;
+ return scp->filelen;
+}
+
+/** @brief Get the size of the file being pushed from the other party.
+ *
+ * @returns The numeric size of the file being read.
+ */
+uint64_t ssh_scp_request_get_size64(ssh_scp scp){
if(scp==NULL)
return 0;
return scp->filelen;