diff lib/sshv2.c @ 518:c6a6e908dbaf

2004-7-27 Brian Masney <masneyb@gftp.org> * lib/protocols.c lib/rfc2068.c lib/rfc959.c lib/sshv2.c src/gtk/bookmarks.c src/gtk/dnd.c src/gtk/gftp-gtk.c src/gtk/gtui.c src/gtk/menu-items.c src/misc-gtk.c src/gtk/options_dialog.c src/gtk/transfer.c src/text/gftp-text.c src/uicommon/gftpui.c - various fixes found through a static code analysis. (some signed/unsigned fixes, removed unneeded casts, indentation fixes, added static declaration to some functions)
author masneyb
date Wed, 28 Jul 2004 01:37:15 +0000
parents 648bf2825ea9
children c3edcd3e9db9
line wrap: on
line diff
--- a/lib/sshv2.c	Tue Jul 27 20:43:39 2004 +0000
+++ b/lib/sshv2.c	Wed Jul 28 01:37:15 2004 +0000
@@ -69,9 +69,9 @@
   char handle[SSH_MAX_HANDLE_SIZE + 4], /* We'll encode the ID in here too */
        *read_buffer;
 
-  gint32 handle_len,
-         id,
+  gint32 id,
          count;
+  size_t handle_len;
   sshv2_message message;
 
   unsigned int initialized : 1,
@@ -493,20 +493,6 @@
 }
 
 
-#ifdef G_HAVE_GINT64
-
-static gint64
-hton64 (gint64 val)
-{
-  if (G_BYTE_ORDER != G_BIG_ENDIAN)
-    return (GINT64_TO_BE (val));
-  else
-    return (val);
-}
-
-#endif
-
-
 static void
 sshv2_log_command (gftp_request * request, gftp_logging_level level,
                    char type, char *message, size_t length)
@@ -710,7 +696,8 @@
 {
   char buf[6], error_buffer[255], *pos;
   sshv2_params * params;
-  ssize_t numread, rem;
+  ssize_t numread;
+  size_t rem;
 
   params = request->protocol_data;
 
@@ -1853,6 +1840,40 @@
 }
 
 
+#ifdef G_HAVE_GINT64
+
+static gint64
+hton64 (gint64 val)
+{
+  if (G_BYTE_ORDER != G_BIG_ENDIAN)
+    return (GINT64_TO_BE (val));
+  else
+    return (val);
+}
+
+#endif
+
+
+static void
+sshv2_setup_file_offset (sshv2_params * params)
+{
+  guint32 hinum, lownum;
+#ifdef G_HAVE_GINT64
+  gint64 offset;
+
+  offset = hton64 (params->offset);
+  lownum = offset & 0xffffffff;
+  hinum = offset >> 32;
+#else
+  hinum = 0;
+  lownum = htonl (params->offset);
+#endif
+
+  memcpy (params->read_buffer + params->handle_len, &hinum, 4);
+  memcpy (params->read_buffer + params->handle_len + 4, &lownum, 4);
+}
+
+
 static ssize_t 
 sshv2_get_next_file_chunk (gftp_request * request, char *buf, size_t size)
 {
@@ -1861,12 +1882,6 @@
   guint32 num;
   int ret;
 
-#ifdef G_HAVE_GINT64
-  gint64 offset;
-#else
-  gint32 offset;
-#endif
-
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->protonum == GFTP_SSHV2_NUM, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
@@ -1884,15 +1899,8 @@
   num = htonl (params->id++);
   memcpy (params->read_buffer, &num, 4);
 
-#ifdef G_HAVE_GINT64
-  offset = hton64 (params->offset);
-  memcpy (params->read_buffer + params->handle_len, &offset, 8);
-#else
-  memset (params->read_buffer + params->handle_len, 0, 4);
-  offset = htonl (params->offset);
-  memcpy (params->read_buffer + params->handle_len + 4, &offset, 4);
-#endif
-  
+  sshv2_setup_file_offset (params);
+
   num = htonl (size);
   memcpy (params->read_buffer + params->handle_len + 8, &num, 4);
   
@@ -1949,12 +1957,6 @@
   size_t len;
   int ret;
 
-#ifdef G_HAVE_GINT64
-  gint64 offset;
-#else
-  gint32 offset;
-#endif
-
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
   g_return_val_if_fail (request->protonum == GFTP_SSHV2_NUM, GFTP_EFATAL);
   g_return_val_if_fail (request->datafd > 0, GFTP_EFATAL);
@@ -1968,14 +1970,7 @@
   num = htonl (params->id++);
   memcpy (tempstr, &num, 4);
 
-#ifdef G_HAVE_GINT64
-  offset = hton64 (params->offset);
-  memcpy (tempstr + params->handle_len, &offset, 8);
-#else
-  memset (tempstr + params->handle_len, 0, 4);
-  offset = htonl (params->offset);
-  memcpy (tempstr + params->handle_len + 4, &offset, 4);
-#endif
+  sshv2_setup_file_offset (params);
  
   num = htonl (size);
   memcpy (tempstr + params->handle_len + 8, &num, 4);