#include #include #include #include struct REGPACK regs; void Connect (char *devname, char *netname); void main() { int tries=0; printf ("\n\nNetwork entry for David Woodhouse. (C) 1992\n"); printf ("Fixed 21/2/92.\n"); while (tries++<3 && stricmp(getpass("This grants access to my own directories. Type password:"),"WOODY")) { printf ("Sorry - Access Denied. Try again.\n\n"); } if (tries==3) __emit__(0xea,0x00,0x00,0xff,0xff); /* boot */ Connect ("N:","\\\\SERVERA\\49133088""\0""43201990"); Connect ("P:","\\\\SERVERA\\PUBLIC""\0""OBLONGAT"); Connect ("Q:","\\\\SERVERA\\PUBX\0"); Connect ("R:","\\\\SERVERA\\38609157""\0""34705118"); Connect ("Z:","\\\\SERVERZ\\PUBLIC""\0""OBLONGAT"); Connect ("LPT1","\\\\SERVERA\\LQ850\0"); Connect ("LPT2","\\\\SERVERJ\\LQ850\0"); Connect ("LPT3","\\\\SERVERZ\\PSTSCR\0"); while (execl ("A:\\COMMAND.COM", "", "/p", NULL)==-1) { printf ("\007Error - A:\\COMMAND.COM not found. Insert disk and press a key.\n\n"); getch(); } } void Connect (char *devname, char *netname) { regs.r_bx=(devname[1]==':')?4:3; /* set printer/drive flag in BL */ regs.r_cx=3; /* arbitrary parameter - why not 3? */ regs.r_ax=0x5f03; regs.r_ds=FP_SEG(devname); regs.r_si=(unsigned)devname; regs.r_es=FP_SEG(netname); regs.r_di=(unsigned)netname; intr (0x21, ®s); if (regs.r_flags&1) { /* carry set - error */ printf (" Error connecting %s to %s\n",devname, netname); switch (regs.r_ax) { case 0x35: printf ("Network path not found.\n"); break; case 0x56: printf ("Access denied.\n"); break; case 0x55: if (devname[1]==':') printf ("Drive"); else printf ("Device"); printf (" in use.\n"); break; default: printf ("No. %.2X",regs.r_ax); } } else { if (regs.r_bx==3) printf ("Device"); else printf ("Drive"); printf (" %s connected to %s\n",devname,netname); } }