mars_nwe-0.98.pl10
This commit is contained in:
parent
178789c7e4
commit
3b6ddaabdf
@ -286,4 +286,9 @@ Erste 'oeffentliche' Version
|
|||||||
nach Tests von Arne de Bruijn Probleme mit Netx beseitigt sein.
|
nach Tests von Arne de Bruijn Probleme mit Netx beseitigt sein.
|
||||||
- Section 13 erweitert um 'fixed passwords'.
|
- Section 13 erweitert um 'fixed passwords'.
|
||||||
<----- ^^^^^^^^^^ pl9 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
<----- ^^^^^^^^^^ pl9 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
- neue Routine 0x17,0x1a (Get Connection Internet Address, new)
|
||||||
|
von Arne de Bruijn eingebaut.
|
||||||
|
- Result code von nw_lock_file() korrigiert (0x21 -> 0xfd).
|
||||||
|
( MS-Access meckerte unter Win3.xx fehlendes SHARE.EXE an )
|
||||||
|
<----- ^^^^^^^^^^ pl10 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
Begin3
|
Begin3
|
||||||
Title: mars_nwe
|
Title: mars_nwe
|
||||||
Version: 0.98.pl9
|
Version: 0.98.pl10
|
||||||
Entered-date: 18-Apr-97
|
Entered-date: 24-Apr-97
|
||||||
Description: Full netware-emulator (src), beta.
|
Description: Full netware-emulator (src), beta.
|
||||||
Supports file-services, bindery-services,
|
Supports file-services, bindery-services,
|
||||||
printing-services, routing-services.
|
printing-services, routing-services.
|
||||||
@ -9,7 +9,7 @@ Keywords: novell, netware, server, ipx, ncp, tli
|
|||||||
Author: mstover@stover.f.eunet.de (Martin Stover)
|
Author: mstover@stover.f.eunet.de (Martin Stover)
|
||||||
Maintained-by: mstover@stover.f.eunet.de (Martin Stover)
|
Maintained-by: mstover@stover.f.eunet.de (Martin Stover)
|
||||||
Primary-site: ftp.gwdg.de:/pub/linux/misc/ncpfs
|
Primary-site: ftp.gwdg.de:/pub/linux/misc/ncpfs
|
||||||
200kB mars_nwe-0.98.pl9.tgz
|
200kB mars_nwe-0.98.pl10.tgz
|
||||||
Alternate-site: sunsite.unc.edu:/pub/Linux/system/filesystems/ncpfs
|
Alternate-site: sunsite.unc.edu:/pub/Linux/system/filesystems/ncpfs
|
||||||
Platforms: Linux (1.2.xx, 1.3.xx, 2.xx), UnixWare (2.xx)
|
Platforms: Linux (1.2.xx, 1.3.xx, 2.xx), UnixWare (2.xx)
|
||||||
Copying-policy: GNU
|
Copying-policy: GNU
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
#if 0
|
#if 0
|
||||||
#makefile.unx 09-Jan-97
|
#makefile.unx 18-Apr-97
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VPATH=$(V_VPATH)
|
VPATH=$(V_VPATH)
|
||||||
@ -9,7 +9,7 @@ C=.c
|
|||||||
|
|
||||||
V_H=0
|
V_H=0
|
||||||
V_L=98
|
V_L=98
|
||||||
P_L=9
|
P_L=10
|
||||||
|
|
||||||
#define D_P_L 1
|
#define D_P_L 1
|
||||||
DISTRIB=mars_nwe
|
DISTRIB=mars_nwe
|
||||||
|
48
nwbind.c
48
nwbind.c
@ -1,5 +1,5 @@
|
|||||||
/* nwbind.c */
|
/* nwbind.c */
|
||||||
#define REVISION_DATE "17-Apr-97"
|
#define REVISION_DATE "20-Apr-97"
|
||||||
/* NCP Bindery SUB-SERVER */
|
/* NCP Bindery SUB-SERVER */
|
||||||
/* authentification and some message handling */
|
/* authentification and some message handling */
|
||||||
|
|
||||||
@ -434,13 +434,20 @@ static void handle_fxx(int gelen, int func)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x13 : { /* Get Connection Internet Address */
|
case 0x13 : /* Get Connection Internet Address, old */
|
||||||
int conn = (int)*(rdata); /* Connection Nr */
|
case 0x1a : { /* Get Connection Internet Address, new */
|
||||||
|
int conn = (ufunc == 0x13)
|
||||||
|
? (int) *rdata
|
||||||
|
: GET_32(rdata);
|
||||||
if (conn && --conn < MAX_CONNECTIONS
|
if (conn && --conn < MAX_CONNECTIONS
|
||||||
&& connections[conn].active ) {
|
&& connections[conn].active ) {
|
||||||
CONNECTION *cx=&(connections[conn]);
|
CONNECTION *cx=&(connections[conn]);
|
||||||
data_len = sizeof(ipxAddr_t);
|
data_len = sizeof(ipxAddr_t);
|
||||||
memcpy(responsedata, (char*)&(cx->client_adr), data_len);
|
memcpy(responsedata, (char*)&(cx->client_adr), data_len);
|
||||||
|
if (ufunc==0x1a) {
|
||||||
|
*(responsedata+data_len)=0x02; /* NCP connection */
|
||||||
|
data_len++;
|
||||||
|
}
|
||||||
} else completition = 0xff;
|
} else completition = 0xff;
|
||||||
} break;
|
} break;
|
||||||
|
|
||||||
@ -511,7 +518,8 @@ static void handle_fxx(int gelen, int func)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x16 : { /* Get Connection Info, OLD */
|
case 0x16 : /* Get Connection Info, old */
|
||||||
|
case 0x1c : { /* Get Connection Info, new */
|
||||||
struct XDATA {
|
struct XDATA {
|
||||||
uint8 object_id[4];
|
uint8 object_id[4];
|
||||||
uint8 object_type[2];
|
uint8 object_type[2];
|
||||||
@ -519,7 +527,10 @@ static void handle_fxx(int gelen, int func)
|
|||||||
uint8 login_time[7];
|
uint8 login_time[7];
|
||||||
uint8 reserved;
|
uint8 reserved;
|
||||||
} *xdata = (struct XDATA*) responsedata;
|
} *xdata = (struct XDATA*) responsedata;
|
||||||
int conn = (uint16)*(rdata); /* Connection Nr */
|
int conn = (ufunc == 0x16)
|
||||||
|
? (int) *rdata
|
||||||
|
: GET_32(rdata);
|
||||||
|
|
||||||
memset(xdata, 0, sizeof(struct XDATA));
|
memset(xdata, 0, sizeof(struct XDATA));
|
||||||
data_len = sizeof(struct XDATA);
|
data_len = sizeof(struct XDATA);
|
||||||
if (conn && conn <= MAX_CONNECTIONS
|
if (conn && conn <= MAX_CONNECTIONS
|
||||||
@ -589,33 +600,6 @@ static void handle_fxx(int gelen, int func)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 0x1c : { /* Get Connection Info, new */
|
|
||||||
struct XDATA {
|
|
||||||
uint8 object_id[4];
|
|
||||||
uint8 object_type[2];
|
|
||||||
uint8 object_name[48];
|
|
||||||
uint8 login_time[7];
|
|
||||||
uint8 reserved;
|
|
||||||
} *xdata = (struct XDATA*) responsedata;
|
|
||||||
int conn = (uint16)*(rdata); /* Connection Nr */
|
|
||||||
if (conn && --conn < MAX_CONNECTIONS){
|
|
||||||
CONNECTION *cx=&(connections[conn]);
|
|
||||||
NETOBJ obj;
|
|
||||||
int result;
|
|
||||||
obj.id = cx->object_id;
|
|
||||||
result = nw_get_obj(&obj);
|
|
||||||
if (!result) {
|
|
||||||
memset(xdata, 0, sizeof(struct XDATA));
|
|
||||||
U32_TO_BE32(obj.id, xdata->object_id);
|
|
||||||
U16_TO_BE16(obj.type, xdata->object_type);
|
|
||||||
strncpy(xdata->object_name, obj.name, 48);
|
|
||||||
get_login_time(xdata->login_time, cx);
|
|
||||||
data_len = sizeof(struct XDATA);
|
|
||||||
} else completition = (uint8)(-result);
|
|
||||||
} else completition = 0xff;
|
|
||||||
} break;
|
|
||||||
|
|
||||||
|
|
||||||
case 0x32 : { /* Create Bindery Object */
|
case 0x32 : { /* Create Bindery Object */
|
||||||
NETOBJ obj;
|
NETOBJ obj;
|
||||||
int result;
|
int result;
|
||||||
|
41
nwconn.c
41
nwconn.c
@ -883,7 +883,7 @@ static int handle_ncp_serv(void)
|
|||||||
int fhandle = GET_32 (input->fhandle);
|
int fhandle = GET_32 (input->fhandle);
|
||||||
int offset = GET_BE32(input->offset);
|
int offset = GET_BE32(input->offset);
|
||||||
int size = GET_BE32(input->size);
|
int size = GET_BE32(input->size);
|
||||||
completition = (uint8)(-nw_lock_datei(fhandle,
|
completition = (uint8)(-nw_lock_file(fhandle,
|
||||||
offset, size,
|
offset, size,
|
||||||
(int)(function == 0x1a)));
|
(int)(function == 0x1a)));
|
||||||
}
|
}
|
||||||
@ -1073,6 +1073,24 @@ static int handle_ncp_serv(void)
|
|||||||
} *input = (struct INPUT *)ncprequest;
|
} *input = (struct INPUT *)ncprequest;
|
||||||
uint32 fhandle = GET_32(input->fhandle);
|
uint32 fhandle = GET_32(input->fhandle);
|
||||||
completition = (uint8)(-nw_close_file(fhandle, 0));
|
completition = (uint8)(-nw_close_file(fhandle, 0));
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#ifdef SIOCIPXNCPCONN
|
||||||
|
{
|
||||||
|
struct {
|
||||||
|
int fh;
|
||||||
|
int fd;
|
||||||
|
int mode;
|
||||||
|
} ncp_1;
|
||||||
|
ncp_1.fh = 0;
|
||||||
|
ncp_1.fd = -1;
|
||||||
|
ncp_1.mode = 0;
|
||||||
|
ioctl(0, SIOCIPXNCPCONN+1, &ncp_1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if TEST_FNAME
|
#if TEST_FNAME
|
||||||
if (!completition && fhandle == test_handle) {
|
if (!completition && fhandle == test_handle) {
|
||||||
do_druck++;
|
do_druck++;
|
||||||
@ -1233,6 +1251,21 @@ static int handle_ncp_serv(void)
|
|||||||
if (size > -1) {
|
if (size > -1) {
|
||||||
U16_TO_BE16(size, xdata->size);
|
U16_TO_BE16(size, xdata->size);
|
||||||
data_len=size+zusatz+2;
|
data_len=size+zusatz+2;
|
||||||
|
#if 0
|
||||||
|
#ifdef SIOCIPXNCPCONN
|
||||||
|
{
|
||||||
|
struct {
|
||||||
|
int fh;
|
||||||
|
int fd;
|
||||||
|
int mode;
|
||||||
|
} ncp_1;
|
||||||
|
ncp_1.fh = fhandle;
|
||||||
|
ncp_1.fd = get_nwfd(fhandle);
|
||||||
|
ncp_1.mode = 0;
|
||||||
|
ioctl(0, SIOCIPXNCPCONN+1, &ncp_1);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
} else completition = (uint8) -size;
|
} else completition = (uint8) -size;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1679,7 +1712,7 @@ static void set_sig(void)
|
|||||||
signal(SIGBUS, sig_bus_mmap); /* in nwfile.c */
|
signal(SIGBUS, sig_bus_mmap); /* in nwfile.c */
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
#include <sys/resource.h>
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
if (argc != 6) {
|
if (argc != 6) {
|
||||||
@ -1740,7 +1773,9 @@ int main(int argc, char **argv)
|
|||||||
set_sig();
|
set_sig();
|
||||||
|
|
||||||
while (fl_get_int >= 0) {
|
while (fl_get_int >= 0) {
|
||||||
int data_len = read(0, readbuff, sizeof(readbuff));
|
int data_len ;
|
||||||
|
/* setpriority(PRIO_PROCESS, 0, 0); */
|
||||||
|
data_len = read(0, readbuff, sizeof(readbuff));
|
||||||
/* this read is a pipe or a socket read,
|
/* this read is a pipe or a socket read,
|
||||||
* depending on CALL_NWCONN_OVER_SOCKET
|
* depending on CALL_NWCONN_OVER_SOCKET
|
||||||
*/
|
*/
|
||||||
|
47
nwfile.c
47
nwfile.c
@ -1,4 +1,4 @@
|
|||||||
/* nwfile.c 14-Jan-97 */
|
/* nwfile.c 23-Apr-97 */
|
||||||
/* (C)opyright (C) 1993,1996 Martin Stover, Marburg, Germany
|
/* (C)opyright (C) 1993,1996 Martin Stover, Marburg, Germany
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or modify
|
* This program is free software; you can redistribute it and/or modify
|
||||||
@ -723,21 +723,17 @@ int nw_server_copy(int qfhandle, uint32 qoffset,
|
|||||||
return(-0x88); /* wrong filehandle */
|
return(-0x88); /* wrong filehandle */
|
||||||
}
|
}
|
||||||
|
|
||||||
int nw_lock_datei(int fhandle, int offset, int size, int do_lock)
|
int nw_lock_file(int fhandle, int offset, int size, int do_lock)
|
||||||
{
|
{
|
||||||
MDEBUG(D_FH_LOCK, {
|
int result=-0x88; /* wrong filehandle */
|
||||||
char fname[200];
|
if (fhandle > HOFFS && (fhandle <= anz_fhandles)) {
|
||||||
int r=fd_2_fname(fhandle, fname, sizeof(fname));
|
FILE_HANDLE *fh=&(file_handles[fhandle-1]);
|
||||||
dprintf("nw_%s_datei: fd=%d, fn=`%s`,r=%d,offs=%d,len=%d",
|
|
||||||
(do_lock) ? "lock" : "unlock",
|
|
||||||
fhandle, fname,r,offset, size);
|
|
||||||
})
|
|
||||||
if (fhandle > HOFFS && (--fhandle < anz_fhandles)) {
|
|
||||||
FILE_HANDLE *fh=&(file_handles[fhandle]);
|
|
||||||
if (fh->fd > -1) {
|
if (fh->fd > -1) {
|
||||||
struct flock flockd;
|
struct flock flockd;
|
||||||
int result;
|
if (fh->fh_flags & FH_IS_PIPE) {
|
||||||
if (fh->fh_flags & FH_IS_PIPE) return(0);
|
result=0;
|
||||||
|
goto leave;
|
||||||
|
}
|
||||||
flockd.l_type = (do_lock)
|
flockd.l_type = (do_lock)
|
||||||
? ((fh->fh_flags & FH_OPENED_RO) ? F_RDLCK
|
? ((fh->fh_flags & FH_OPENED_RO) ? F_RDLCK
|
||||||
: F_WRLCK)
|
: F_WRLCK)
|
||||||
@ -756,11 +752,20 @@ int nw_lock_datei(int fhandle, int offset, int size, int do_lock)
|
|||||||
result = fcntl(fh->fd, F_SETLK, &flockd);
|
result = fcntl(fh->fd, F_SETLK, &flockd);
|
||||||
XDPRINTF((2, 0, "nw_%s_datei result=%d, fh=%d, offset=%d, size=%d",
|
XDPRINTF((2, 0, "nw_%s_datei result=%d, fh=%d, offset=%d, size=%d",
|
||||||
(do_lock) ? "lock" : "unlock", result, fhandle, offset, size));
|
(do_lock) ? "lock" : "unlock", result, fhandle, offset, size));
|
||||||
if (!result) return(0);
|
if (result)
|
||||||
else return(-0x21); /* LOCK Violation */
|
result= (do_lock) ? -0xfd : -0xff;
|
||||||
} else if (fh->fd == -3) return(0);
|
} else if (fh->fd == -3) result=0;
|
||||||
}
|
}
|
||||||
return(-0x88); /* wrong filehandle */
|
leave:
|
||||||
|
MDEBUG(D_FH_LOCK, {
|
||||||
|
char fname[200];
|
||||||
|
(void)fd_2_fname(fhandle, fname, sizeof(fname));
|
||||||
|
dprintf("nw_%s_datei: fd=%d, fn=`%s`,r=0x%x, offs=%d, len=%d",
|
||||||
|
(do_lock) ? "lock" : "unlock",
|
||||||
|
fhandle, fname, -result, offset, size);
|
||||||
|
})
|
||||||
|
|
||||||
|
return(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
int fd_2_fname(int fhandle, char *buf, int bufsize)
|
int fd_2_fname(int fhandle, char *buf, int bufsize)
|
||||||
@ -782,5 +787,13 @@ FILE_HANDLE *fd_2_fh(int fhandle)
|
|||||||
return(NULL);
|
return(NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int get_nwfd(int fhandle)
|
||||||
|
{
|
||||||
|
if (fhandle > HOFFS && (--fhandle < anz_fhandles)) {
|
||||||
|
FILE_HANDLE *fh=&(file_handles[fhandle]);
|
||||||
|
return(fh ? fh->fd : -1);
|
||||||
|
}
|
||||||
|
return(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
5
nwfile.h
5
nwfile.h
@ -1,4 +1,4 @@
|
|||||||
/* nwfile.h 19-Oct-96 */
|
/* nwfile.h 23-Apr-97 */
|
||||||
#ifndef _NWFILE_H_
|
#ifndef _NWFILE_H_
|
||||||
#define _NWFILE_H_
|
#define _NWFILE_H_
|
||||||
#include "nwqueue.h"
|
#include "nwqueue.h"
|
||||||
@ -49,9 +49,10 @@ extern int nw_server_copy(int qfhandle, uint32 qoffset,
|
|||||||
int zfhandle, uint32 zoffset,
|
int zfhandle, uint32 zoffset,
|
||||||
uint32 size);
|
uint32 size);
|
||||||
|
|
||||||
extern int nw_lock_datei(int fhandle, int offset, int size, int do_lock);
|
extern int nw_lock_file(int fhandle, int offset, int size, int do_lock);
|
||||||
|
|
||||||
extern int fd_2_fname(int fhandle, char *buf, int bufsize);
|
extern int fd_2_fname(int fhandle, char *buf, int bufsize);
|
||||||
extern FILE_HANDLE *fd_2_fh(int fhandle);
|
extern FILE_HANDLE *fd_2_fh(int fhandle);
|
||||||
|
extern int get_nwfd(int fhandle);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
2
tools.c
2
tools.c
@ -101,7 +101,7 @@ void dprintf(char *p, ...)
|
|||||||
{
|
{
|
||||||
va_list ap;
|
va_list ap;
|
||||||
if (nw_debug){
|
if (nw_debug){
|
||||||
fprintf(logfile, "%-8s:", get_modstr());
|
fprintf(logfile, "%-8s %d:", get_modstr(), connection);
|
||||||
va_start(ap, p);
|
va_start(ap, p);
|
||||||
vfprintf(logfile, p, ap);
|
vfprintf(logfile, p, ap);
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
|
Loading…
Reference in New Issue
Block a user