Import ncpfs 0.18
This commit is contained in:
BIN
.downloads/ncpfs-0.18.tgz
Normal file
BIN
.downloads/ncpfs-0.18.tgz
Normal file
Binary file not shown.
7
Changes
7
Changes
@@ -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
41
FAQ
Normal 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.
|
||||
2
Makefile
2
Makefile
@@ -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
21
README
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
/*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user