Import ncpfs 0.24
This commit is contained in:
@@ -20,6 +20,7 @@
|
||||
#include <linux/ncp_fs.h>
|
||||
#include <asm/segment.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/locks.h>
|
||||
#include "ncplib_kernel.h"
|
||||
|
||||
struct ncp_dirent {
|
||||
@@ -827,7 +828,7 @@ ncp_lookup(struct inode *dir, const char *__name, int len,
|
||||
|
||||
memcpy(name, __name, len);
|
||||
name[len] = 0;
|
||||
|
||||
lock_super(dir->i_sb);
|
||||
result_info = ncp_find_dir_inode(dir, name);
|
||||
|
||||
if (result_info != 0)
|
||||
@@ -841,6 +842,7 @@ ncp_lookup(struct inode *dir, const char *__name, int len,
|
||||
inode number */
|
||||
|
||||
*result = iget(dir->i_sb, ncp_info_ino(server, result_info));
|
||||
unlock_super(dir->i_sb);
|
||||
iput(dir);
|
||||
|
||||
if (*result == NULL)
|
||||
@@ -903,6 +905,7 @@ ncp_lookup(struct inode *dir, const char *__name, int len,
|
||||
}
|
||||
if (res != 0)
|
||||
{
|
||||
unlock_super(dir->i_sb);
|
||||
iput(dir);
|
||||
return -ENOENT;
|
||||
}
|
||||
@@ -913,10 +916,12 @@ ncp_lookup(struct inode *dir, const char *__name, int len,
|
||||
|
||||
if (!(*result = ncp_iget(dir, &finfo)))
|
||||
{
|
||||
unlock_super(dir->i_sb);
|
||||
iput(dir);
|
||||
return -EACCES;
|
||||
}
|
||||
|
||||
unlock_super(dir->i_sb);
|
||||
iput(dir);
|
||||
return 0;
|
||||
}
|
||||
@@ -946,6 +951,7 @@ ncp_create(struct inode *dir, const char *name, int len, int mode,
|
||||
_name[len] = '\0';
|
||||
str_upper(_name);
|
||||
|
||||
lock_super(dir->i_sb);
|
||||
if (ncp_open_create_file_or_subdir(NCP_SERVER(dir),
|
||||
NCP_ISTRUCT(dir), _name,
|
||||
OC_MODE_CREATE|OC_MODE_OPEN|
|
||||
@@ -953,6 +959,7 @@ ncp_create(struct inode *dir, const char *name, int len, int mode,
|
||||
0, AR_READ|AR_WRITE,
|
||||
&finfo) != 0)
|
||||
{
|
||||
unlock_super(dir->i_sb);
|
||||
iput(dir);
|
||||
return -EACCES;
|
||||
}
|
||||
@@ -965,10 +972,12 @@ ncp_create(struct inode *dir, const char *name, int len, int mode,
|
||||
if (!(*result = ncp_iget(dir, &finfo)) < 0)
|
||||
{
|
||||
ncp_close_file(NCP_SERVER(dir), finfo.file_handle);
|
||||
unlock_super(dir->i_sb);
|
||||
iput(dir);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
unlock_super(dir->i_sb);
|
||||
iput(dir);
|
||||
return 0;
|
||||
}
|
||||
@@ -985,6 +994,7 @@ ncp_mkdir(struct inode *dir, const char *name, int len, int mode)
|
||||
|| ( (len == 2)
|
||||
&& (name[1] == '.'))))
|
||||
{
|
||||
iput(dir);
|
||||
return -EEXIST;
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <linux/stat.h>
|
||||
#include <linux/mm.h>
|
||||
#include <linux/ncp_fs.h>
|
||||
#include <linux/locks.h>
|
||||
#include "ncplib_kernel.h"
|
||||
#include <linux/malloc.h>
|
||||
|
||||
@@ -50,8 +51,10 @@ ncp_make_open(struct inode *i, int right)
|
||||
|
||||
DPRINTK("ncp_make_open: dirent->opened = %d\n", finfo->opened);
|
||||
|
||||
lock_super(i->i_sb);
|
||||
if (finfo->opened == 0)
|
||||
{
|
||||
finfo->access = -1;
|
||||
/* tries max. rights */
|
||||
if (ncp_open_create_file_or_subdir(NCP_SERVER(i),
|
||||
NULL, NULL,
|
||||
@@ -69,12 +72,10 @@ ncp_make_open(struct inode *i, int right)
|
||||
{
|
||||
finfo->access = O_RDONLY;
|
||||
}
|
||||
else
|
||||
{
|
||||
return -EACCES;
|
||||
}
|
||||
}
|
||||
|
||||
unlock_super(i->i_sb);
|
||||
|
||||
if ( ((right == O_RDONLY) && ( (finfo->access == O_RDONLY)
|
||||
|| (finfo->access == O_RDWR)))
|
||||
|| ((right == O_WRONLY) && ( (finfo->access == O_WRONLY)
|
||||
|
||||
@@ -132,7 +132,9 @@ static void
|
||||
ncp_put_inode(struct inode *inode)
|
||||
{
|
||||
struct nw_file_info *finfo = NCP_FINFO(inode);
|
||||
struct super_block *sb = inode->i_sb;
|
||||
|
||||
lock_super(sb);
|
||||
if (finfo->opened != 0)
|
||||
{
|
||||
if (ncp_close_file(NCP_SERVER(inode), finfo->file_handle)!=0)
|
||||
@@ -155,6 +157,7 @@ ncp_put_inode(struct inode *inode)
|
||||
}
|
||||
|
||||
clear_inode(inode);
|
||||
unlock_super(sb);
|
||||
}
|
||||
|
||||
struct super_block *
|
||||
|
||||
Reference in New Issue
Block a user