Compare commits

...

1 Commits
v0.23 ... v0.24

Author SHA1 Message Date
ncpfs archive import
7d0e3d011b Import ncpfs 0.24 2026-04-28 20:39:58 +02:00
10 changed files with 50 additions and 16 deletions

BIN
.downloads/ncpfs-0.24.tgz Normal file

Binary file not shown.

View File

@@ -1,6 +1,12 @@
I only began this file with ncpfs-0.12. If you're interested in older I only began this file with ncpfs-0.12. If you're interested in older
versions, you can find them on ftp.gwdg.de:/pub/linux/misc/ncpfs/old. versions, you can find them on ftp.gwdg.de:/pub/linux/misc/ncpfs/old.
ncpfs-0.23 -> ncpfs-0.24
- Fixed a bug that made it impossible to umount a filesystem after you
tried 'mkdir .' or 'mkdir ..'.
- Fixed a bad race condition when opening files.
- Made the default timeout values more robust.
ncpfs-0.22 -> ncpfs-0.23 ncpfs-0.22 -> ncpfs-0.23
- Fixed a memory allocation problem in nwmsg.c. Thanks to - Fixed a memory allocation problem in nwmsg.c. Thanks to
Andrew Ross <anr1001@hermes.cam.ac.uk> Andrew Ross <anr1001@hermes.cam.ac.uk>

View File

@@ -2,7 +2,7 @@
# Makefile for the linux ncp-filesystem routines. # Makefile for the linux ncp-filesystem routines.
# #
VERSION = 0.23 VERSION = 0.24
# If you are using kerneld to autoload ncp support, # If you are using kerneld to autoload ncp support,
# uncomment this (kerneld is in linux since about 1.3.57): # uncomment this (kerneld is in linux since about 1.3.57):

8
README
View File

@@ -5,6 +5,14 @@ provided.
INSTALLATION INSTALLATION
Before you start the installation, make sure that your kernel has IPX
support compiled in. When 'make config' asks you for
The IPX protocol (CONFIG_IPX) [N/y/m/?]
simply answer 'y'. Probably you do not need the full internal net that
you are asked for next.
The installation of ncpfs depends on the kernel version you are The installation of ncpfs depends on the kernel version you are
using. For kernel 1.2, you should simply type 'make' and look at using. For kernel 1.2, you should simply type 'make' and look at
what's in the bin/ directory after that. Please be sure that your what's in the bin/ directory after that. Please be sure that your

View File

@@ -20,6 +20,7 @@
#include <linux/ncp_fs.h> #include <linux/ncp_fs.h>
#include <asm/segment.h> #include <asm/segment.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/locks.h>
#include "ncplib_kernel.h" #include "ncplib_kernel.h"
struct ncp_dirent { struct ncp_dirent {
@@ -827,7 +828,7 @@ ncp_lookup(struct inode *dir, const char *__name, int len,
memcpy(name, __name, len); memcpy(name, __name, len);
name[len] = 0; name[len] = 0;
lock_super(dir->i_sb);
result_info = ncp_find_dir_inode(dir, name); result_info = ncp_find_dir_inode(dir, name);
if (result_info != 0) if (result_info != 0)
@@ -841,6 +842,7 @@ ncp_lookup(struct inode *dir, const char *__name, int len,
inode number */ inode number */
*result = iget(dir->i_sb, ncp_info_ino(server, result_info)); *result = iget(dir->i_sb, ncp_info_ino(server, result_info));
unlock_super(dir->i_sb);
iput(dir); iput(dir);
if (*result == NULL) if (*result == NULL)
@@ -903,6 +905,7 @@ ncp_lookup(struct inode *dir, const char *__name, int len,
} }
if (res != 0) if (res != 0)
{ {
unlock_super(dir->i_sb);
iput(dir); iput(dir);
return -ENOENT; return -ENOENT;
} }
@@ -913,10 +916,12 @@ ncp_lookup(struct inode *dir, const char *__name, int len,
if (!(*result = ncp_iget(dir, &finfo))) if (!(*result = ncp_iget(dir, &finfo)))
{ {
unlock_super(dir->i_sb);
iput(dir); iput(dir);
return -EACCES; return -EACCES;
} }
unlock_super(dir->i_sb);
iput(dir); iput(dir);
return 0; return 0;
} }
@@ -946,6 +951,7 @@ ncp_create(struct inode *dir, const char *name, int len, int mode,
_name[len] = '\0'; _name[len] = '\0';
str_upper(_name); str_upper(_name);
lock_super(dir->i_sb);
if (ncp_open_create_file_or_subdir(NCP_SERVER(dir), if (ncp_open_create_file_or_subdir(NCP_SERVER(dir),
NCP_ISTRUCT(dir), _name, NCP_ISTRUCT(dir), _name,
OC_MODE_CREATE|OC_MODE_OPEN| 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, 0, AR_READ|AR_WRITE,
&finfo) != 0) &finfo) != 0)
{ {
unlock_super(dir->i_sb);
iput(dir); iput(dir);
return -EACCES; 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) if (!(*result = ncp_iget(dir, &finfo)) < 0)
{ {
ncp_close_file(NCP_SERVER(dir), finfo.file_handle); ncp_close_file(NCP_SERVER(dir), finfo.file_handle);
unlock_super(dir->i_sb);
iput(dir); iput(dir);
return -EINVAL; return -EINVAL;
} }
unlock_super(dir->i_sb);
iput(dir); iput(dir);
return 0; return 0;
} }
@@ -985,6 +994,7 @@ ncp_mkdir(struct inode *dir, const char *name, int len, int mode)
|| ( (len == 2) || ( (len == 2)
&& (name[1] == '.')))) && (name[1] == '.'))))
{ {
iput(dir);
return -EEXIST; return -EEXIST;
} }

View File

@@ -21,6 +21,7 @@
#include <linux/stat.h> #include <linux/stat.h>
#include <linux/mm.h> #include <linux/mm.h>
#include <linux/ncp_fs.h> #include <linux/ncp_fs.h>
#include <linux/locks.h>
#include "ncplib_kernel.h" #include "ncplib_kernel.h"
#include <linux/malloc.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); DPRINTK("ncp_make_open: dirent->opened = %d\n", finfo->opened);
lock_super(i->i_sb);
if (finfo->opened == 0) if (finfo->opened == 0)
{ {
finfo->access = -1;
/* tries max. rights */ /* tries max. rights */
if (ncp_open_create_file_or_subdir(NCP_SERVER(i), if (ncp_open_create_file_or_subdir(NCP_SERVER(i),
NULL, NULL, NULL, NULL,
@@ -69,12 +72,10 @@ ncp_make_open(struct inode *i, int right)
{ {
finfo->access = O_RDONLY; finfo->access = O_RDONLY;
} }
else
{
return -EACCES;
}
} }
unlock_super(i->i_sb);
if ( ((right == O_RDONLY) && ( (finfo->access == O_RDONLY) if ( ((right == O_RDONLY) && ( (finfo->access == O_RDONLY)
|| (finfo->access == O_RDWR))) || (finfo->access == O_RDWR)))
|| ((right == O_WRONLY) && ( (finfo->access == O_WRONLY) || ((right == O_WRONLY) && ( (finfo->access == O_WRONLY)

View File

@@ -132,7 +132,9 @@ static void
ncp_put_inode(struct inode *inode) ncp_put_inode(struct inode *inode)
{ {
struct nw_file_info *finfo = NCP_FINFO(inode); struct nw_file_info *finfo = NCP_FINFO(inode);
struct super_block *sb = inode->i_sb;
lock_super(sb);
if (finfo->opened != 0) if (finfo->opened != 0)
{ {
if (ncp_close_file(NCP_SERVER(inode), finfo->file_handle)!=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); clear_inode(inode);
unlock_super(sb);
} }
struct super_block * struct super_block *

View File

@@ -1,7 +1,7 @@
Begin3 Begin3
Title: ncpfs Title: ncpfs
Version: 0.23 Version: 0.24
Entered-date: 04. May 1996 Entered-date: 02. June 1996
Description: With ncpfs you can mount volumes of your netware Description: With ncpfs you can mount volumes of your netware
server under Linux. You can also print to netware server under Linux. You can also print to netware
print queues and spool netware print queues to the print queues and spool netware print queues to the
@@ -9,11 +9,11 @@ Description: With ncpfs you can mount volumes of your netware
1.3.71 and above. ncpfs does NOT work with any 1.3.x 1.3.71 and above. ncpfs does NOT work with any 1.3.x
kernel below 1.3.71. kernel below 1.3.71.
Keywords: filesystem ncp novell netware printing Keywords: filesystem ncp novell netware printing
Author: lendecke@namu01.gwdg.de (Volker Lendecke) Author: lendecke@namu01.Num.Math.Uni-Goettingen.de (Volker Lendecke)
Maintained-by: lendecke@namu01.gwdg.de (Volker Lendecke) Maintained-by: lendecke@namu01.Num.Math.Uni-Goettingen.de (Volker Lendecke)
Primary-site: ftp.gwdg.de:/pub/linux/misc/ncpfs Primary-site: ftp.gwdg.de:/pub/linux/misc/ncpfs
Alternate-site: sunsite.unc.edu:/pub/system/Filesystems/ncpfs Alternate-site: sunsite.unc.edu:/pub/system/Filesystems/ncpfs
~120k ncpfs-0.23.tgz ~120k ncpfs-0.24.tgz
~ 1k ncpfs-0.23.lsm ~ 1k ncpfs-0.24.lsm
Copying-policy: GPL Copying-policy: GPL
End End

View File

@@ -520,7 +520,7 @@ do_ncp_call(struct ncp_conn *conn, int request_size)
*((struct ncp_request_header *)(&(conn->packet))); *((struct ncp_request_header *)(&(conn->packet)));
int result; int result;
int retries = 3; int retries = 20;
int len; int len;
long err; long err;
struct ncp_reply_header *r = struct ncp_reply_header *r =
@@ -542,7 +542,7 @@ do_ncp_call(struct ncp_conn *conn, int request_size)
re_select: re_select:
len = ipx_recv(conn->ncp_sock, len = ipx_recv(conn->ncp_sock,
conn->packet, NCP_PACKET_SIZE, 0, 1, &err); conn->packet, NCP_PACKET_SIZE, 0, 3, &err);
if ( (len == sizeof(*r)) if ( (len == sizeof(*r))
&& (r->type == NCP_POSITIVE_ACK)) && (r->type == NCP_POSITIVE_ACK))

View File

@@ -21,10 +21,16 @@ ec NCPL_ET_NO_SPEC,
ec NCPL_ET_INVALID_MODE, ec NCPL_ET_INVALID_MODE,
"$HOME/.nwclient has invalid mode" "$HOME/.nwclient has invalid mode"
ec NCPL_ET_LOGIN_FAILED, ec NCPL_ET_LOGIN_DENIED,
"Login failed" "Login denied"
ec NCPL_ET_NO_INTERFACE, ec NCPL_ET_NO_INTERFACE,
"No primary IPX interface found" "No primary IPX interface found"
ec NCPL_ET_NO_PASSWORD,
"Could not get password"
ec NCPL_ET_PWD_TOO_LONG,
"Password too long"
end end