Import ncpfs 0.24

This commit is contained in:
ncpfs archive import
2026-04-28 20:39:58 +02:00
parent 84cb1f167d
commit 7d0e3d011b
10 changed files with 50 additions and 16 deletions

View File

@@ -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;
}

View File

@@ -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)

View File

@@ -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 *