Commit Graph
28 Commits
Author SHA1 Message Date
Martin Natano 7bd7a9b41e Tweak sort defaults to make more sense
- SortBPMDivision: Reduce from 20 to 10 to match up with ECS "tiers".
- SortLengthDivision: Increase from 5 seconds to 1 minute. Divisions of
  5 seconds don't seem very useful.
2022-03-12 20:32:21 +01:00
Martin Natano acb3ad727a Fix sort by length
The sort order is not remembered between songs when sorting by length.
This can be fixed by recognizing SORT_LENGTH as a sort order that can be
used for songs.

Reported by @aeubanks in https://github.com/Simply-Love/Simply-Love-SM5/issues/363
2022-03-12 19:13:11 +01:00
Martin Natano afb3836367 Remove unsafe package library
package.loadlib() can be used to load a dynamic C library allowing
arbitrary code execution in mod charts and themes.

So far I haven't found any theme that depends on the library, so I think
removing it shouldn't break anything.
2022-03-04 21:27:55 +01:00
Martin Natano e1b5664f21 Update jsoncpp from version 0.5.0 to 1.9.5
Aside from including a ton of bug fixes, this should fix an issue in the
CI pipeline when building with system libraries that was caused by a
minor incompatibility between 0.5.0 and less ancient versions.

Also, switch to the amalgamated source, because it makes it easier to
keep it up to date.
https://github.com/open-source-parsers/jsoncpp/wiki/Amalgamated-(Possibly-outdated)
2022-02-19 14:10:55 +01:00
Martin Natano 3216fdec1e Prevent access to the root file system via the memorycard mount points
Before any memorycard is used the mount point exposes "/". Let's
introduce a special value "(empty)" to allow a DIR mount to point to
nothing.
2022-02-19 11:20:01 +01:00
Martin Natano f79830e7af Fix typo in IniFile.WriteFile() error handling 2022-02-06 15:31:31 +01:00
Martin Natano 7d8ff85018 Remove access to the root FS from lua
On linux / is mounted to /rootfs in RageFile, which allows access to the
_whole_ filesystem from lua. This means themes and mod files can
re-write user data and extract files via USB profiles.

/rootfs was only added for internal use by the alsa, oss and memory card
drivers, so it can be easily replaced with direct fstream file access.
2022-02-06 15:31:31 +01:00
Martin Natano b46ba8f66c Move mbedtls to "External Libraries" in cmake 2022-01-23 15:42:25 +01:00
Martin Natano c4851955e8 Remove unused extern/crypto 2022-01-23 15:31:27 +01:00
Martin Natano f49cb9eff5 Update lua from 5.1.1 to 5.1.5
This keeps all the SM patches intact, but applies the 5.1.5 fixes on
top. All newlines normalized to make diffing with upstream easier.

https://www.lua.org/bugs.html#5.1.2
https://www.lua.org/bugs.html#5.1.3
https://www.lua.org/bugs.html#5.1.4
https://www.lua.org/bugs.html#5.1.5
2022-01-23 12:19:16 +01:00
Martin Natano 69ca42e18c Update zlib from version 1.2.5 to 1.2.11 2022-01-22 20:17:48 +01:00
Martin Natano 6de676984d Add mbedtls and use it on windows 2022-01-18 20:50:15 +01:00
Martin Natano 3fab481611 fixup collect 2022-01-15 22:56:22 +01:00
Martin Natano bb826dc0b2 Allow cancellation of HTTP requests
`NETWORK::HttpRequest()` now returns a HttpRequestFuture with a
`Cancel()` method.
2022-01-15 22:56:22 +01:00
Martin Natano 134fa9a3d9 IXWebSocket: Allow to cancel asynchronous HTTP requests
Usage:

    auto args = this->httpClient.createRequest(url, method);
    httpClient.performRequest(args, ...);
    [...]
    // Oops, we don't actually want to complete the request!
    args->cancel = true;

Submitted upstream:
https://github.com/machinezone/IXWebSocket/pull/332
2022-01-15 22:56:22 +01:00
Martin Natano bc4a275510 Add parameter encoding helpers to NETWORK
This adds two more methods:
- `NETWORK:UrlEncode()`: Encode a single string value.
- `NETWORK:EncodeQueryParameters()`: Encode a table as query string.
2022-01-15 22:56:08 +01:00
Martin Natano dc49af3c59 Implement NetworkManager
For now there are two methods:

- `NETWORK:IsUrlAllowed()`: Check whether access to a certain URL is allowed.
- `NETWORK:HttpRequest()`: Perform an HTTP request.

By default access to the network is disabled for all target hosts. It
can be enabled by setting `HttpEnable=1` in the preferences. Individual
hosts have to be added to `HttpAllowHosts` as a comma separated list to
allow access.

See included docs for more details on usage.
2022-01-15 22:56:08 +01:00
Martin Natano b4f86a2052 Add json encoding/decoding functions to lua
This adds two global functions:

- `JsonEncode()`: Encode data as JSON. Optionally "minify" the result.
- `JsonDecode()`: Decode JSON data.
2021-10-13 19:33:02 +02:00
Martin Natano baa5de4cd2 Fix BinaryToHex()
Previously the function stopped short on nul bytes ("\0") due to usage
of the SArg() macro, which does not retrieve the length of the lua
string.

before the fix: `BinaryToHex("a\0b")` -> `"61"`
after the fix: `BinaryToHex("a\0b")` -> `"610062"`
2021-09-19 22:27:09 +02:00
Martin Natano 8c2f13da2c Fix BinaryToHex()
Previously the function stopped short on nul bytes ("\0") due to usage
of the SArg() macro, which does not retrieve the length of the lua
string.

before the fix: `BinaryToHex("a\0b")` -> `"61"`
after the fix: `BinaryToHex("a\0b")` -> `"610062"`
2021-09-19 22:07:31 +02:00
Martin Natano 1c45882843 Add changes to README.md 2021-09-01 23:51:58 +02:00
Martin Natano 9b3f26d672 Increase Stats.xml file size limit to 100MB
A lot of people have run into the previous ~10MB limit and increasing it
to 100MB doesn't seem to break anything.

I left a limit in place, so that excessively large Stats.xml files on a
USB profile can't be used to make a cab run out of memory. (SM uses a
multiple of the memory that is required for the file on disk.)
2021-09-01 23:20:28 +02:00
Martin Natano f18695df59 Track held misses
This adds a `HeldMiss` attribute to judgment messages and a GetHeld()
method to TapNoteResult.
2021-08-31 18:25:09 +02:00
Martin Natano 65e859d6c5 Increase Stats.xml file size limit to 100MB
A lot of people have run into the previous ~10MB limit and increasing it
to 100MB doesn't seem to break anything.

I left a limit in place, so that excessively large Stats.xml files on a
USB profile can't be used to make a cab run out of memory. (SM uses a
multiple of the memory that is required for the file on disk.)
2021-08-23 22:19:34 +02:00
Martin Natano 6894386662 Change the default binding for P2/back from hyphen to backslash
This is a workaround to make the hyphen key usable in text entry
screens. It allows to add a hyphen to profile names and set a negative
offset in edit mode.

Technically backslash is also a typeable character, but it seems to be
less common names in user names and not necessary for typing negative
offsets.

Fwiw, in outfox P2/back is unbound.
2021-08-19 22:28:59 +02:00
Martin Natano 5c27754b39 Mark keypad buttons as such in the input mapping screen
Both the slash key and the numpad slash key were displayed as 'Key /',
so it's not obvious to the user which key actually has been bound. Let's
display them as 'Key /' and 'KP /' instead. Same for other KP keys.
2021-01-18 21:54:30 +01:00
Martin Natano c5096d24de Update vertex count stats when drawing smooth lines (OGL) (#1932)
The statistics are updated in the generic codepath, which is not used by
RageDisplay_Legacy::DrawLineStripInternal() when rendering smooth lines.

Note, that the output vertex count can differ a lot between smooth lines
(2) and non-smooth lines (~38 output vertices per input vertex), so
updating the statistics can not be done in RageDisplay::DrawLineStrip()
like it is donw for the other draw functions.
2019-11-14 12:40:35 -08:00
Martin Natano 6a4551f958 Detect 8:3 as widescreen (#1929)
The IsUsingWideScreen() function only checked 16:10 and 16:9, now we just
check that the ratio is greater than 16:10. (Coincidentally that's also
what the documentation states about this function.)
2019-11-03 12:10:05 -08:00