Path: utzoo!attcan!uunet!cbmvax!jesup From: jesup@cbmvax.UUCP (Randell Jesup) Newsgroups: comp.sys.amiga.tech Subject: Re: Manx help Message-ID: <5171@cbmvax.UUCP> Date: 2 Nov 88 05:10:54 GMT References: <5918@killer.DALLAS.TX.US> <679@ardent.UUCP> <7517@well.UUCP> Reply-To: jesup@cbmvax.UUCP (Randell Jesup) Organization: Commodore Technology, West Chester, PA Lines: 52 In article <7517@well.UUCP> ewhac@well.UUCP (Leo 'Bols Ewhac' Schwab) writes: >In article <679@ardent.UUCP> rap@ardent.UUCP (Rob Peck) writes: >>main() >>{ >> /* CORRECT METHOD */ >> >> struct FileLock *testlock, *aarrgghh; >> testlock = Lock("RAM:",ACCESS_READ); >> aarrgghh = CurrentDir(testlock); >> >> /* aarrgghh is a pointer to the lock on the >> * directory that the CLI started from... >> * it may still need that lock sometime later. >> * If we free it by UnLock, we mess things up. >> */ >> >> UnLock(testlock); >> /* Did nothing more than move current CLI's >> * current directory to ram: >> */ >>} > It strikes me that, if you UnLock() the lock you handed to >CurrentDir() (and therefore the system), you'll pull the rug out from under >the CLI's feet when it tries to access that lock. You're right, Leo: the above code is wrong. If that last UnLock line read: UnLock(CurrentDir(aarrgghh)), it would be correct. Note that all programs run from WB currently must restore the original lock via CurrentDir before exiting (I think some compiler startups may do this for you.) > I thought, as another Net person said (name forgotten; sorry), that >CurrentDir() trades locks with you. You hand CurrentDir() a lock on the >directory you want to go to. CurrentDir() takes it away from you, and >gives you posession of a lock on the directory you used to be in. This is >how I do it in Onion, and I haven't had any problems yet. You have it exactly right (though PLEASE use CurrentDir(), don't just trade them yourselves, for future compatiblity. > What is the final story? Naturally, the DOS docs obfuscate this >point. The DOS docs (amigados users, tech ref, and programmers manuals) should be read 15 times apiece, left under your pillow so you can absorb them by osmosis, read 5 more times, and consantly referred to. :-) >Leo L. Schwab -- The Guy in The Cape INET: well!ewhac@ucbvax.Berkeley.EDU -- You've heard of CATS? Well, I'm a member of DOGS: Developers Of Great Software. Randell Jesup, Commodore Engineering {uunet|rutgers|allegra}!cbmvax!jesup