changeset 520:e67a52327b24

2004-7-27 Brian Masney <masneyb@gftp.org> * lib/gftp.h lib/local.c lib/protocols.c lib/sshv2.c - changed declaration of gftp_stat_filename() so that the mode of the filename is returned as a parameter instead of the function return value. The mode_t type is unsigned and the error codes could not be reported properly
author masneyb
date Wed, 28 Jul 2004 02:19:00 +0000
parents c3edcd3e9db9
children 739afd9df73c
files ChangeLog lib/gftp.h lib/local.c lib/protocols.c lib/sshv2.c
diffstat 5 files changed, 32 insertions(+), 23 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Wed Jul 28 01:58:28 2004 +0000
+++ b/ChangeLog	Wed Jul 28 02:19:00 2004 +0000
@@ -1,4 +1,10 @@
 2004-7-27 Brian Masney <masneyb@gftp.org>
+	* lib/gftp.h lib/local.c lib/protocols.c lib/sshv2.c - changed
+	declaration of gftp_stat_filename() so that the mode of the filename
+	is returned as a parameter instead of the function return value.
+	The mode_t type is unsigned and the error codes could not be reported
+	properly
+
 	* lib/sshv2.c - fixed SSHV2 transfers so that they work again
 	(they were busted in the last CVS commit due to the wrong file
 	offset being sent over)
@@ -2674,7 +2680,7 @@
 
 	* cvsclean - added this script
 
-	* *.[ch] - added $Id: ChangeLog,v 1.297 2004/07/28 01:58:28 masneyb Exp $ tags
+	* *.[ch] - added $Id: ChangeLog,v 1.298 2004/07/28 02:19:00 masneyb Exp $ tags
 
 	* debian/* - updated files from Debian maintainer
 
--- a/lib/gftp.h	Wed Jul 28 01:58:28 2004 +0000
+++ b/lib/gftp.h	Wed Jul 28 02:19:00 2004 +0000
@@ -430,8 +430,9 @@
 					  size_t size );
   int (*end_transfer) 			( gftp_request * request );
   int (*abort_transfer) 		( gftp_request * request );
-  mode_t (*stat_filename) 		( gftp_request * request,
-					  const char *filename );
+  int (*stat_filename) 			( gftp_request * request,
+					  const char *filename,
+					  mode_t * mode );
   int (*list_files) 			( gftp_request * request );
   int (*get_next_file)			( gftp_request * request, 
 					  gftp_file *fle, 
@@ -896,8 +897,9 @@
 
 int gftp_abort_transfer 		( gftp_request * request );
 
-mode_t gftp_stat_filename		( gftp_request * request,
-					  const char *filename );
+int gftp_stat_filename			( gftp_request * request,
+					  const char *filename,
+					  mode_t * mode );
 
 void gftp_set_hostname 			( gftp_request * request, 
 					  const char *hostname );
--- a/lib/local.c	Wed Jul 28 01:58:28 2004 +0000
+++ b/lib/local.c	Wed Jul 28 02:19:00 2004 +0000
@@ -224,15 +224,17 @@
 }
 
 
-static mode_t
-local_stat_filename (gftp_request * request, const char *filename)
+static int
+local_stat_filename (gftp_request * request, const char *filename,
+                     mode_t * mode)
 {
   struct stat st;
 
   if (stat (filename, &st) != 0)
     return (GFTP_ERETRYABLE);
 
-  return (st.st_mode);
+  *mode = st.st_mode;
+  return (0);
 }
 
 
--- a/lib/protocols.c	Wed Jul 28 01:58:28 2004 +0000
+++ b/lib/protocols.c	Wed Jul 28 02:19:00 2004 +0000
@@ -339,19 +339,16 @@
 }
 
 
-mode_t /* FIXME - this is unsigned, can return negative */
-gftp_stat_filename (gftp_request * request, const char *filename)
+int
+gftp_stat_filename (gftp_request * request, const char *filename, mode_t * mode)
 {
-  mode_t ret;
-
   g_return_val_if_fail (request != NULL, GFTP_EFATAL);
+  g_return_val_if_fail (filename != NULL, GFTP_EFATAL);
 
   if (request->stat_filename != NULL)
-    ret = request->stat_filename (request, filename);
+    return (request->stat_filename (request, filename, mode));
   else
-    ret = 0;
-
-  return (ret);
+    return (0);
 }
 
 
@@ -1964,9 +1961,10 @@
 
       if (S_ISLNK (curfle->st_mode) && !S_ISDIR (curfle->st_mode))
         {
-          st_mode = gftp_stat_filename (transfer->fromreq, curfle->file);
-          if (st_mode < 0)
-            return (st_mode);
+          st_mode = 0;
+          ret = gftp_stat_filename (transfer->fromreq, curfle->file, &st_mode);
+          if (ret < 0)
+            return (ret);
           else if (S_ISDIR (st_mode))
             curfle->st_mode = st_mode;
         }
--- a/lib/sshv2.c	Wed Jul 28 01:58:28 2004 +0000
+++ b/lib/sshv2.c	Wed Jul 28 02:19:00 2004 +0000
@@ -1689,8 +1689,9 @@
 }
 
 
-static mode_t
-sshv2_stat_filename (gftp_request * request, const char *filename)
+static int
+sshv2_stat_filename (gftp_request * request, const char *filename,
+                     mode_t * mode)
 {
   gftp_file fle;
   mode_t ret;
@@ -1700,10 +1701,10 @@
   if (ret < 0)
     return (ret);
 
-  ret = fle.st_mode;
+  *mode = fle.st_mode;
   gftp_file_destroy (&fle);
 
-  return (ret);
+  return (0);
 }