winamp/Src/Plugins/Library/ml_local/remove.cpp
2024-09-24 14:54:57 +02:00

31 lines
941 B
C++

#include "main.h"
#include "api_mldb.h"
// returns 0 on success
// returns 1 on failure of either bad filename or invalid table
int RemoveFileFromDB(const wchar_t *filename)
{
// From mldbApi
int ret = 1;
if (!g_table) openDb();
if (filename && g_table)
{
// Issue wasabi callback for pre removal
WASABI_API_SYSCB->syscb_issueCallback(api_mldb::SYSCALLBACK, api_mldb::MLDB_FILE_REMOVED_PRE, (size_t)filename, 0);
EnterCriticalSection(&g_db_cs);
nde_scanner_t s = NDE_Table_CreateScanner(g_table);
if (NDE_Scanner_LocateFilename(s, MAINTABLE_ID_FILENAME, FIRST_RECORD, filename))
{
NDE_Scanner_Delete(s);
NDE_Scanner_Post(s);
g_table_dirty++;
ret = 0;
}
NDE_Table_DestroyScanner(g_table, s);
LeaveCriticalSection(&g_db_cs);
// Issue wasabi callback for post removal
WASABI_API_SYSCB->syscb_issueCallback(api_mldb::SYSCALLBACK, api_mldb::MLDB_FILE_REMOVED_POST, (size_t)filename, 0);
}
return ret;
}