[prev in list] [next in list] [prev in thread] [next in thread]
List: klik-devel
Subject: [klik-devel] [klikclient commit] r1671 -
From: codesite-noreply () google ! com
Date: 2008-08-24 21:14:35
Message-ID: 001485f3be6262494404553b28e9 () google ! com
[Download RAW message or body]
Author: lionel.tricon
Date: Sun Aug 24 14:14:00 2008
New Revision: 1671
Modified:
branches/cristian/fusioniso/fusioniso/src/fs.c
Log:
When a glibc function is called in our code (from inside a fuse callback
function), most of the time we return a value to the fuse layer which is
totaly wr
ong. In fact, we need to return directly error code (and not -1). The
modification consist to return -errno when an error occurs.
For example :
if (chmod(value) == 0) return 0;
return -errno;
Instead of :
return chmod(value);
Amazing since part of the job was already done. It appears that i have
started the job a long time ago and forgot to finish it ...
However that may be, that should improve the behaviour of fusioniso a lot.
Modified: branches/cristian/fusioniso/fusioniso/src/fs.c
==============================================================================
--- branches/cristian/fusioniso/fusioniso/src/fs.c (original)
+++ branches/cristian/fusioniso/fusioniso/src/fs.c Sun Aug 24 14:14:00 2008
@@ -1105,7 +1105,8 @@
}
fs_home(path, &newpath);
- return statfs(newpath, stbuf);
+ if (statfs(newpath,stbuf) == 0) return 0;
+ return -errno;
}
//
@@ -1161,8 +1162,13 @@
isofs_inode *inode = fs_lookup(path);
if (inode) return 0;
if (extern_sandbox_mounting==sandbox_data && (amode&W_OK)) return 0;
- if (fs_home_stat(path,&newpath,&v_stbuf) == 0) return
access(newpath,amode);
- return access(path,amode);
+ if (fs_home_stat(path,&newpath,&v_stbuf) == 0)
+ {
+ if (access(newpath,amode) == 0) return 0;
+ return -errno;
+ }
+ if (access(path,amode) == 0) return 0;
+ return -errno;
}
int fs_real_mknod(const char *path, mode_t mode, dev_t dev)
@@ -1179,7 +1185,8 @@
}
if (fs_home(path,&newpath) == 0) fs_path_mkdir(newpath,1);
if (mode == 32768) mode2=33188; /* temporary fix */
- return mknod(newpath, mode2, dev);
+ if (mknod(newpath,mode2,dev) == 0) return 0;
+ return -errno;
}
int fs_real_unlink(const char *path)
@@ -1222,7 +1229,8 @@
}
}
FSDEBUG("#3 unlink(%s)",newpath);
- return unlink(newpath);
+ if (unlink(newpath) == 0) return 0;
+ return -errno;
}
int fs_real_rmdir(const char *path)
@@ -1264,7 +1272,8 @@
}
}
FSDEBUG("#2 rmdir(%s)",newpath);
- return rmdir(newpath);
+ if (rmdir(newpath) == 0) return 0;
+ return -errno;
}
int fs_real_mkdir(const char *path, mode_t mode)
@@ -1282,7 +1291,8 @@
if (fs_home(path,&newpath) == 0) fs_path_mkdir(newpath,1);
FSDEBUG("newpath=%s mode=%d", newpath, mode);
- return mkdir(newpath, mode);
+ if (mkdir(newpath,mode) == 0) return 0;
+ return -errno;
}
int fs_real_symlink(const char *path1, const char *path2)
@@ -1302,11 +1312,13 @@
{
fs_path_mkdir(spath2, 1);
FSDEBUG("#1 path1=%s -> spath2=%s",path1,spath2);
- return symlink(path1, spath2);
+ if (symlink(path1,spath2) == 0) return 0;
+ return -errno;
}
FSDEBUG("#2 path1=%s -> path2=%s",path1,path2);
- return symlink(path1, path2);
+ if (symlink(path1,path2) == 0) return 0;
+ return -errno;
}
int fs_real_rename(const char *oldpath, const char *newpath)
@@ -1342,10 +1354,12 @@
fs_path_mkdir(path2, 1);
FSDEBUG("#1 path1=%s -> path2=%s",path1,path2);
- return rename(path1, path2);
+ if (rename(path1,path2) == 0) return 0;
+ return -errno;
}
FSDEBUG("#2 oldpath=%s -> newpath=%s",oldpath,newpath);
- return rename(oldpath, newpath);
+ if (rename(oldpath,newpath) == 0) return 0;
+ return -errno;
}
int fs_real_link(const char *oldpath, const char *newpath)
@@ -1364,10 +1378,12 @@
{
fs_path_mkdir(path2, 1);
FSDEBUG("#1: oldpath=%s -> path2=%s",oldpath,path2);
- return link(oldpath, path2);
+ if (link(oldpath,path2) == 0) return 0;
+ return -errno;
}
FSDEBUG("#2: oldpath=%s -> newpath=%s",oldpath,newpath);
- return link(oldpath, newpath);
+ if (link(oldpath,newpath) == 0) return 0;
+ return -errno;
}
int fs_real_chmod(const char *path, mode_t mode)
@@ -1384,7 +1400,8 @@
}
if (fs_home_stat(path,&newpath,&v_stbuf) == -1)
fs_file_dup(path,newpath);
- return chmod(newpath, mode);
+ if (chmod(newpath,mode) == 0) return 0;
+ return -errno;
}
int fs_real_chown(const char *path, uid_t owner, gid_t group)
@@ -1401,7 +1418,8 @@
}
if (fs_home_stat(path,&newpath,&v_stbuf) == -1)
fs_file_dup(path,newpath);
- return chown(newpath, owner, group);
+ if (chown(newpath,owner,group) == 0) return 0;
+ return -errno;
}
int fs_real_truncate(const char *path, off_t length)
@@ -1418,7 +1436,8 @@
}
if (fs_home_stat(path,&newpath,&v_stbuf) == -1)
fs_file_dup(path,newpath);
- return truncate(newpath, length);
+ if (truncate(newpath,length) == 0) return 0;
+ return -errno;
}
int fs_real_utime(const char *path, struct utimbuf *times)
@@ -1435,7 +1454,8 @@
}
if (fs_home_stat(path,&newpath,&v_stbuf) == -1)
fs_file_dup(path,newpath);
- return utime(newpath, times);
+ if (utime(newpath,times) == 0) return 0;
+ return -errno;
}
#ifdef HAVE_SETXATTR
@@ -1454,7 +1474,8 @@
}
if (fs_home_stat(path,&newpath,&v_stbuf) == -1)
fs_file_dup(path,newpath);
- return setxattr(newpath, name, value, size, options);
+ if (setxattr(newpath,name,value,size,options) == 0) return 0;
+ return -errno;
}
int fs_real_getxattr(const char *path, const char *name, void *value,
size_t size)
@@ -1474,12 +1495,12 @@
if (fs_home_stat(path,&newpath,&v_stbuf) == 0)
{
retval = getxattr(newpath, name, value, size);
- if (retval == -1) return -ENOTSUP;
+ if (retval == -1) return -errno;
return retval;
}
retval = getxattr(path, name, value, size);
- if (retval == -1) return -ENOTSUP;
+ if (retval == -1) return -errno;
return retval;
}
@@ -1496,8 +1517,13 @@
return -ENOTSUP;
}
- if (fs_home_stat(path,&newpath,&v_stbuf) == 0) return
listxattr(newpath,list,size);
- return listxattr(path,list,size);
+ if (fs_home_stat(path,&newpath,&v_stbuf) == 0)
+ {
+ if (listxattr(newpath,list,size) == 0) return 0;
+ return -errno;
+ }
+ if (listxattr(path,list,size) == 0) return 0;
+ return -errno;
}
int fs_real_removexattr(const char *path, const char *name)
@@ -1514,6 +1540,7 @@
}
if (fs_home_stat(path,&newpath,&v_stbuf) == -1)
fs_file_dup(path,newpath);
- return removexattr(newpath, name);
+ if (removexattr(newpath,name) == 0) return 0;
+ return -errno;
}
#endif /* HAVE_SETXATTR */
_______________________________________________
klik-devel mailing list
klik-devel@kde.org
https://mail.kde.org/mailman/listinfo/klik-devel
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic