summaryrefslogtreecommitdiffstats
path: root/src/audio/sampman_oal.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/audio/sampman_oal.cpp')
-rw-r--r--src/audio/sampman_oal.cpp156
1 files changed, 54 insertions, 102 deletions
diff --git a/src/audio/sampman_oal.cpp b/src/audio/sampman_oal.cpp
index 3cd7a736..60d26b7d 100644
--- a/src/audio/sampman_oal.cpp
+++ b/src/audio/sampman_oal.cpp
@@ -430,7 +430,7 @@ int8 cSampleManager::SetCurrent3DProvider(uint8 nProvider)
{
int savedprovider = curprovider;
- nProvider = clamp(nProvider, 0, m_nNumberOfProviders - 1);
+ nProvider = Clamp(nProvider, 0, m_nNumberOfProviders - 1);
if ( set_new_provider(nProvider) )
return curprovider;
@@ -553,18 +553,32 @@ _FindMP3s(void)
bool8 bInitFirstEntry;
HANDLE hFind;
char path[MAX_PATH];
- char filepath[MAX_PATH*2];
int total_ms;
WIN32_FIND_DATA fd;
+ char filepath[MAX_PATH + sizeof(fd.cFileName)];
if (getcwd(_mp3DirectoryPath, MAX_PATH) == NULL) {
perror("getcwd: ");
return;
}
+
+ if (strlen(_mp3DirectoryPath) + 1 > MAX_PATH - 10) {
+ // This is not gonna end well
+ printf("MP3 folder path is too long, no place left for file names. MP3 finding aborted.\n");
+ return;
+ }
OutputDebugString("Finding MP3s...");
strcpy(path, _mp3DirectoryPath);
strcat(path, "\\MP3\\");
+
+#if !defined(_WIN32)
+ char *actualPath = casepath(path);
+ if (actualPath) {
+ strcpy(path, actualPath);
+ free(actualPath);
+ }
+#endif
strcpy(_mp3DirectoryPath, path);
OutputDebugString(_mp3DirectoryPath);
@@ -577,92 +591,32 @@ _FindMP3s(void)
{
return;
}
-
- strcpy(filepath, _mp3DirectoryPath);
- strcat(filepath, fd.cFileName);
-
- size_t filepathlen = strlen(filepath);
-
- if ( filepathlen <= 0)
- {
- FindClose(hFind);
- return;
- }
- if ( _ResolveLink(filepath, filepath) )
- {
- OutputDebugString("Resolving Link");
- OutputDebugString(filepath);
- bShortcut = TRUE;
- } else
- bShortcut = FALSE;
-
- if (aStream[0] && aStream[0]->Open(filepath))
- {
- total_ms = aStream[0]->GetLengthMS();
- aStream[0]->Close();
+ bShortcut = FALSE;
+ bInitFirstEntry = TRUE;
- OutputDebugString(fd.cFileName);
-
- _pMP3List = new tMP3Entry;
-
- if ( _pMP3List == NULL )
- {
- FindClose(hFind);
- return;
- }
-
- nNumMP3s = 1;
-
- strcpy(_pMP3List->aFilename, fd.cFileName);
-
- _pMP3List->nTrackLength = total_ms;
-
- _pMP3List->pNext = NULL;
-
- pList = _pMP3List;
-
- if ( bShortcut )
- {
- _pMP3List->pLinkPath = new char[MAX_PATH*2];
- strcpy(_pMP3List->pLinkPath, filepath);
- }
- else
- {
- _pMP3List->pLinkPath = NULL;
- }
+ do
+ {
+ strcpy(filepath, _mp3DirectoryPath);
+ strcat(filepath, fd.cFileName);
+
+ if (!strcmp(fd.cFileName, ".") || !strcmp(fd.cFileName, ".."))
+ continue;
- bInitFirstEntry = FALSE;
- }
- else
- {
- strcat(filepath, " - NOT A VALID MP3");
-
- OutputDebugString(filepath);
+ size_t filepathlen = strlen(filepath);
- bInitFirstEntry = TRUE;
- }
-
- while ( TRUE )
- {
- if ( !FindNextFile(hFind, &fd) )
- break;
-
if ( bInitFirstEntry )
{
- strcpy(filepath, _mp3DirectoryPath);
- strcat(filepath, fd.cFileName);
-
- size_t filepathlen = strlen(filepath);
-
- if ( filepathlen > 0 )
+ if (filepathlen > 0)
{
- if ( _ResolveLink(filepath, filepath) )
+ if (_ResolveLink(filepath, filepath))
{
OutputDebugString("Resolving Link");
OutputDebugString(filepath);
bShortcut = TRUE;
- } else {
+ }
+ else
+ {
bShortcut = FALSE;
if (filepathlen > MAX_PATH) {
continue;
@@ -674,29 +628,29 @@ _FindMP3s(void)
aStream[0]->Close();
OutputDebugString(fd.cFileName);
-
+
_pMP3List = new tMP3Entry;
-
- if ( _pMP3List == NULL)
+
+ if (_pMP3List == NULL)
break;
-
+
nNumMP3s = 1;
-
+
strcpy(_pMP3List->aFilename, fd.cFileName);
-
+
_pMP3List->nTrackLength = total_ms;
_pMP3List->pNext = NULL;
-
- if ( bShortcut )
+
+ if (bShortcut)
{
- _pMP3List->pLinkPath = new char [MAX_PATH*2];
+ _pMP3List->pLinkPath = new char[MAX_PATH + sizeof(fd.cFileName)];
strcpy(_pMP3List->pLinkPath, filepath);
}
else
{
_pMP3List->pLinkPath = NULL;
}
-
+
pList = _pMP3List;
bInitFirstEntry = FALSE;
@@ -707,14 +661,11 @@ _FindMP3s(void)
OutputDebugString(filepath);
}
}
+ else
+ break;
}
else
{
- strcpy(filepath, _mp3DirectoryPath);
- strcat(filepath, fd.cFileName);
-
- size_t filepathlen = strlen(filepath);
-
if ( filepathlen > 0 )
{
if ( _ResolveLink(filepath, filepath) )
@@ -722,7 +673,8 @@ _FindMP3s(void)
OutputDebugString("Resolving Link");
OutputDebugString(filepath);
bShortcut = TRUE;
- } else
+ }
+ else
bShortcut = FALSE;
if (aStream[0] && aStream[0]->Open(filepath))
@@ -747,7 +699,7 @@ _FindMP3s(void)
if ( bShortcut )
{
- e->pLinkPath = new char [MAX_PATH*2];
+ e->pLinkPath = new char [MAX_PATH + sizeof(fd.cFileName)];
strcpy(e->pLinkPath, filepath);
}
else
@@ -766,7 +718,7 @@ _FindMP3s(void)
}
}
}
- }
+ } while (FindNextFile(hFind, &fd));
FindClose(hFind);
}
@@ -1386,14 +1338,14 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment)
{
ASSERT( nComment < TOTAL_AUDIO_SAMPLES );
- int8 slot;
-
for ( int32 i = 0; i < _TODOCONST(3); i++ )
{
- slot = nCurrentPedSlot - i - 1;
#ifdef FIX_BUGS
+ int8 slot = (int8)nCurrentPedSlot - i - 1;
if (slot < 0)
slot += ARRAY_SIZE(nPedSlotSfx);
+#else
+ uint8 slot = nCurrentPedSlot - i - 1;
#endif
if ( nComment == nPedSlotSfx[slot] )
return TRUE;
@@ -1406,14 +1358,14 @@ cSampleManager::IsPedCommentLoaded(uint32 nComment)
int32
cSampleManager::_GetPedCommentSlot(uint32 nComment)
{
- int8 slot;
-
for (int32 i = 0; i < _TODOCONST(3); i++)
{
- slot = nCurrentPedSlot - i - 1;
#ifdef FIX_BUGS
+ int8 slot = (int8)nCurrentPedSlot - i - 1;
if (slot < 0)
slot += ARRAY_SIZE(nPedSlotSfx);
+#else
+ uint8 slot = nCurrentPedSlot - i - 1;
#endif
if (nComment == nPedSlotSfx[slot])
return slot;
@@ -1537,7 +1489,7 @@ bool8 cSampleManager::UpdateReverb(void)
#undef CALCULATE_RATIO
#undef MIN_DIST
- fRatio = clamp(fRatio, 0.0f, 0.6f);
+ fRatio = Clamp(fRatio, 0.0f, 0.6f);
if ( fRatio == _fPrevEaxRatioDestination )
return FALSE;