annotate foosdk/sdk/foobar2000/SDK/componentversion.cpp @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 #include "foobar2000-sdk-pch.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 #ifdef _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4 #include "componentversion.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 #include "filesystem.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 #include "console.h"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8 bool component_installation_validator::test_my_name(const char * fn) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 const char * path = core_api::get_my_full_path();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 path += pfc::scan_filename(path);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 bool retVal = ( strcmp(path, fn) == 0 );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12 PFC_ASSERT( retVal );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 if (!retVal) uAddDebugEvent(pfc::format("Component rename detected: ", fn, " >> ", path));
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 return retVal;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 bool component_installation_validator::have_other_file(const char * fn) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 for(int retry = 0;;) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 pfc::string_formatter path = core_api::get_my_full_path();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 path.truncate(path.scan_filename());
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 path << fn;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21 try {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 try {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 bool v = filesystem::g_exists(path, fb2k::noAbort);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 PFC_ASSERT( v );
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 return v;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 } catch(std::exception const & e) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 FB2K_console_formatter() << "Component integrity check error: " << e << " (on: " << fn << ")";
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 throw;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 } catch(exception_io_denied const &) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 } catch(exception_io_sharing_violation const &) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 } catch(exception_io_file_corrupted const &) { // happens
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 return false;
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 } catch(...) {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 uBugCheck();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 if (++retry == 10) uBugCheck();
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 Sleep(100);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 #endif // _WIN32
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46