changeset 892:ecd9a397c441

2007-3-15 Brian Masney <masneyb@gftp.org> * lib/sshv2.c - added new function sshv2_send_command_and_check_response(). It eliminates some duplicate code that was found by PMD.
author masneyb
date Fri, 16 Mar 2007 00:52:59 +0000
parents f7a06eea66ce
children 331d6ad73a75
files ChangeLog lib/sshv2.c
diffstat 2 files changed, 49 insertions(+), 102 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Fri Mar 16 00:35:47 2007 +0000
+++ b/ChangeLog	Fri Mar 16 00:52:59 2007 +0000
@@ -1,4 +1,8 @@
 2007-3-15 Brian Masney <masneyb@gftp.org>
+	* lib/sshv2.c - added new function
+	sshv2_send_command_and_check_response(). It eliminates some duplicate
+	code that was found by PMD.
+
 	* docs/gftp-faq.sgml - updated FAQ entry about how to check the
 	latest code out of SVN.
 
--- a/lib/sshv2.c	Fri Mar 16 00:35:47 2007 +0000
+++ b/lib/sshv2.c	Fri Mar 16 00:52:59 2007 +0000
@@ -1045,6 +1045,32 @@
 
 
 static int
+sshv2_send_command_and_check_response (gftp_request * request, char type,
+                                       char *command, size_t len)
+{
+  sshv2_message message;
+  int ret;
+
+  ret = sshv2_send_command (request, type, command, len);
+  if (ret < 0)
+    return (ret);
+
+  memset (&message, 0, sizeof (message));
+  if ((ret = sshv2_read_response (request, &message, -1)) < 0)
+    return (ret);
+
+  message.pos += 4;
+  if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, 1,
+                                     NULL)) < 0)
+    return (ret);
+
+  sshv2_message_free (&message);
+
+  return (0);
+}
+
+
+static int
 sshv2_getcwd (gftp_request * request)
 {
   char *tempstr, *dir, *utf8;
@@ -1544,7 +1570,6 @@
 static int 
 sshv2_rmdir (gftp_request * request, const char *directory)
 {
-  sshv2_message message;
   char *tempstr;
   size_t len;
   int ret;
@@ -1556,30 +1581,16 @@
   len = 0;
   tempstr = sshv2_initialize_string_with_path (request, directory, &len, NULL);
 
-  ret = sshv2_send_command (request, SSH_FXP_RMDIR, tempstr, len);
-
+  ret = sshv2_send_command_and_check_response (request, SSH_FXP_RMDIR,
+                                               tempstr, len);
   g_free (tempstr);
-  if (ret < 0)
-    return (ret);
-
-  memset (&message, 0, sizeof (message));
-  if ((ret = sshv2_read_response (request, &message, -1)) < 0)
-    return (ret);
-
-  message.pos += 4;
-  if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, 1, NULL)) < 0)
-    return (ret);
-
-  sshv2_message_free (&message);
-
-  return (0);
+  return (ret);
 }
 
 
 static int 
 sshv2_rmfile (gftp_request * request, const char *file)
 {
-  sshv2_message message;
   char *tempstr;
   size_t len;
   int ret;
@@ -1591,23 +1602,10 @@
   len = 0;
   tempstr = sshv2_initialize_string_with_path (request, file, &len, NULL);
 
-  ret = sshv2_send_command (request, SSH_FXP_REMOVE, tempstr, len);
-
+  ret = sshv2_send_command_and_check_response (request, SSH_FXP_REMOVE,
+                                               tempstr, len);
   g_free (tempstr);
-  if (ret < 0)
-    return (ret);
-
-  memset (&message, 0, sizeof (message));
-  if ((ret = sshv2_read_response (request, &message, -1)) < 0)
-    return (ret);
-
-  message.pos += 4;
-  if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, 1, NULL)) < 0)
-    return (ret);
-
-  sshv2_message_free (&message);
-
-  return (0);
+  return (ret);
 }
 
 
@@ -1615,7 +1613,6 @@
 sshv2_chmod (gftp_request * request, const char *file, mode_t mode)
 {
   char *tempstr, *endpos;
-  sshv2_message message;
   guint32 num;
   size_t len;
   int ret;
@@ -1633,30 +1630,16 @@
   num = htonl (mode);
   memcpy (endpos + 4, &num, 4);
 
-  ret = sshv2_send_command (request, SSH_FXP_SETSTAT, tempstr, len);
-
+  ret = sshv2_send_command_and_check_response (request, SSH_FXP_SETSTAT,
+                                               tempstr, len);
   g_free (tempstr);
-  if (ret < 0)
-    return (ret);
-
-  memset (&message, 0, sizeof (message));
-  if ((ret = sshv2_read_response (request, &message, -1)) < 0)
-    return (ret);
-
-  message.pos += 4;
-  if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, 1, NULL)) < 0)
-    return (ret);
-
-  sshv2_message_free (&message);
-
-  return (0);
+  return (ret);
 }
 
 
 static int 
 sshv2_mkdir (gftp_request * request, const char *newdir)
 {
-  sshv2_message message;
   char *tempstr;
   size_t len;
   int ret;
@@ -1671,30 +1654,16 @@
   /* No need to set attributes since all characters of the tempstr buffer is
      initialized to 0 */
 
-  ret = sshv2_send_command (request, SSH_FXP_MKDIR, tempstr, len);
-
+  ret = sshv2_send_command_and_check_response (request, SSH_FXP_MKDIR,
+                                               tempstr, len);
   g_free (tempstr);
-  if (ret < 0)
-    return (ret);
-
-  memset (&message, 0, sizeof (message));
-  if ((ret = sshv2_read_response (request, &message, -1)) < 0)
-    return (ret);
-
-  message.pos += 4;
-  if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, 1, NULL)) < 0)
-    return (ret);
-
-  sshv2_message_free (&message);
-
-  return (0);
+  return (ret);
 }
 
 
 static int 
 sshv2_rename (gftp_request * request, const char *oldname, const char *newname)
 {
-  sshv2_message message;
   char *tempstr;
   size_t msglen;
   int ret;
@@ -1708,23 +1677,11 @@
   tempstr = sshv2_initialize_buffer_with_two_i18n_paths (request,
                                                          oldname, newname,
                                                          &msglen);
-  ret = sshv2_send_command (request, SSH_FXP_RENAME, tempstr, msglen);
+
+  ret = sshv2_send_command_and_check_response (request, SSH_FXP_RENAME,
+                                               tempstr, msglen);
   g_free (tempstr);
-  if (ret < 0)
-    return (ret);
-
-  memset (&message, 0, sizeof (message));
-  if ((ret = sshv2_read_response (request, &message, -1)) < 0)
-    return (ret);
-
-  message.pos += 4;
-  if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, 1,
-                                     NULL)) < 0)
-    return (ret);
-
-  sshv2_message_free (&message);
-
-  return (0);
+  return (ret);
 }
 
 
@@ -1732,7 +1689,6 @@
 sshv2_set_file_time (gftp_request * request, const char *file, time_t datetime)
 {
   char *tempstr, *endpos;
-  sshv2_message message;
   guint32 num;
   size_t len;
   int ret;
@@ -1751,23 +1707,10 @@
   memcpy (endpos + 4, &num, 4);
   memcpy (endpos + 8, &num, 4);
 
-  ret = sshv2_send_command (request, SSH_FXP_SETSTAT, tempstr, len);
-
+  ret = sshv2_send_command_and_check_response (request, SSH_FXP_SETSTAT,
+                                               tempstr, len);
   g_free (tempstr);
-  if (ret < 0)
-    return (ret);
-
-  memset (&message, 0, sizeof (message));
-  if ((ret = sshv2_read_response (request, &message, -1)) < 0)
-    return (ret);
-
-  message.pos += 4;
-  if ((ret = sshv2_buffer_get_int32 (request, &message, SSH_FX_OK, 1, NULL)) < 0)
-    return (ret);
-
-  sshv2_message_free (&message);
-
-  return (0);
+  return (ret);
 }