home *** CD-ROM | disk | FTP | other *** search
- /***************************************************************************
- * dos.c: AmigaDOS and Requestor related functions.
- *
- * Part of...
- *
- * FREE: Display free space on your disk volumes.
- * Author: Daniel Jay Barrett, barrett@cs.jhu.edu.
- *
- * This program is Freely Distributable. Make all the copies you want
- * and give them away. Use this code in any way you like.
- ***************************************************************************/
-
-
- #include "free.h"
-
- /* Given a disk volume name, return how much space is on it. The units
- * of space are either bytes or blocks, depending on whether the user
- * specified the option OPT_BLOCKS or not. */
-
- long GetMem(char *volume)
- {
- long freeSpace;
- struct FileLock *lock;
-
- lock = NULL;
- if (lock = (struct FileLock *)Lock(volume, ACCESS_READ))
- {
- freeSpace = AvailSpace(lock);
- UnLock((BPTR)lock);
- }
- else
- freeSpace = NO_DRIVE;
- return(freeSpace);
- }
-
-
- /* This function comes from Tom Smythe's "avail()" function.
- * Given a lock on a disk, calculate how much space is left on the disk
- * and return that value. The value is in bytes, by default; but if the
- * user specified the option OPT_BLOCKS on the command-line, it's in
- * blocks. */
-
- long AvailSpace(struct FileLock *disk)
- {
- struct InfoData *info;
- long answer = 0L;
-
- info = AllocMem((long)sizeof(struct InfoData), MEMF_PUBLIC);
- Info((BPTR)disk, info);
- answer = (info->id_NumBlocks - info->id_NumBlocksUsed);
- if (!(flags & FLAG_BLOCKS))
- answer *= info->id_BytesPerBlock;
- FreeMem(info, (long)sizeof(struct InfoData));
- return(answer);
- }
-
-
- /* Return the amount of free RAM on the system, broken into CHIP and
- * FAST RAM. */
-
- void GetFreeRam(long *chip, long *fast)
- {
- (*chip) = (*fast) = 0L;
- Forbid();
- *chip = AvailMem(MEMF_CHIP);
- *fast = AvailMem(MEMF_FAST);
- Permit();
- }
-
-
- /* Turn off system requestors for this process. */
-
- void DisableRequestors(struct Process **proc, APTR *oldWindowPtr)
- {
- *proc = (struct Process *)FindTask(NULL);
- *oldWindowPtr = (*proc)->pr_WindowPtr;
- (*proc)->pr_WindowPtr = (APTR)(-1L);
- }
-
-
- /* Turn on system requestors for this process, after they have been
- * turned off by DisableRequestors(), above. */
-
- void EnableRequestors(struct Process *proc, APTR oldWindowPtr)
- {
- proc->pr_WindowPtr = oldWindowPtr;
- }
-
-
-