Import ncpfs 0.24

This commit is contained in:
ncpfs archive import
2026-04-28 20:39:58 +02:00
parent 84cb1f167d
commit 09e36d6611
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
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
- Fixed a memory allocation problem in nwmsg.c. Thanks to
Andrew Ross <anr1001@hermes.cam.ac.uk>

View File

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

8
README
View File

@@ -5,6 +5,14 @@ provided.
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
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

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 *

View File

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

View File

@@ -520,7 +520,7 @@ do_ncp_call(struct ncp_conn *conn, int request_size)
*((struct ncp_request_header *)(&(conn->packet)));
int result;
int retries = 3;
int retries = 20;
int len;
long err;
struct ncp_reply_header *r =
@@ -542,7 +542,7 @@ do_ncp_call(struct ncp_conn *conn, int request_size)
re_select:
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))
&& (r->type == NCP_POSITIVE_ACK))

View File

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