aboutsummaryrefslogtreecommitdiff
path: root/libssh/sftp.c
diff options
context:
space:
mode:
authorAndreas Schneider <mail@cynapses.org>2009-02-02 16:47:51 +0000
committerAndreas Schneider <mail@cynapses.org>2009-02-02 16:47:51 +0000
commit5f58fc773ca9a0eb840654acd7896bb294ad4635 (patch)
tree311ec298026e118e05573983ece0835e5419410e /libssh/sftp.c
parent3991b3a3aaceca4b6090688af133c1ed1161ce1e (diff)
downloadlibssh-5f58fc773ca9a0eb840654acd7896bb294ad4635.tar.gz
libssh-5f58fc773ca9a0eb840654acd7896bb294ad4635.tar.xz
libssh-5f58fc773ca9a0eb840654acd7896bb294ad4635.zip
Fix build warnings in sftp code.
git-svn-id: svn+ssh://svn.berlios.de/svnroot/repos/libssh/trunk@218 7dcaeef0-15fb-0310-b436-a5af3365683c
Diffstat (limited to 'libssh/sftp.c')
-rw-r--r--libssh/sftp.c61
1 files changed, 37 insertions, 24 deletions
diff --git a/libssh/sftp.c b/libssh/sftp.c
index 69e24f8b..03abddc2 100644
--- a/libssh/sftp.c
+++ b/libssh/sftp.c
@@ -69,10 +69,12 @@ SFTP_SESSION *sftp_server_new(SSH_SESSION *session, CHANNEL *chan){
}
int sftp_server_init(SFTP_SESSION *sftp){
- sftp_enter_function();
- SFTP_PACKET *packet=sftp_packet_read(sftp);
- u32 version;
+ SFTP_PACKET *packet;
BUFFER *reply;
+ u32 version;
+
+ sftp_enter_function();
+ packet=sftp_packet_read(sftp);
if(!packet){
sftp_leave_function();
return -1;
@@ -125,12 +127,14 @@ void sftp_free(SFTP_SESSION *sftp){
}
int sftp_packet_write(SFTP_SESSION *sftp,u8 type, BUFFER *payload){
- u32 size;
+ int size;
buffer_add_data_begin(payload,&type,sizeof(u8));
size=htonl(buffer_get_len(payload));
buffer_add_data_begin(payload,&size,sizeof(u32));
size=channel_write(sftp->channel,buffer_get(payload),buffer_get_len(payload));
- if(size != buffer_get_len(payload)){
+ if (size < 0) {
+ return -1;
+ } else if((u32) size != buffer_get_len(payload)){
ssh_say(1,"had to write %d bytes, wrote only %d\n",buffer_get_len(payload),size);
}
return size;
@@ -184,8 +188,10 @@ int sftp_get_error(SFTP_SESSION *sftp) {
}
static SFTP_MESSAGE *sftp_message_new(SFTP_SESSION *sftp){
- sftp_enter_function();
- SFTP_MESSAGE *msg=malloc(sizeof(SFTP_MESSAGE));
+ SFTP_MESSAGE *msg;
+ sftp_enter_function();
+
+ msg=malloc(sizeof(SFTP_MESSAGE));
memset(msg,0,sizeof(*msg));
msg->payload=buffer_new();
msg->sftp=sftp;
@@ -202,7 +208,7 @@ static void sftp_message_free(SFTP_MESSAGE *msg){
sftp_leave_function();
}
-SFTP_MESSAGE *sftp_get_message(SFTP_PACKET *packet){
+static SFTP_MESSAGE *sftp_get_message(SFTP_PACKET *packet){
SFTP_SESSION *sftp=packet->sftp;
SFTP_MESSAGE *msg=sftp_message_new(sftp);
sftp_enter_function();
@@ -228,7 +234,7 @@ SFTP_MESSAGE *sftp_get_message(SFTP_PACKET *packet){
return msg;
}
-int sftp_read_and_dispatch(SFTP_SESSION *sftp){
+static int sftp_read_and_dispatch(SFTP_SESSION *sftp){
SFTP_PACKET *packet;
SFTP_MESSAGE *message=NULL;
sftp_enter_function();
@@ -297,14 +303,14 @@ int sftp_init(SFTP_SESSION *sftp){
return 0;
}
-REQUEST_QUEUE *request_queue_new(SFTP_MESSAGE *msg){
+static REQUEST_QUEUE *request_queue_new(SFTP_MESSAGE *msg){
REQUEST_QUEUE *queue=malloc(sizeof(REQUEST_QUEUE));
memset(queue,0,sizeof(REQUEST_QUEUE));
queue->message=msg;
return queue;
}
-void request_queue_free(REQUEST_QUEUE *queue){
+static void request_queue_free(REQUEST_QUEUE *queue){
memset(queue,0,sizeof(*queue));
free(queue);
}
@@ -325,7 +331,7 @@ void sftp_enqueue(SFTP_SESSION *session, SFTP_MESSAGE *msg){
}
/* pulls of a message from the queue based on the ID. returns null if no message has been found */
-SFTP_MESSAGE *sftp_dequeue(SFTP_SESSION *session, u32 id){
+static SFTP_MESSAGE *sftp_dequeue(SFTP_SESSION *session, u32 id){
REQUEST_QUEUE *queue,*prev=NULL;
SFTP_MESSAGE *msg;
if(session->queue==NULL){
@@ -355,11 +361,11 @@ SFTP_MESSAGE *sftp_dequeue(SFTP_SESSION *session, u32 id){
* Assigns a new sftp ID for new requests and assures there is no collision between them.
* Returns a new ID ready to use in a request
*/
-inline u32 sftp_get_new_id(SFTP_SESSION *session){
+static inline u32 sftp_get_new_id(SFTP_SESSION *session){
return ++session->id_counter;
}
-STATUS_MESSAGE *parse_status_msg(SFTP_MESSAGE *msg){
+static STATUS_MESSAGE *parse_status_msg(SFTP_MESSAGE *msg){
STATUS_MESSAGE *status;
if(msg->packet_type != SSH_FXP_STATUS){
ssh_set_error(msg->sftp->session, SSH_FATAL,"Not a ssh_fxp_status message passed in !");
@@ -384,7 +390,7 @@ STATUS_MESSAGE *parse_status_msg(SFTP_MESSAGE *msg){
return status;
}
-void status_msg_free(STATUS_MESSAGE *status){
+static void status_msg_free(STATUS_MESSAGE *status){
if(status->errormsg)
free(status->errormsg);
if(status->error)
@@ -396,7 +402,7 @@ void status_msg_free(STATUS_MESSAGE *status){
free(status);
}
-SFTP_FILE *parse_handle_msg(SFTP_MESSAGE *msg){
+static SFTP_FILE *parse_handle_msg(SFTP_MESSAGE *msg){
SFTP_FILE *file;
if(msg->packet_type != SSH_FXP_HANDLE){
ssh_set_error(msg->sftp->session,SSH_FATAL,"Not a ssh_fxp_handle message passed in !");
@@ -471,12 +477,17 @@ SFTP_DIR *sftp_opendir(SFTP_SESSION *sftp, const char *path){
/* please excuse me for the inaccuracy of the code. it isn't my fault, it's sftp draft's one */
/* this code is dead anyway ... */
/* version 4 specific code */
-SFTP_ATTRIBUTES *sftp_parse_attr_4(SFTP_SESSION *sftp,BUFFER *buf,int expectnames){
+static SFTP_ATTRIBUTES *sftp_parse_attr_4(SFTP_SESSION *sftp, BUFFER *buf,
+ int expectnames) {
u32 flags=0;
SFTP_ATTRIBUTES *attr=malloc(sizeof(SFTP_ATTRIBUTES));
STRING *owner=NULL;
STRING *group=NULL;
int ok=0;
+
+ /* unused member variable */
+ (void) expectnames;
+
memset(attr,0,sizeof(*attr));
/* it isn't really a loop, but i use it because it's like a try..catch.. construction in C */
do {
@@ -590,7 +601,8 @@ SFTP_ATTRIBUTES *sftp_parse_attr_4(SFTP_SESSION *sftp,BUFFER *buf,int expectname
string extended_data
... more extended data (extended_type - extended_data pairs),
so that number of pairs equals extended_count */
-SFTP_ATTRIBUTES *sftp_parse_attr_3(SFTP_SESSION *sftp,BUFFER *buf,int expectname){
+static SFTP_ATTRIBUTES *sftp_parse_attr_3(SFTP_SESSION *sftp, BUFFER *buf,
+ int expectname) {
u32 flags=0;
STRING *name;
STRING *longname;
@@ -847,7 +859,7 @@ static int sftp_handle_close(SFTP_SESSION *sftp, STRING *handle){
}
int sftp_file_close(SFTP_FILE *file) {
- sftp_close(file);
+ return sftp_close(file);
}
/* Close an open file handle. */
@@ -1030,7 +1042,7 @@ ssize_t sftp_read(SFTP_FILE *handle, void *buf, size_t count){
}
/* Start an asynchronous read from a file using an opened sftp file handle. */
-u32 sftp_async_read_begin(SFTP_FILE *file, int len){
+u32 sftp_async_read_begin(SFTP_FILE *file, u32 len){
SFTP_SESSION *sftp=file->sftp;
BUFFER *buffer;
u32 id;
@@ -1049,13 +1061,13 @@ u32 sftp_async_read_begin(SFTP_FILE *file, int len){
}
/* Wait for an asynchronous read to complete and save the data. */
-int sftp_async_read(SFTP_FILE *file, void *data, int size, u32 id){
+int sftp_async_read(SFTP_FILE *file, void *data, u32 size, u32 id){
SFTP_MESSAGE *msg=NULL;
STATUS_MESSAGE *status;
SFTP_SESSION *sftp=file->sftp;
STRING *datastring;
int err=0;
- int len;
+ u32 len;
sftp_enter_function();
if(file->eof){
sftp_leave_function();
@@ -1144,7 +1156,8 @@ ssize_t sftp_write(SFTP_FILE *file, const void *buf, size_t count){
string_fill(datastring, buf, count);
buffer_add_ssh_string(buffer,datastring);
free(datastring);
- if(sftp_packet_write(file->sftp,SSH_FXP_WRITE,buffer) != buffer_get_len(buffer)){
+ if((u32) sftp_packet_write(file->sftp,SSH_FXP_WRITE,buffer)
+ != buffer_get_len(buffer)) {
ssh_say(1,"sftp_packet_write did not write as much data as expected\n");
}
buffer_free(buffer);
@@ -1543,7 +1556,7 @@ char *sftp_canonicalize_path(SFTP_SESSION *sftp, const char *path)
return NULL;
}
-SFTP_ATTRIBUTES *sftp_xstat(SFTP_SESSION *sftp, const char *path, int param){
+static SFTP_ATTRIBUTES *sftp_xstat(SFTP_SESSION *sftp, const char *path, int param){
u32 id=sftp_get_new_id(sftp);
BUFFER *buffer=buffer_new();
STRING *pathstr= string_from_char(path);