Integer type name change.
[silc.git] / lib / silcsftp / sftp_client.c
index 29ee2076ecd8972852c5e608bb25dce36e7ebf9b..a4b671e46fa36b43b55fa782f9b21d2d06b979b1 100644 (file)
@@ -24,8 +24,8 @@
 
 /* Request context. Every request will allocate this context and set
    the correct callback function according the `type' field. */
-typedef struct {
-  uint32 id;
+typedef struct SilcSFTPRequestStruct {
+  SilcUInt32 id;
   SilcSFTPPacket type;
   SilcSFTPStatusCallback status;
   SilcSFTPHandleCallback handle;
@@ -34,6 +34,7 @@ typedef struct {
   SilcSFTPAttrCallback attr;
   SilcSFTPExtendedCallback extended;
   void *context;
+  struct SilcSFTPRequestStruct *next;
 } *SilcSFTPRequest;
 
 /* SFTP client context */
@@ -43,21 +44,22 @@ typedef struct {
   void *send_context;
   SilcSFTPVersionCallback version;
   void *version_context;
-  uint32 id;
-  SilcDList requests;
+  SilcUInt32 id;
+  SilcList requests;
+  SilcBuffer packet;
 } *SilcSFTPClient;
 
 /* File handle */
 struct SilcSFTPHandleStruct {
   unsigned char *data;
-  uint32 data_len;
+  SilcUInt32 data_len;
 };
 
 /* Creates SilcSFTPHandle and returns pointer to it. The caller must free
    the context. */
 
 static SilcSFTPHandle silc_sftp_handle_create(unsigned char *data,
-                                             uint32 data_len)
+                                             SilcUInt32 data_len)
 {
   SilcSFTPHandle handle;
 
@@ -81,7 +83,7 @@ static void silc_sftp_handle_delete(SilcSFTPHandle handle)
 
 static void silc_sftp_handle_get(SilcSFTPHandle handle, 
                                 const unsigned char **data,
-                                uint32 *data_len)
+                                SilcUInt32 *data_len)
 {
   *data = (const unsigned char *)handle->data;
   *data_len = handle->data_len;
@@ -91,36 +93,39 @@ static void silc_sftp_handle_get(SilcSFTPHandle handle,
 
 static void silc_sftp_send_packet(SilcSFTPClient sftp,
                                  SilcSFTPPacket type, 
-                                 uint32 len, ...)
+                                 SilcUInt32 len, ...)
 {
-  SilcBuffer packet;
+  SilcBuffer tmp;
   va_list vp;
 
   va_start(vp, len);
-  packet = silc_sftp_packet_encode_vp(type, len, vp);
+  tmp = silc_sftp_packet_encode_vp(type, sftp->packet, len, vp);
   va_end(vp);
-
-  if (!packet)
+  if (!tmp)
     return;
+  sftp->packet = tmp;
 
-  SILC_LOG_HEXDUMP(("SFTP packet to server"), packet->data, packet->len);
+  SILC_LOG_HEXDUMP(("SFTP packet to server"), sftp->packet->data, 
+                  sftp->packet->len);
 
   /* Send the packet */
-  (*sftp->send_packet)(sftp->sock, packet, sftp->send_context);
+  (*sftp->send_packet)(sftp->sock, sftp->packet, sftp->send_context);
 
-  silc_buffer_free(packet);
+  /* Clear packet */
+  sftp->packet->data = sftp->packet->tail = sftp->packet->head;
+  sftp->packet->len = 0;
 }
 
 /* Finds request by request ID. */
 
-static SilcSFTPRequest silc_sftp_find_request(SilcSFTPClient sftp, uint32 id)
+static SilcSFTPRequest silc_sftp_find_request(SilcSFTPClient sftp, SilcUInt32 id)
 {
   SilcSFTPRequest req;
 
   SILC_LOG_DEBUG(("Finding request ID: %d", id));
 
-  silc_dlist_start(sftp->requests);
-  while ((req = silc_dlist_get(sftp->requests)) != SILC_LIST_END) {
+  silc_list_start(sftp->requests);
+  while ((req = silc_list_get(sftp->requests)) != SILC_LIST_END) {
     if (req->id == id)
       return req;
   }
@@ -151,7 +156,7 @@ static void silc_sftp_call_request(SilcSFTPClient sftp,
     {
       /* Data returned */
       unsigned char *data;
-      uint32 data_len;
+      SilcUInt32 data_len;
 
       if (status != SILC_SFTP_STATUS_OK) {
        if (req->data)
@@ -160,7 +165,7 @@ static void silc_sftp_call_request(SilcSFTPClient sftp,
       }
 
       data = (unsigned char *)va_arg(vp, unsigned char *);
-      data_len = (uint32)va_arg(vp, uint32);
+      data_len = (SilcUInt32)va_arg(vp, SilcUInt32);
 
       if (req->data)
        (*req->data)((SilcSFTP)sftp, status, (const unsigned char *)data, 
@@ -174,7 +179,7 @@ static void silc_sftp_call_request(SilcSFTPClient sftp,
       /* Handle returned */
       SilcSFTPHandle handle;
       unsigned char *hdata;
-      uint32 hdata_len;
+      SilcUInt32 hdata_len;
 
       if (status != SILC_SFTP_STATUS_OK) {
        if (req->handle)
@@ -183,7 +188,7 @@ static void silc_sftp_call_request(SilcSFTPClient sftp,
       }
 
       hdata = (unsigned char *)va_arg(vp, unsigned char *);
-      hdata_len = (uint32)va_arg(vp, uint32);
+      hdata_len = (SilcUInt32)va_arg(vp, SilcUInt32);
       handle = silc_sftp_handle_create(hdata, hdata_len);
 
       if (req->handle)
@@ -258,7 +263,7 @@ static void silc_sftp_call_request(SilcSFTPClient sftp,
     {
       /* Extended reply returned */
       unsigned char *data;
-      uint32 data_len;
+      SilcUInt32 data_len;
 
       if (status != SILC_SFTP_STATUS_OK) {
        if (req->extended)
@@ -267,7 +272,7 @@ static void silc_sftp_call_request(SilcSFTPClient sftp,
       }
 
       data = (unsigned char *)va_arg(vp, unsigned char *);
-      data_len = (uint32)va_arg(vp, uint32);
+      data_len = (SilcUInt32)va_arg(vp, SilcUInt32);
 
       if (req->extended)
        (*req->extended)((SilcSFTP)sftp, status, (const unsigned char *)data, 
@@ -280,7 +285,7 @@ static void silc_sftp_call_request(SilcSFTPClient sftp,
   }
 
   /* Remove this request */
-  silc_dlist_del(sftp->requests, req);
+  silc_list_del(sftp->requests, req);
   silc_free(req);
 
   va_end(vp);
@@ -310,7 +315,7 @@ SilcSFTP silc_sftp_client_start(SilcSocketConnection sock,
   sftp->send_context = send_context;
   sftp->version = callback;
   sftp->version_context = context;
-  sftp->requests = silc_dlist_init();
+  silc_list_init(sftp->requests, struct SilcSFTPRequestStruct, next);
 
   /* Send the SFTP session initialization to the server */
   silc_sftp_send_packet(sftp, SILC_SFTP_INIT, 4, 
@@ -328,7 +333,8 @@ void silc_sftp_client_shutdown(SilcSFTP context)
 {
   SilcSFTPClient sftp = (SilcSFTPClient)context;
 
-  silc_dlist_uninit(sftp->requests);
+  if (sftp->packet)
+    silc_buffer_free(sftp->packet);
   silc_free(sftp);
 }
 
@@ -344,10 +350,10 @@ void silc_sftp_client_receive_process(SilcSFTP context,
   SilcSFTPRequest req;
   SilcSFTPPacket type;
   const unsigned char *payload = NULL;
-  uint32 payload_len;
+  SilcUInt32 payload_len;
   int ret;
   SilcBufferStruct buf;
-  uint32 id;
+  SilcUInt32 id;
 
   SILC_LOG_DEBUG(("Start"));
 
@@ -383,7 +389,7 @@ void silc_sftp_client_receive_process(SilcSFTP context,
 
   case SILC_SFTP_STATUS:
     {
-      uint32 status;
+      SilcUInt32 status;
       char *message = NULL, *language_tag = NULL;
 
       SILC_LOG_DEBUG(("Status packet"));
@@ -426,7 +432,7 @@ void silc_sftp_client_receive_process(SilcSFTP context,
   case SILC_SFTP_HANDLE:
     {
       unsigned char *handle = NULL;
-      uint32 handle_len;
+      SilcUInt32 handle_len;
 
       SILC_LOG_DEBUG(("Handle packet"));
 
@@ -452,7 +458,7 @@ void silc_sftp_client_receive_process(SilcSFTP context,
   case SILC_SFTP_DATA:
     {
       unsigned char *data = NULL;
-      uint32 data_len = 0;
+      SilcUInt32 data_len = 0;
 
       SILC_LOG_DEBUG(("Data packet"));
 
@@ -476,7 +482,7 @@ void silc_sftp_client_receive_process(SilcSFTP context,
 
   case SILC_SFTP_NAME:
     {
-      uint32 count;
+      SilcUInt32 count;
       SilcSFTPName name = NULL;
 
       SILC_LOG_DEBUG(("Name packet"));
@@ -574,7 +580,7 @@ void silc_sftp_open(SilcSFTP sftp,
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
   SilcBuffer attrs_buf;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Open request"));
 
@@ -583,7 +589,7 @@ void silc_sftp_open(SilcSFTP sftp,
   req->type = SILC_SFTP_OPEN;
   req->handle = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   attrs_buf = silc_sftp_attr_encode(attrs);
   len = 4 + 4 + strlen(filename) + 4 + attrs_buf->len;
@@ -607,9 +613,9 @@ void silc_sftp_close(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
   const unsigned char *hdata;
-  uint32 hdata_len;
+  SilcUInt32 hdata_len;
 
   SILC_LOG_DEBUG(("Close request"));
 
@@ -618,7 +624,7 @@ void silc_sftp_close(SilcSFTP sftp,
   req->type = SILC_SFTP_CLOSE;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   silc_sftp_handle_get(handle, &hdata, &hdata_len);
   len = 4 + 4 + hdata_len;
@@ -632,16 +638,16 @@ void silc_sftp_close(SilcSFTP sftp,
 
 void silc_sftp_read(SilcSFTP sftp,
                    SilcSFTPHandle handle,
-                   uint64 offset, 
-                   uint32 len,
+                   SilcUInt64 offset, 
+                   SilcUInt32 len,
                    SilcSFTPDataCallback callback,
                    void *context)
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len2 = 0;
+  SilcUInt32 len2 = 0;
   const unsigned char *hdata;
-  uint32 hdata_len;
+  SilcUInt32 hdata_len;
 
   SILC_LOG_DEBUG(("Read request"));
 
@@ -650,7 +656,7 @@ void silc_sftp_read(SilcSFTP sftp,
   req->type = SILC_SFTP_READ;
   req->data = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   silc_sftp_handle_get(handle, &hdata, &hdata_len);
   len2 = 4 + 4 + hdata_len + 8 + 4;
@@ -666,17 +672,17 @@ void silc_sftp_read(SilcSFTP sftp,
 
 void silc_sftp_write(SilcSFTP sftp,
                     SilcSFTPHandle handle,
-                    uint64 offset,
+                    SilcUInt64 offset,
                     const unsigned char *data,
-                    uint32 data_len,
+                    SilcUInt32 data_len,
                     SilcSFTPStatusCallback callback,
                     void *context)
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
   const unsigned char *hdata;
-  uint32 hdata_len;
+  SilcUInt32 hdata_len;
 
   SILC_LOG_DEBUG(("Write request"));
 
@@ -685,7 +691,7 @@ void silc_sftp_write(SilcSFTP sftp,
   req->type = SILC_SFTP_WRITE;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   silc_sftp_handle_get(handle, &hdata, &hdata_len);
   len = 4 + 4 + hdata_len + 8 + 4 + data_len;
@@ -707,7 +713,7 @@ void silc_sftp_remove(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Remove request"));
 
@@ -716,7 +722,7 @@ void silc_sftp_remove(SilcSFTP sftp,
   req->type = SILC_SFTP_REMOVE;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(filename);
 
@@ -735,7 +741,7 @@ void silc_sftp_rename(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Rename request"));
 
@@ -744,7 +750,7 @@ void silc_sftp_rename(SilcSFTP sftp,
   req->type = SILC_SFTP_RENAME;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(oldname) + 4 + strlen(newname);
 
@@ -765,7 +771,7 @@ void silc_sftp_mkdir(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
   SilcBuffer attrs_buf;
 
   SILC_LOG_DEBUG(("Mkdir request"));
@@ -775,7 +781,7 @@ void silc_sftp_mkdir(SilcSFTP sftp,
   req->type = SILC_SFTP_MKDIR;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   attrs_buf = silc_sftp_attr_encode(attrs);
   len = 4 + 4 + strlen(path) + attrs_buf->len;
@@ -798,7 +804,7 @@ void silc_sftp_rmdir(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Rmdir request"));
 
@@ -807,7 +813,7 @@ void silc_sftp_rmdir(SilcSFTP sftp,
   req->type = SILC_SFTP_RMDIR;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(path);
 
@@ -825,7 +831,7 @@ void silc_sftp_opendir(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Opendir request"));
 
@@ -834,7 +840,7 @@ void silc_sftp_opendir(SilcSFTP sftp,
   req->type = SILC_SFTP_OPENDIR;
   req->handle = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(path);
 
@@ -852,9 +858,9 @@ void silc_sftp_readdir(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
   const unsigned char *hdata;
-  uint32 hdata_len;
+  SilcUInt32 hdata_len;
 
   SILC_LOG_DEBUG(("Readdir request"));
 
@@ -863,7 +869,7 @@ void silc_sftp_readdir(SilcSFTP sftp,
   req->type = SILC_SFTP_READDIR;
   req->name = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   silc_sftp_handle_get(handle, &hdata, &hdata_len);
   len = 4 + 4 + hdata_len;
@@ -882,7 +888,7 @@ void silc_sftp_stat(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Stat request"));
 
@@ -891,7 +897,7 @@ void silc_sftp_stat(SilcSFTP sftp,
   req->type = SILC_SFTP_STAT;
   req->attr = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(path);
 
@@ -909,7 +915,7 @@ void silc_sftp_lstat(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Lstat request"));
 
@@ -918,7 +924,7 @@ void silc_sftp_lstat(SilcSFTP sftp,
   req->type = SILC_SFTP_LSTAT;
   req->attr = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(path);
 
@@ -936,9 +942,9 @@ void silc_sftp_fstat(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
   const unsigned char *hdata;
-  uint32 hdata_len;
+  SilcUInt32 hdata_len;
 
   SILC_LOG_DEBUG(("Fstat request"));
 
@@ -947,7 +953,7 @@ void silc_sftp_fstat(SilcSFTP sftp,
   req->type = SILC_SFTP_FSTAT;
   req->attr = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   silc_sftp_handle_get(handle, &hdata, &hdata_len);
   len = 4 + 4 + hdata_len;
@@ -967,7 +973,7 @@ void silc_sftp_setstat(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
   SilcBuffer attrs_buf;
 
   SILC_LOG_DEBUG(("Setstat request"));
@@ -977,7 +983,7 @@ void silc_sftp_setstat(SilcSFTP sftp,
   req->type = SILC_SFTP_SETSTAT;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   attrs_buf = silc_sftp_attr_encode(attrs);
   len = 4 + 4 + strlen(path) + attrs_buf->len;
@@ -1001,10 +1007,10 @@ void silc_sftp_fsetstat(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
   SilcBuffer attrs_buf;
   const unsigned char *hdata;
-  uint32 hdata_len;
+  SilcUInt32 hdata_len;
 
   SILC_LOG_DEBUG(("Fsetstat request"));
 
@@ -1013,7 +1019,7 @@ void silc_sftp_fsetstat(SilcSFTP sftp,
   req->type = SILC_SFTP_FSETSTAT;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   silc_sftp_handle_get(handle, &hdata, &hdata_len);
   attrs_buf = silc_sftp_attr_encode(attrs);
@@ -1037,7 +1043,7 @@ void silc_sftp_readlink(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Readlink request"));
 
@@ -1046,7 +1052,7 @@ void silc_sftp_readlink(SilcSFTP sftp,
   req->type = SILC_SFTP_READLINK;
   req->name = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(path);
 
@@ -1065,7 +1071,7 @@ void silc_sftp_symlink(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Symlink request"));
 
@@ -1074,7 +1080,7 @@ void silc_sftp_symlink(SilcSFTP sftp,
   req->type = SILC_SFTP_SYMLINK;
   req->status = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(linkpath) + 4 + strlen(targetpath);
 
@@ -1094,7 +1100,7 @@ void silc_sftp_realpath(SilcSFTP sftp,
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Realpath request"));
 
@@ -1103,7 +1109,7 @@ void silc_sftp_realpath(SilcSFTP sftp,
   req->type = SILC_SFTP_REALPATH;
   req->name = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(path);
 
@@ -1117,13 +1123,13 @@ void silc_sftp_realpath(SilcSFTP sftp,
 void silc_sftp_extended(SilcSFTP sftp,
                        const char *request,
                        const unsigned char *data,
-                       uint32 data_len,
+                       SilcUInt32 data_len,
                        SilcSFTPExtendedCallback callback,
                        void *context)
 {
   SilcSFTPClient client = (SilcSFTPClient)sftp;
   SilcSFTPRequest req;
-  uint32 len = 0;
+  SilcUInt32 len = 0;
 
   SILC_LOG_DEBUG(("Extended request"));
 
@@ -1132,7 +1138,7 @@ void silc_sftp_extended(SilcSFTP sftp,
   req->type = SILC_SFTP_WRITE;
   req->extended = callback;
   req->context = context;
-  silc_dlist_add(client->requests, req);
+  silc_list_add(client->requests, req);
 
   len = 4 + 4 + strlen(request) + data_len;