summaryrefslogtreecommitdiff
path: root/src/drive.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/drive.cpp')
-rw-r--r--src/drive.cpp137
1 files changed, 0 insertions, 137 deletions
diff --git a/src/drive.cpp b/src/drive.cpp
deleted file mode 100644
index f485cf6..0000000
--- a/src/drive.cpp
+++ /dev/null
@@ -1,137 +0,0 @@
-//
-// AUTHOR
-// N. Nielsen
-//
-// VERSION
-// 0.7
-//
-// LICENSE
-// This software is in the public domain.
-//
-// The software is provided "as is", without warranty of any kind,
-// express or implied, including but not limited to the warranties
-// of merchantability, fitness for a particular purpose, and
-// noninfringement. In no event shall the author(s) be liable for any
-// claim, damages, or other liability, whether in an action of
-// contract, tort, or otherwise, arising from, out of, or in connection
-// with the software or the use or other dealings in the software.
-//
-// SUPPORT
-// Send bug reports to: <nielsen@memberwebs.com>
-//
-
-
-#include "drive.h"
-#include "memref.h"
-#include <malloc.h>
-#include <string.h>
-#include <stdio.h>
-
-
-PartitionInfo* CreatePartitionInfo()
-{
- PartitionInfo* pInfo = (PartitionInfo*)refalloc(sizeof(PartitionInfo));
- if(pInfo)
- memset(pInfo, 0, sizeof(PartitionInfo));
-
- return pInfo;
-}
-
-void FreePartitionInfo(PartitionInfo* pInfo)
-{
- if(pInfo)
- {
- if(pInfo->pLocks)
- free(pInfo->pLocks);
-
- refrelease(pInfo);
- }
-}
-
-// These locks are used to signify which
-struct DriveLock
-{
- uint64 beg;
- uint64 end;
-};
-
-
-bool IntersectRange(uint64& b1, uint64& e1, uint64 b2, uint64 e2)
-{
- // TODO: (later) This is stupid! There's a simple quick way
- // need to update
-
- if(b1 <= b2 && e1 > b2 && b1 < e2) // Overlaps the first portion
- e1 = e2;
- else if(b1 < e2 && e1 >= e2 && b2 < e1) // Overlaps second portion
- b1 = b2;
- else if(b1 > b2 && e1 < e2) // Encompassed
- { }
- else if (b1 == b2 && e1 == e2) // Identical
- { }
- else
- return false;
-
- return true;
-}
-
-void AddLocationLock(PartitionInfo* pInfo, uint64 beg, uint64 end)
-{
- if(pInfo->cLocks <= pInfo->curLock)
- {
- pInfo->cLocks += 0x400;
- pInfo->pLocks = (DriveLock*)realloc(pInfo->pLocks, sizeof(DriveLock) * pInfo->cLocks);
- }
-
- // TODO: Implement a more efficient method here!
-
- if(pInfo->pLocks)
- {
- bool bFound = false;
-
- // Go through and check for a current lock we can tag onto
- for(uint32 i = 0; i < pInfo->curLock; i++)
- {
- if(IntersectRange(pInfo->pLocks[i].beg, pInfo->pLocks[i].end,
- beg, end))
- {
- bFound = true;
- }
- }
-
- if(!bFound)
- {
- pInfo->pLocks[pInfo->curLock].beg = beg;
- pInfo->pLocks[pInfo->curLock].end = end;
- pInfo->curLock++;
- }
- }
-}
-
-bool CheckLocationLock(PartitionInfo* pInfo, uint64& sec)
-{
- // Go through and check for a lock
- for(uint32 i = 0; i < pInfo->curLock; i++)
- {
- if(sec >= pInfo->pLocks[i].beg &&
- sec < pInfo->pLocks[i].end)
- {
- sec = pInfo->pLocks[i].end;
- return true;
- }
- }
-
- return false;
-}
-
-#ifdef _DEBUG
-void DumpLocationLocks(PartitionInfo* pInfo)
-{
- for(uint32 i = 0; i < pInfo->curLock; i++)
- {
- printf("%u\t%u\n", (uint32)pInfo->pLocks[i].beg, (uint32)pInfo->pLocks[i].end);
- }
-
- printf("\n");
-}
-#endif