Import ncpfs 0.18

This commit is contained in:
ncpfs archive import
2026-04-28 20:39:57 +02:00
parent 1fa124bd7c
commit d5ac4601b1
14 changed files with 141 additions and 27 deletions

BIN
.downloads/ncpfs-0.18.tgz Normal file

Binary file not shown.

View File

@@ -1,6 +1,13 @@
I only began this file with ncpfs-0.12. If you're interested in older
versions, you can find them on linux01.gwdg.de:/pub/ncpfs/old.
ncpfs-0.17 -> ncpfs-0.18
- Another attempt at solving the problem that -n is not working.
- Forgot nprint in 0.17 util/Makefile.
- nprint left connections open when it fails
- added options -r and -t to ncpmount to tune ncpfs connections.
ncpfs-0.16 -> ncpfs-0.17
- Changed the name of fsinfo to nwfsinfo, to avoid a name clash with

41
FAQ Normal file
View File

@@ -0,0 +1,41 @@
There is certainly not enough material to call this an FAQ, but some
questions reach me regularly. Probably the documenation is not clear
enough.
-------------------------------------------------------------------------------
Q: Does ncpfs support long file names, using the OS/2 namespace?
No. Not yet. I still have to sort out how that really works. But it should
certainly be possible.
-------------------------------------------------------------------------------
Q: When I re-export ncpfs-mounted directories via nfs, I get messages like
'pwd: cannot get current directory', and other strange things happen to
the nfs clients. What's wrong?
When you want to export a directory via NFS, you have to do two things:
- You have to invoke mountd and nfsd with the option --re-export. On my
computer, both are invoked at system startup from the file
/etc/rc.d/rc.inet2.
- You can not export a complete NetWare server hierarchy with all volumes
under a single mount point. You have to mount a single server volume to
make it re-exportable. Invoke ncpmount with the option -V volume to do
this.
-------------------------------------------------------------------------------
Q: When I compile ncpfs, I get a message like the following:
make[1]: Entering directory `/home/me/netware/ncpfs/kernel-1.2/src'
gcc -D__KERNEL__ -I. -Wall -Wstrict-prototypes -O2 -DMODULE -fomit-frame-pointer -I/home/me/netware/ncpfs/kernel-1.2 -DNCPFS_VERSION=\"0.17\" -c dir.c
dir.c:36: warning: `struct dirent' declared inside parameter list
dir.c:36: warning: its scope is only this definition or declaration,
...
You try to compile the part of ncpfs that is meant for kernel 1.2.13 under
kernel 1.3.x. Please look at the Makefile and comment out the
corresponding lines.

View File

@@ -2,7 +2,7 @@
# Makefile for the linux ncp-filesystem routines.
#
VERSION = 0.17
VERSION = 0.18
TOPDIR = $(shell pwd)
BINDIR = /usr/local/bin

21
README
View File

@@ -12,10 +12,9 @@ kernel resides in /usr/src/linux, because the file
kernel-1.2/src/sock.c has to refer directly to it.
If you use Kernel 1.3, please be sure that you use at least
1.3.54. ncpfs does NOT work with any earlier 1.3.x kernel, especially
not with 1.3.53, although this one has a fs/ncpfs/ subdirectory.
1.3.71. ncpfs does NOT work with any earlier 1.3.x kernel.
If you use Kernel 1.3.54 or later, you might have to recompile your
If you use Kernel 1.3.71 or later, you might have to recompile your
kernel. With these kernels, the kernel part of ncpfs is already
included in the main source tree. If you want to use ncpfs, you should
say 'y' to 'make config' when you are asked for IPX, and again when it
@@ -23,12 +22,23 @@ asks for ncpfs. After you have rebooted with the new kernel, 'cat
/proc/filesystems' should show you a line saying that the kernel knows
ncpfs.
With Kernel 1.3.54 or later you also have to modify the Makefile in the
With Kernel 1.3.71 or later you also have to modify the Makefile in the
directory you found this README in. Please see the Makefile for the
necessary modifications. Then typing 'make' should work with no
problem.
HELP
To get more help you can subscribe to the LinWare mailing list:
control addr: listserv@sh.cvut.cz
posting addr: linware@sh.cvut.cz
In the meantime my mail volume has grown considerably, so the response
time might be better at the LinWare mailing list than at my personal
email address.
USING NCPFS
Please note that your IPX system has to be configured correctly. If
@@ -93,3 +103,6 @@ You will not be able to access servers that require packet
signatures. This seems to be one of Novell's bigger secrets :-(.
Have fun with ncpfs!
Volker
lendecke@namu01.gwdg.de

View File

@@ -91,7 +91,7 @@ ipx_assign_node(IPXNode dest, IPXNode src)
int
ipx_node_equal(IPXNode n1, IPXNode n2)
{
return memcmp(n1,n2,sizeof(n1))==0;
return memcmp(n1,n2,sizeof(IPXNode))==0;
}
int

View File

@@ -430,8 +430,8 @@ ncp_read_volume_list(struct ncp_server *server, int fpos, int cache_size)
info.volume_name,
&(entry->i)) != 0)
{
printk("ncpfs: could not lookup vol "
"%s\n", info.volume_name);
DPRINTK("ncpfs: could not lookup vol "
"%s\n", info.volume_name);
continue;
}
@@ -722,7 +722,8 @@ ncp_find_dir_inode(struct inode *dir, const char *name)
{
if ( (result->dir->finfo.i.DosDirNum == dir_info->DosDirNum)
&& (result->dir->finfo.i.volNumber == dir_info->volNumber)
&& (strcmp(result->finfo.i.entryName, name) == 0))
&& (strcmp(result->finfo.i.entryName, name) == 0)
&& (result != &(server->root)))
{
return result;
}

View File

@@ -401,9 +401,8 @@ do_ncp_rpc_call(struct ncp_server *server, int size)
* a null buffer yet. */
sock->ops->recvfrom(sock, (void *)&reply, sizeof(reply), 1, 0,
NULL, &addrlen);
#if 1
printk("ncp_rpc_call: reply mismatch\n");
#endif
DPRINTK("ncp_rpc_call: reply mismatch\n");
goto re_select;
}
/*

View File

@@ -37,6 +37,12 @@ ncpmount \- mount all volumes of a specified Novell fileserver.
.B -V
.I volume
] [
.B -t
.I time_out
] [
.B -r
.I retry_count
] [
.B -v
]
mount-point
@@ -221,6 +227,36 @@ sometime in the future I will make it possible to mount all volumes on
different mount points, using only one connection.
.RE
.B -t
.I time_out
.RS 3
With
.B -t
you can adjust the time ncpfs waits for the server to answer a request
it sent. Use the option to raise the timeout value when your ncpfs
connections seem to be unstable although your servers are well
up. This can happen when you have very busy servers, or servers that
are very far away.
.I time_out
is specified in 1/100s, the current default value is 60.
.RE
.B -r
.I retry_count
.RS 3
As
.B -t, -r
can be used to tune the ncpfs connection to the server. With
retry_count you can specify how many times ncpfs will attempt to send
a packet to the server before it decides the connection is dead. The
current default value is 5.
Currently ncpfs is not too clever when trying to find out that
connections are dead. If anybody knows how to do that correctly, as it
is done by commercial workstations, please tell me.
.RE
.B -v
.RS 3
Print ncpfs version number

View File

@@ -1,7 +1,7 @@
Begin3
Title: ncpfs
Version: 0.17
Entered-date: 29. February 1996
Version: 0.18
Entered-date: 09. March 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
@@ -13,7 +13,7 @@ Author: lendecke@namu01.gwdg.de (Volker Lendecke)
Maintained-by: lendecke@namu01.gwdg.de (Volker Lendecke)
Primary-site: linux01.gwdg.de:/pub/ncpfs
Alternate-site: sunsite.unc.edu:/pub/system/Filesystems/
~81k ncpfs-0.17.tgz
~ 1k ncpfs-0.17.lsm
~83k ncpfs-0.18.tgz
~ 1k ncpfs-0.18.lsm
Copying-policy: GPL
End

View File

@@ -2,7 +2,7 @@
# Makefile for the linux ncp-filesystem routines.
#
USERUTILS = slist pqlist nwfsinfo pserver
USERUTILS = slist pqlist nwfsinfo pserver nprint
UIDUTILS = ncpmount ncpumount
SBINUTILS = nwmsg

View File

@@ -1239,13 +1239,12 @@ ncp_find_conn_spec(const char *server, const char *user, const char *password,
}
}
if (strlen(spec.user) == 0)
{
return &spec;
}
if (strlen(spec.password) == 0)
if ((strlen(spec.password) == 0) && (password == NULL))
{
char *password;
if (!(isatty(0) && isatty(1)))
@@ -2769,6 +2768,7 @@ ncp_copy_file(struct ncp_conn *conn,
}
*copied_count = ncp_reply_dword(conn, 0);
ncp_unlock_conn(conn);
return 0;
}

View File

@@ -192,10 +192,13 @@ main(int argc, char *argv[])
data.file_mode = (S_IRWXU|S_IRWXG|S_IRWXO) & ~um;
data.dir_mode = 0;
data.flags |= NCP_MOUNT_SOFT;
data.time_out = 60;
data.retry_count = 5;
upcase_password = 1;
while ((opt = getopt (argc, argv, "CS:U:c:u:g:f:d:P:nhvV:")) != EOF)
while ((opt = getopt (argc, argv, "CS:U:c:u:g:f:d:P:nhvV:t:r:"))
!= EOF)
{
switch (opt)
{
@@ -296,6 +299,12 @@ main(int argc, char *argv[])
case 'n':
password = "";
break;
case 't':
data.time_out = atoi(optarg);
break;
case 'r':
data.retry_count = atoi(optarg);
break;
case 'h':
help();
exit(1);
@@ -463,9 +472,6 @@ main(int argc, char *argv[])
flags = MS_MGC_VAL;
data.time_out = 20;
data.retry_count = 2;
result = mount(NULL, mount_point, "ncpfs", flags, (char *)&data);
if (result < 0)
@@ -545,12 +551,16 @@ help(void)
printf("\n"
"-S server Server name to be used\n"
"-U username Username sent to server\n"
"-V volume Volume to mount, for NFS re-export\n"
"-u uid uid the mounted files get\n"
"-g gid gid the mounted files get\n"
"-f mode permission the files get (octal notation)\n"
"-d mode permission the dirs get (octal notation)\n"
"-c uid uid to identify the connection to mount on\n"
" Only makes sense for root\n"
"-t time_out Waiting time (in 1/100s) to wait for\n"
" an answer from the server. Default: 60\n"
"-r retry_count Number of retry attempts. Default: 5\n"
"-C Don't convert password to uppercase\n"
"-P password Use this password\n"
"-n Do not use any password\n"

View File

@@ -191,6 +191,7 @@ main(int argc, char *argv[])
{
printf("queue name too long: %s\n",
optarg);
ncp_close(&conn);
exit(1);
}
queue = optarg;
@@ -211,6 +212,7 @@ main(int argc, char *argv[])
default:
usage();
ncp_close(&conn);
exit(1);
}
}
@@ -218,6 +220,7 @@ main(int argc, char *argv[])
if (optind != argc-1)
{
usage();
ncp_close(&conn);
exit(1);
}
@@ -233,6 +236,7 @@ main(int argc, char *argv[])
if (file < 0)
{
perror("could not open file");
ncp_close(&conn);
exit(1);
}
@@ -268,13 +272,15 @@ main(int argc, char *argv[])
queue, &q) != 0)
{
printf("could not find queue %s\n", queue);
return;
ncp_close(&conn);
exit(1);
}
if (ncp_create_queue_job_and_file(&conn, q.object_id, &j) != 0)
{
printf("create error\n");
return;
ncp_close(&conn);
exit(1);
}
written = 0;
@@ -299,17 +305,18 @@ main(int argc, char *argv[])
if (ncp_close_file_and_start_job(&conn, q.object_id, &j) != 0) {
printf("close error\n");
ncp_close(&conn);
return;
}
}
ncp_close(&conn);
return;
}
static void
usage(void)
{
fprintf(stderr, "usage: %s [options] file\n", progname);
exit(1);
}
static void