From: "Tom Demmer" Organization: Lehrstuhl Stroemungsmechanik, RUB To: Raul Mejia , djgpp AT delorie DOT com Date: Wed, 26 Nov 1997 09:14:07 GMT-1 Subject: Re: djgpp 2.0 and netware Reply-to: Demmer AT LStM DOT Ruhr-Uni-Bochum DOT De Message-ID: Precedence: bulk > Has somebody installed djgpp 2.0 in netware. I am a professor and I want to > use djgpp with netware. > > I have a big trouble: > > The cwsdpmi require a file for swaping. But in netware i can't use only one > file, I need a file for each computer connected to the server. How I can > use different files for the swapping processes. > > Please help me > > Swapping over the net is slow, so you shouldn't do that. Do swap to a local disk, if possible. If you have diskless clients, it's a bit trickier. You do need a free drive letter, access to login scripts, and supervisor rights (if you want to do this for _all_ users) Now, let's presume the drive is T:\ . 1) Edit cwsdpmi.exe with cwsparam and set the swapfile to T:\cwsdmpi.swp 2) Create a subdirectory on the server \\SERVER:SYS/swapfiles and give all users Read/Write/Create rights. This _is_ a security breach (I'm still thinking about that...) 3) In the system login script, add the line DOS SET MACHINE="%P_STATION" This sets an environment variable containing the MAC address of the ethernet card of this station. I once had a script to extract 8 letters from it, but I cannot find that. So let's do it in C... This is for Turbo-C: #include #include #include #include #include #include #include #include /* Where to put files */ #define BASEDIR "sys:swapfiles/" char tsName[128] = BASEDIR; /* Shrink executable */ extern unsigned _heaplen=2048, _stklen=1024; int main(int argc,char **argv){ char cmd[256]; char *s = getenv("MACHINE")+1; /* construct the directory name */ /* we use the rear parts to avoid clashes */ strncat(tsName,s+1,8); strcat(tsName,"."); s += 9; strncat(tsName,s,3); /* ** Create directory. This may fail if it ** exists, but don't care */ mkdir(tsName); /* Make syscommand */ sprintf(cmd,"map root t:=%s",tsName); return system(cmd)); } This ain't tested, so beware. Run this file in the login script after the DOS SET MACHINE line. And hope for the best. What you should get is a drive mapping T:\= sys/swapfiles/unique_mac_address_number/ By now I have an idea how to close the breach, but it is tedious: Run the above program on every client as SUPERVISOR. So you'll end up with a bunch of empty directories. In every directory, create an empty cwsdpmi.swp file. grant everybody for each file Read/Write/Access/Modify rights, but _no_ Create. So users can read/write the swapfile. Hmm. Can they delete it? Not sure about that. And I don't know if cwsdpmi really wants to create a new swapfile, or if it can live happily with just opening it. Oh yes, and please drop me a note if this really works. My ideas before the coffee break tend to have some gotchas... Ciao Tom ****************************************************************** * Thomas Demmer * Phone : +49 234 700 6434 * * Universitaetsstr. 150 * Fax : +49 234 709 4162 * * Lehrstuhl fuer Stroemungsmechanik * * * D-44780 Bochum * * ****************************************************************** * Email: demmer AT LStM DOT Ruhr-Uni-Bochum DOT De * * WWW: http://www.lstm.ruhr-uni-bochum.de/~demmer * ****************************************************************** Erotic (adj): using a feather as a sex aid. Kinky (adj) : using the whole duck.