map via redir

This commit is contained in:
Mario Fetka
2026-05-22 13:40:30 +02:00
parent 0ea11f7f5d
commit b40ec03e7d
2 changed files with 39 additions and 44 deletions

View File

@@ -54,47 +54,24 @@ int redir_device_drive(int devicetyp, uint8 *devname, uint8 *remotename)
{
REGS regs;
SREGS sregs;
int result;
uint8 buff1[16];
uint8 buff2[128];
uint8 *ldevname = buff1;
uint8 *lremotename = buff2;
memset(&regs, 0, sizeof(regs));
memset(&sregs, 0, sizeof(sregs));
memset(buff1, 0, sizeof(buff1));
memset(buff2, 0, sizeof(buff2));
strmaxcpy(ldevname, devname, sizeof(buff1) - 1);
strncpy(ldevname, devname, 16);
regs.x.ax = (devicetyp == -1) ? 0x5f04 : 0x5f03;
regs.h.bl = (uint8)devicetyp;
regs.x.cx = 0x574e; /* user sign 'NW' */
sregs.ds = FP_SEG(ldevname);
regs.x.si = FP_OFF(ldevname);
if (devicetyp > -1) {
strmaxcpy(lremotename, remotename, sizeof(buff2) - 1);
strncpy(lremotename, remotename, 128);
sregs.es = FP_SEG(lremotename);
regs.x.di = FP_OFF(lremotename);
}
#if defined(__WATCOMC__)
fprintf(stderr,
"REDIR in: ax=%04x bx=%04x cx=%04x ds:si=%04x:%04x es:di=%04x:%04x dev='%s' remote='%s'\n",
regs.x.ax, regs.x.bx, regs.x.cx,
sregs.ds, regs.x.si, sregs.es, regs.x.di,
ldevname, devicetyp > -1 ? lremotename : "");
#endif
intdosx(&regs, &regs, &sregs);
#if defined(__WATCOMC__)
fprintf(stderr,
"REDIR out: cf=%u ax=%04x bx=%04x cx=%04x dx=%04x\n",
regs.x.cflag, regs.x.ax, regs.x.bx, regs.x.cx, regs.x.dx);
#endif
return(regs.x.cflag ? -(int)regs.x.ax : 0);
result = intdosx(&regs, &regs, &sregs);
return(regs.x.cflag ? -result : 0);
}
int list_redir(int index, int *devicetyp, uint8 *devname, uint8 *remotename)
@@ -264,7 +241,6 @@ int alloc_dir_handle(int func,
printf("alloc_dir_handle, path=%s, len=%d, disk=%c\n", path, pathlen, driveletter);
*/
neterrno = Net_Call(0xE200, &req, &repl);
fprintf(stderr, "neterrno=%d\n", neterrno);
if (neterrno && neterrno != 0xff) return(-1);
if (effrights) *effrights = repl.effrights;