Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d5ac4601b1 |
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
|
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.
|
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
|
ncpfs-0.16 -> ncpfs-0.17
|
||||||
|
|
||||||
- Changed the name of fsinfo to nwfsinfo, to avoid a name clash with
|
- 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.
|
# Makefile for the linux ncp-filesystem routines.
|
||||||
#
|
#
|
||||||
|
|
||||||
VERSION = 0.17
|
VERSION = 0.18
|
||||||
TOPDIR = $(shell pwd)
|
TOPDIR = $(shell pwd)
|
||||||
|
|
||||||
BINDIR = /usr/local/bin
|
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.
|
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
|
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
|
1.3.71. ncpfs does NOT work with any earlier 1.3.x kernel.
|
||||||
not with 1.3.53, although this one has a fs/ncpfs/ subdirectory.
|
|
||||||
|
|
||||||
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
|
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
|
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
|
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
|
/proc/filesystems' should show you a line saying that the kernel knows
|
||||||
ncpfs.
|
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
|
directory you found this README in. Please see the Makefile for the
|
||||||
necessary modifications. Then typing 'make' should work with no
|
necessary modifications. Then typing 'make' should work with no
|
||||||
problem.
|
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
|
USING NCPFS
|
||||||
|
|
||||||
Please note that your IPX system has to be configured correctly. If
|
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 :-(.
|
signatures. This seems to be one of Novell's bigger secrets :-(.
|
||||||
|
|
||||||
Have fun with ncpfs!
|
Have fun with ncpfs!
|
||||||
|
|
||||||
|
Volker
|
||||||
|
lendecke@namu01.gwdg.de
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ ipx_assign_node(IPXNode dest, IPXNode src)
|
|||||||
int
|
int
|
||||||
ipx_node_equal(IPXNode n1, IPXNode n2)
|
ipx_node_equal(IPXNode n1, IPXNode n2)
|
||||||
{
|
{
|
||||||
return memcmp(n1,n2,sizeof(n1))==0;
|
return memcmp(n1,n2,sizeof(IPXNode))==0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|||||||
@@ -430,8 +430,8 @@ ncp_read_volume_list(struct ncp_server *server, int fpos, int cache_size)
|
|||||||
info.volume_name,
|
info.volume_name,
|
||||||
&(entry->i)) != 0)
|
&(entry->i)) != 0)
|
||||||
{
|
{
|
||||||
printk("ncpfs: could not lookup vol "
|
DPRINTK("ncpfs: could not lookup vol "
|
||||||
"%s\n", info.volume_name);
|
"%s\n", info.volume_name);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -722,7 +722,8 @@ ncp_find_dir_inode(struct inode *dir, const char *name)
|
|||||||
{
|
{
|
||||||
if ( (result->dir->finfo.i.DosDirNum == dir_info->DosDirNum)
|
if ( (result->dir->finfo.i.DosDirNum == dir_info->DosDirNum)
|
||||||
&& (result->dir->finfo.i.volNumber == dir_info->volNumber)
|
&& (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;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -401,9 +401,8 @@ do_ncp_rpc_call(struct ncp_server *server, int size)
|
|||||||
* a null buffer yet. */
|
* a null buffer yet. */
|
||||||
sock->ops->recvfrom(sock, (void *)&reply, sizeof(reply), 1, 0,
|
sock->ops->recvfrom(sock, (void *)&reply, sizeof(reply), 1, 0,
|
||||||
NULL, &addrlen);
|
NULL, &addrlen);
|
||||||
#if 1
|
|
||||||
printk("ncp_rpc_call: reply mismatch\n");
|
DPRINTK("ncp_rpc_call: reply mismatch\n");
|
||||||
#endif
|
|
||||||
goto re_select;
|
goto re_select;
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -37,6 +37,12 @@ ncpmount \- mount all volumes of a specified Novell fileserver.
|
|||||||
.B -V
|
.B -V
|
||||||
.I volume
|
.I volume
|
||||||
] [
|
] [
|
||||||
|
.B -t
|
||||||
|
.I time_out
|
||||||
|
] [
|
||||||
|
.B -r
|
||||||
|
.I retry_count
|
||||||
|
] [
|
||||||
.B -v
|
.B -v
|
||||||
]
|
]
|
||||||
mount-point
|
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.
|
different mount points, using only one connection.
|
||||||
.RE
|
.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
|
.B -v
|
||||||
.RS 3
|
.RS 3
|
||||||
Print ncpfs version number
|
Print ncpfs version number
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
Begin3
|
Begin3
|
||||||
Title: ncpfs
|
Title: ncpfs
|
||||||
Version: 0.17
|
Version: 0.18
|
||||||
Entered-date: 29. February 1996
|
Entered-date: 09. March 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
|
||||||
@@ -13,7 +13,7 @@ Author: lendecke@namu01.gwdg.de (Volker Lendecke)
|
|||||||
Maintained-by: lendecke@namu01.gwdg.de (Volker Lendecke)
|
Maintained-by: lendecke@namu01.gwdg.de (Volker Lendecke)
|
||||||
Primary-site: linux01.gwdg.de:/pub/ncpfs
|
Primary-site: linux01.gwdg.de:/pub/ncpfs
|
||||||
Alternate-site: sunsite.unc.edu:/pub/system/Filesystems/
|
Alternate-site: sunsite.unc.edu:/pub/system/Filesystems/
|
||||||
~81k ncpfs-0.17.tgz
|
~83k ncpfs-0.18.tgz
|
||||||
~ 1k ncpfs-0.17.lsm
|
~ 1k ncpfs-0.18.lsm
|
||||||
Copying-policy: GPL
|
Copying-policy: GPL
|
||||||
End
|
End
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
# Makefile for the linux ncp-filesystem routines.
|
# Makefile for the linux ncp-filesystem routines.
|
||||||
#
|
#
|
||||||
|
|
||||||
USERUTILS = slist pqlist nwfsinfo pserver
|
USERUTILS = slist pqlist nwfsinfo pserver nprint
|
||||||
UIDUTILS = ncpmount ncpumount
|
UIDUTILS = ncpmount ncpumount
|
||||||
SBINUTILS = nwmsg
|
SBINUTILS = nwmsg
|
||||||
|
|
||||||
|
|||||||
@@ -1239,13 +1239,12 @@ ncp_find_conn_spec(const char *server, const char *user, const char *password,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (strlen(spec.user) == 0)
|
if (strlen(spec.user) == 0)
|
||||||
{
|
{
|
||||||
return &spec;
|
return &spec;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strlen(spec.password) == 0)
|
if ((strlen(spec.password) == 0) && (password == NULL))
|
||||||
{
|
{
|
||||||
char *password;
|
char *password;
|
||||||
if (!(isatty(0) && isatty(1)))
|
if (!(isatty(0) && isatty(1)))
|
||||||
@@ -2769,6 +2768,7 @@ ncp_copy_file(struct ncp_conn *conn,
|
|||||||
}
|
}
|
||||||
|
|
||||||
*copied_count = ncp_reply_dword(conn, 0);
|
*copied_count = ncp_reply_dword(conn, 0);
|
||||||
|
ncp_unlock_conn(conn);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -192,10 +192,13 @@ main(int argc, char *argv[])
|
|||||||
data.file_mode = (S_IRWXU|S_IRWXG|S_IRWXO) & ~um;
|
data.file_mode = (S_IRWXU|S_IRWXG|S_IRWXO) & ~um;
|
||||||
data.dir_mode = 0;
|
data.dir_mode = 0;
|
||||||
data.flags |= NCP_MOUNT_SOFT;
|
data.flags |= NCP_MOUNT_SOFT;
|
||||||
|
data.time_out = 60;
|
||||||
|
data.retry_count = 5;
|
||||||
|
|
||||||
upcase_password = 1;
|
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)
|
switch (opt)
|
||||||
{
|
{
|
||||||
@@ -296,6 +299,12 @@ main(int argc, char *argv[])
|
|||||||
case 'n':
|
case 'n':
|
||||||
password = "";
|
password = "";
|
||||||
break;
|
break;
|
||||||
|
case 't':
|
||||||
|
data.time_out = atoi(optarg);
|
||||||
|
break;
|
||||||
|
case 'r':
|
||||||
|
data.retry_count = atoi(optarg);
|
||||||
|
break;
|
||||||
case 'h':
|
case 'h':
|
||||||
help();
|
help();
|
||||||
exit(1);
|
exit(1);
|
||||||
@@ -463,9 +472,6 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
flags = MS_MGC_VAL;
|
flags = MS_MGC_VAL;
|
||||||
|
|
||||||
data.time_out = 20;
|
|
||||||
data.retry_count = 2;
|
|
||||||
|
|
||||||
result = mount(NULL, mount_point, "ncpfs", flags, (char *)&data);
|
result = mount(NULL, mount_point, "ncpfs", flags, (char *)&data);
|
||||||
|
|
||||||
if (result < 0)
|
if (result < 0)
|
||||||
@@ -545,12 +551,16 @@ help(void)
|
|||||||
printf("\n"
|
printf("\n"
|
||||||
"-S server Server name to be used\n"
|
"-S server Server name to be used\n"
|
||||||
"-U username Username sent to server\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"
|
"-u uid uid the mounted files get\n"
|
||||||
"-g gid gid the mounted files get\n"
|
"-g gid gid the mounted files get\n"
|
||||||
"-f mode permission the files get (octal notation)\n"
|
"-f mode permission the files get (octal notation)\n"
|
||||||
"-d mode permission the dirs get (octal notation)\n"
|
"-d mode permission the dirs get (octal notation)\n"
|
||||||
"-c uid uid to identify the connection to mount on\n"
|
"-c uid uid to identify the connection to mount on\n"
|
||||||
" Only makes sense for root\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"
|
"-C Don't convert password to uppercase\n"
|
||||||
"-P password Use this password\n"
|
"-P password Use this password\n"
|
||||||
"-n Do not use any 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",
|
printf("queue name too long: %s\n",
|
||||||
optarg);
|
optarg);
|
||||||
|
ncp_close(&conn);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
queue = optarg;
|
queue = optarg;
|
||||||
@@ -211,6 +212,7 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
default:
|
default:
|
||||||
usage();
|
usage();
|
||||||
|
ncp_close(&conn);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -218,6 +220,7 @@ main(int argc, char *argv[])
|
|||||||
if (optind != argc-1)
|
if (optind != argc-1)
|
||||||
{
|
{
|
||||||
usage();
|
usage();
|
||||||
|
ncp_close(&conn);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -233,6 +236,7 @@ main(int argc, char *argv[])
|
|||||||
if (file < 0)
|
if (file < 0)
|
||||||
{
|
{
|
||||||
perror("could not open file");
|
perror("could not open file");
|
||||||
|
ncp_close(&conn);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -268,13 +272,15 @@ main(int argc, char *argv[])
|
|||||||
queue, &q) != 0)
|
queue, &q) != 0)
|
||||||
{
|
{
|
||||||
printf("could not find queue %s\n", queue);
|
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)
|
if (ncp_create_queue_job_and_file(&conn, q.object_id, &j) != 0)
|
||||||
{
|
{
|
||||||
printf("create error\n");
|
printf("create error\n");
|
||||||
return;
|
ncp_close(&conn);
|
||||||
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
written = 0;
|
written = 0;
|
||||||
@@ -299,17 +305,18 @@ main(int argc, char *argv[])
|
|||||||
|
|
||||||
if (ncp_close_file_and_start_job(&conn, q.object_id, &j) != 0) {
|
if (ncp_close_file_and_start_job(&conn, q.object_id, &j) != 0) {
|
||||||
printf("close error\n");
|
printf("close error\n");
|
||||||
|
ncp_close(&conn);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ncp_close(&conn);
|
ncp_close(&conn);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
usage(void)
|
usage(void)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "usage: %s [options] file\n", progname);
|
fprintf(stderr, "usage: %s [options] file\n", progname);
|
||||||
exit(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
|||||||
Reference in New Issue
Block a user