home *** CD-ROM | disk | FTP | other *** search
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
- /* |_o_o|\\ Copyright (c) 1987, 1988 The Software Distillery. All Rights */
- /* |. o.| || Reserved. This program may not be distributed without the */
- /* | . | || permission of the authors: BBS: */
- /* | o | || John Toebes Doug Walker Dave Baker */
- /* | . |// */
- /* ====== */
- /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
-
- /* Lock.c - lock manipulation */
- /* RmtLock, RmtDupLock, RmtUnLock */
-
- /*-------------------------------------------------------------------------*/
- /* Structure of a Lock: */
- /* struct FileLock { */
- /* BPTR fl_Link; Next lock in the chain of device locks */
- /* LONG fl_Key; Block number of directory or file header */
- /* LONG fl_Access; Shared Read (-2) or Exclusive Write (-1) */
- /* struct MsgPort * fl_Task; Handler process for Lock (Us) */
- /* BPTR fl_Volume; Node in DevInfo structure for Lock */
- /* }; */
- /*-------------------------------------------------------------------------*/
- #include "server.h"
-
- void RmtLock(global, pkt)
- GLOBAL global;
- struct DosPacket *pkt;
- {
- BUG(("RmtLock: lock %lx\n", global->RP.Arg1));
- BUGBSTR("Locking filename = ", global->RP.Data);
-
- pkt->dp_Arg1 = global->RP.Arg1;
- MBSTR(global->RP.Data, global->fib);
- pkt->dp_Arg2 = (LONG)MKBADDR(global->fib);
- pkt->dp_Arg3 = global->RP.Arg3; /* Mode */
-
- Dispatch(global);
-
- global->RP.DLen = 0;
- }
-
- void RmtDupLock(global, pkt)
- GLOBAL global;
- struct DosPacket *pkt;
- {
- BUG(("RmtDupLock\n"));
- pkt->dp_Arg1 = global->RP.Arg1;
-
- Dispatch(global);
-
- global->RP.DLen = 0;
- }
-
- void RmtUnLock(global, pkt)
- GLOBAL global;
- struct DosPacket *pkt;
- {
- BUG(("RmtUnLock\n"));
- pkt->dp_Arg1 = global->RP.Arg1;
-
- Dispatch(global);
-
- global->RP.DLen = 0;
- }
-