/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* |_o_o|\\ Copyright (c) 1987 The Software Distillery. All Rights Reserved */ /* |. o.| || This program may not be distributed without the permission of */ /* | . | || the authors: BBS: */ /* | o | || John Toebes Dave Baker */ /* | . |// */ /* ====== */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* Volume Manipulation */ /* ActCurentVol ActRenameDisk ActDiskInfo ActInfo */ #include "handler.h" void ActCurentVol(global, pkt) GLOBAL global; struct DosPacket *pkt; /* a pointer to the dos packet sent */ { BUG(("ActCurentVol\n")); pkt->dp_Res1 = MKBADDR(global->volume); } void ActRenameDisk(global, pkt) GLOBAL global; struct DosPacket *pkt; /* a pointer to the dos packet sent */ { char *name; BUG(("ActRenameDisk\n")); name = (char *)pkt->dp_Arg1; pkt->dp_Res1 = RenameDisk(global, name); } void ActDiskInfo(global, pkt) GLOBAL global; struct DosPacket *pkt; /* a pointer to the dos packet sent */ { struct InfoData *info; BUG(("ActDiskInfo\n")); info = (struct InfoData *)pkt->dp_Arg1; GetVolInfo(global, info); pkt->dp_Res1 = DOS_TRUE; } void ActInfo(global, pkt) GLOBAL global; struct DosPacket *pkt; /* a pointer to the dos packet sent */ { struct FileLock *lock; struct InfoData *info; BUG(("ActInfo\n")); lock = (struct FileLock *)pkt->dp_Arg1; info = (struct InfoData *)pkt->dp_Arg2; if (lock == NULL || lock->fl_Volume != MKBADDR(global->volume)) info->id_DiskType = global->diskstatus; else GetVolInfo(global, info); pkt->dp_Res1 = DOS_TRUE; } void GetVolInfo(global, info) GLOBAL global; register struct InfoData *info; { register struct DirBlock *block; if (global->volume == NULL) { info->id_DiskType = global->diskstatus; } else { /* get the block associated with the key */ block = (struct DirBlock*)GetBlock(global,global->Root); if (block == NULL) info->id_DiskType = global->diskstatus; else { /* Now copy over what they wanted */ info->id_NumSoftErrors = 0; /* what a lie... */ info->id_UnitNumber = global->unitnum; info->id_DiskState = global->diskstate; info->id_NumBlocks = ((global->dskenv.de_numblks)- (global->dskenv.de_reservedblks)); info->id_NumBlocksUsed = CountBlocks(global); info->id_DiskType = global->volume->dl_DiskType; info->id_VolumeNode = MKBADDR(global->volume); info->id_InUse = 0; } } }