Update NTFS-3g Library to stable 2009.4.4 version. Clean up code. Now write support enabled by default.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@30944 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Gerasim Troeglazov
2009-06-02 12:21:10 +00:00
parent 4cf2271b57
commit 30bc84e971
51 changed files with 3202 additions and 2349 deletions
+21 -18
View File
@@ -123,7 +123,7 @@ fs_identify_partition(int fd, partition_data *partition, void **_cookie)
if(!ioctl(fd,B_GET_PATH_FOR_DEVICE,devpath))
return -1;
//try mount
ntVolume = utils_mount_volume(devpath,MS_RDONLY|MS_NOATIME,true);
ntVolume = utils_mount_volume(devpath,MS_RDONLY,true);
if(!ntVolume)
return -1;
@@ -208,8 +208,8 @@ fs_mount(fs_volume *_vol, const char *device, ulong flags, const char *args, ino
mnt_flags |= MS_RDONLY;
ns->flags |= B_MOUNT_READ_ONLY;
}
if (ns->noatime)
mnt_flags |= MS_NOATIME;
// if (ns->noatime)
// mnt_flags |= MS_NOATIME;
ns->ntvol=utils_mount_volume(device,mnt_flags,true);
if(ns->ntvol!=NULL)
@@ -367,7 +367,7 @@ fs_walk(fs_volume *_vol, fs_vnode *_dir, const char *file, ino_t *vnid)
result = ENOENT;
} else {
unicode = ntfs_calloc(MAX_PATH);
len = ntfs_mbstoucs(file, &unicode, MAX_PATH);
len = ntfs_mbstoucs(file, &unicode);
if (len < 0) {
result = EILSEQ;
goto exit;
@@ -882,7 +882,7 @@ fs_create(fs_volume *_vol, fs_vnode *_dir, const char *name, int omode, int perm
goto exit;
}
uname_len = ntfs_mbstoucs(name, &uname, 0);
uname_len = ntfs_mbstoucs(name, &uname);
if (uname_len < 0) {
result = EINVAL;
goto exit;
@@ -1285,13 +1285,13 @@ fs_create_symlink(fs_volume *_vol, fs_vnode *_dir, const char *name, const char
goto exit;
}
uname_len = ntfs_mbstoucs(name, &uname, 0);
uname_len = ntfs_mbstoucs(name, &uname);
if (uname_len < 0) {
result = EINVAL;
goto exit;
}
utarget_len = ntfs_mbstoucs(target, &utarget, 0);
utarget_len = ntfs_mbstoucs(target, &utarget);
if (utarget_len < 0) {
result = EINVAL;
goto exit;
@@ -1380,7 +1380,7 @@ fs_mkdir(fs_volume *_vol, fs_vnode *_dir, const char *name, int perms)
goto exit;
}
uname_len = ntfs_mbstoucs(name, &uname, 0);
uname_len = ntfs_mbstoucs(name, &uname);
if (uname_len < 0) {
result = EINVAL;
goto exit;
@@ -1475,13 +1475,13 @@ fs_rename(fs_volume *_vol, fs_vnode *_odir, const char *oldname, fs_vnode *_ndir
goto exit;
//convert names from utf8 to unicode string
unewname_len = ntfs_mbstoucs(newname, &unewname, 0);
unewname_len = ntfs_mbstoucs(newname, &unewname);
if (unewname_len < 0) {
result = EINVAL;
goto exit;
}
uoldname_len = ntfs_mbstoucs(oldname, &uoldname, 0);
uoldname_len = ntfs_mbstoucs(oldname, &uoldname);
if (uoldname_len < 0) {
result = EINVAL;
goto exit;
@@ -1544,13 +1544,14 @@ fs_rename(fs_volume *_vol, fs_vnode *_odir, const char *oldname, fs_vnode *_ndir
goto exit;
}
ntfs_delete(oi, odi, uoldname, uoldname_len);
onode->parent_vnid = MREF( ndi->mft_no );
notify_entry_moved(ns->id, MREF( odi->mft_no ), oldname, MREF( ndi->mft_no ), newname, onode->vnid );
notify_attribute_changed(ns->id, onode->vnid, "BEOS:TYPE", B_ATTR_CHANGED);
ntfs_delete(oi, odi, uoldname, uoldname_len);
oi = odi = NULL; /* ntfs_delete() always closes ni and dir_ni */
put_vnode(_vol, onode->vnid );
} else { //renaming
@@ -1590,10 +1591,12 @@ fs_rename(fs_volume *_vol, fs_vnode *_odir, const char *oldname, fs_vnode *_ndir
goto exit;
}
ntfs_delete(oi, odi, uoldname, uoldname_len);
notify_entry_moved(ns->id, MREF( odi->mft_no ), oldname, MREF( odi->mft_no ), newname, onode->vnid );
notify_attribute_changed(ns->id, onode->vnid, "BEOS:TYPE", B_ATTR_CHANGED);
put_vnode(_vol, onode->vnid );
ntfs_delete(oi, odi, uoldname, uoldname_len);
oi = odi = NULL; /* ntfs_delete() always closes ni and dir_ni */
}
@@ -1626,7 +1629,7 @@ do_unlink(fs_volume *_vol, vnode *dir, const char *name, bool isdir)
int uname_len;
status_t result = B_NO_ERROR;
uname_len = ntfs_mbstoucs(name, &uname, 0);
uname_len = ntfs_mbstoucs(name, &uname);
if (uname_len < 0) {
result = EINVAL;
goto exit1;
@@ -1675,8 +1678,8 @@ do_unlink(fs_volume *_vol, vnode *dir, const char *name, bool isdir)
if(ntfs_delete(ni, bi, uname, uname_len))
result = errno;
else
ni = NULL;
ni = bi = NULL;
node->parent_vnid = dir->vnid;
@@ -1760,7 +1763,7 @@ fs_unlink(fs_volume *_vol, fs_vnode *_dir, const char *name)
ERRPRINT("fs_unlink - ENTER: name %s\n", name==NULL?"NULL":name);
if( ns == NULL || dir == NULL || name ==NULL) {
if( ns == NULL || dir == NULL || name == NULL) {
result = EINVAL;
goto exit;
}