Browse Source

Made the path argument to vfs->[l]stat constant. Created a new memory leak, which will be fixed soon.

Roland Illig 20 years ago
parent
commit
789e5e9bcb
7 changed files with 21 additions and 20 deletions
  1. 3 3
      vfs/direntry.c
  2. 5 4
      vfs/extfs.c
  3. 2 2
      vfs/local.c
  4. 3 3
      vfs/mcfs.c
  5. 2 2
      vfs/sfs.c
  6. 4 4
      vfs/smbfs.c
  7. 2 2
      vfs/vfs.h

+ 3 - 3
vfs/direntry.c

@@ -642,7 +642,7 @@ vfs_s_chdir (struct vfs_class *me, const char *path)
 /* --------------------------- stat and friends ---------------------------- */
 
 static int
-vfs_s_internal_stat (struct vfs_class *me, char *path, struct stat *buf, int flag)
+vfs_s_internal_stat (struct vfs_class *me, const char *path, struct stat *buf, int flag)
 {
     struct vfs_s_inode *ino;
 
@@ -653,13 +653,13 @@ vfs_s_internal_stat (struct vfs_class *me, char *path, struct stat *buf, int fla
 }
 
 static int
-vfs_s_stat (struct vfs_class *me, char *path, struct stat *buf)
+vfs_s_stat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     return vfs_s_internal_stat (me, path, buf, FL_FOLLOW);
 }
 
 static int
-vfs_s_lstat (struct vfs_class *me, char *path, struct stat *buf)
+vfs_s_lstat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     return vfs_s_internal_stat (me, path, buf, FL_NONE);
 }

+ 5 - 4
vfs/extfs.c

@@ -929,14 +929,15 @@ static void extfs_stat_move( struct stat *buf, struct inode *inode )
     buf->st_ctime = inode->ctime;
 }
 
-static int extfs_internal_stat (char *path, struct stat *buf, int resolve)
+static int extfs_internal_stat (const char *path, struct stat *buf, int resolve)
 {
     struct archive *archive;
     char *q;
     struct entry *entry;
     struct inode *inode;
+    char *path2 = g_strdup(path);
 
-    if ((q = extfs_get_path_mangle (path, &archive, 0, 0)) == NULL)
+    if ((q = extfs_get_path_mangle (path2, &archive, 0, 0)) == NULL)
 	return -1;
     entry = extfs_find_entry (archive->root_entry, q, 0, 0);
     if (entry == NULL)
@@ -948,12 +949,12 @@ static int extfs_internal_stat (char *path, struct stat *buf, int resolve)
     return 0;
 }
 
-static int extfs_stat (struct vfs_class *me, char *path, struct stat *buf)
+static int extfs_stat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     return extfs_internal_stat (path, buf, 1);
 }
 
-static int extfs_lstat (struct vfs_class *me, char *path, struct stat *buf)
+static int extfs_lstat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     return extfs_internal_stat (path, buf, 0);
 }

+ 2 - 2
vfs/local.c

@@ -107,13 +107,13 @@ local_closedir (void *data)
 }
 
 static int
-local_stat (struct vfs_class *me, char *path, struct stat *buf)
+local_stat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     return stat (path, buf);
 }
 
 static int
-local_lstat (struct vfs_class *me, char *path, struct stat *buf)
+local_lstat (struct vfs_class *me, const char *path, struct stat *buf)
 {
 #ifndef HAVE_STATLSTAT
     return lstat (path,buf);

+ 3 - 3
vfs/mcfs.c

@@ -851,7 +851,7 @@ mcfs_get_stat_info (mcfs_connection *mc, struct stat *buf)
 }
 
 static int
-mcfs_stat_cmd (int cmd, char *path, struct stat *buf)
+mcfs_stat_cmd (int cmd, const char *path, struct stat *buf)
 {
     char *remote_file;
     mcfs_connection *mc;
@@ -875,13 +875,13 @@ mcfs_stat_cmd (int cmd, char *path, struct stat *buf)
 }
 
 static int
-mcfs_stat (struct vfs_class *me, char *path, struct stat *buf)
+mcfs_stat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     return mcfs_stat_cmd (MC_STAT, path, buf);
 }
 
 static int
-mcfs_lstat (struct vfs_class *me, char *path, struct stat *buf)
+mcfs_lstat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     int path_len = strlen (path);
     int entry_len = strlen (mcfs_readdir_data.dent.d_name);

+ 2 - 2
vfs/sfs.c

@@ -200,13 +200,13 @@ sfs_open (struct vfs_class *me, const char *path, int flags, int mode)
     return sfs_info;
 }
 
-static int sfs_stat (struct vfs_class *me, char *path, struct stat *buf)
+static int sfs_stat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     path = sfs_redirect (me, path);
     return stat (path, buf);
 }
 
-static int sfs_lstat (struct vfs_class *me, char *path, struct stat *buf)
+static int sfs_lstat (struct vfs_class *me, const char *path, struct stat *buf)
 {
     path = sfs_redirect (me, path);
 #ifndef HAVE_STATLSTAT

+ 4 - 4
vfs/smbfs.c

@@ -1295,10 +1295,10 @@ static dir_entry *single_entry;
 
 /* stat a single file */
 static int
-smbfs_get_remote_stat (smbfs_connection * sc, char *path, struct stat *buf)
+smbfs_get_remote_stat (smbfs_connection * sc, const char *path, struct stat *buf)
 {
     uint16 attribute = aDIR | aSYSTEM | aHIDDEN;
-    char *mypath = path;
+    char *mypath = g_strdup(path);
 
     DEBUG (3, ("smbfs_get_remote_stat(): mypath:%s\n", mypath));
 
@@ -1346,7 +1346,7 @@ smbfs_search_dir_entry (dir_entry *dentry, const char *text, struct stat *buf)
 }
 
 static int
-smbfs_get_stat_info (smbfs_connection * sc, char *path, struct stat *buf)
+smbfs_get_stat_info (smbfs_connection * sc, const char *path, struct stat *buf)
 {
     char *p;
 #if 0
@@ -1472,7 +1472,7 @@ smbfs_loaddir_by_name (struct vfs_class *me, const char *path)
 }
 
 static int
-smbfs_stat (struct vfs_class * me, char *path, struct stat *buf)
+smbfs_stat (struct vfs_class * me, const char *path, struct stat *buf)
 {
     smbfs_connection *sc;
     pstring server_url;

+ 2 - 2
vfs/vfs.h

@@ -39,8 +39,8 @@ struct vfs_class {
     void *(*readdir) (void *vfs_info);
     int (*closedir) (void *vfs_info);
 
-    int (*stat) (struct vfs_class *me, /*FIXME:const*/ char *path, struct stat * buf);
-    int (*lstat) (struct vfs_class *me, /*FIXME:const*/ char *path, struct stat * buf);
+    int (*stat) (struct vfs_class *me, const char *path, struct stat * buf);
+    int (*lstat) (struct vfs_class *me, const char *path, struct stat * buf);
     int (*fstat) (void *vfs_info, struct stat * buf);
 
     int (*chmod) (struct vfs_class *me, /*FIXME:const*/ char *path, int mode);