1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 07:32:55 +08:00
Commit Graph

263 Commits

Author SHA1 Message Date
Bartłomiej Dach
e57d7d1205
Fix MemoryStreamArchiveReader.GetStream() failing in some cases
`MemoryStreamArchiveReader` introduced in
0657b55196 would previously use
`MemoryStream.GetBuffer()` to retrieve the underlying byte buffer with
stream data. However, this is not generally the method you would want,
for two reasons:

1. It can fail if the stream wasn't created in the way that supports it.
2. As per

	https://learn.microsoft.com/en-us/dotnet/api/system.io.memorystream.getbuffer?view=net-7.0#system-io-memorystream-getbuffer,

   it will return the _raw_ contents of the buffer, including
   potentially unused bytes.

To fix, use `MemoryStream.ToArray()` instead, which avoids both
pitfalls. Notably, `ToArray()` always returns the full contents of the
buffer, regardless of `Position`, as documented in:

    https://learn.microsoft.com/en-us/dotnet/api/system.io.memorystream.toarray?view=net-7.0#system-io-memorystream-toarray
2023-09-18 11:50:36 +02:00
Dean Herbert
541cd972e1 Rename ArchiveReader implementations to read better 2023-09-14 13:36:07 +09:00
Dean Herbert
0657b55196 Avoid MemoryStream.ToArray overhead in LegacyByteArrayReader 2023-09-14 13:33:25 +09:00
Dean Herbert
5e0b89a1a8 Rename GetPath to GetFullPath to better match expectations 2023-08-18 17:56:43 +09:00
Krzysztof Gutkowski
59abb59ee8 Set correct date added value when importing stable beatmapsets 2023-08-17 00:49:48 +02:00
Dean Herbert
d39ef48b71 Return null intead of FileNotFoundException on missing file in ZipArchiveReader 2023-08-03 09:01:11 +09:00
Dean Herbert
df5b389629 Manual fixes to reduce warnings to zero 2023-06-24 01:52:53 +09:00
Dean Herbert
0ab0c52ad5 Automated pass 2023-06-24 01:00:03 +09:00
Dean Herbert
0fcf10e10a Also support hard links on macOS 2022-12-29 22:35:13 +08:00
Bartłomiej Dach
74bc5d4666
Disable naming rule inspection on struct stat definition 2022-12-28 22:38:42 +01:00
Bartłomiej Dach
49b0ec9ddb
Fix broken condition 2022-12-28 22:24:18 +01:00
Bartłomiej Dach
8d79fa93ac
Implement GetFileLinkCount() for Linux 2022-12-28 22:14:56 +01:00
Bartłomiej Dach
04d4b4a6ce
Rename and xmldoc hard link creation method 2022-12-28 22:04:05 +01:00
Bartłomiej Dach
cadd487c75
Use switch statement in AttemptHardLink() 2022-12-28 21:20:49 +01:00
BlauFx
53bca947d1 Move duplicated code into its own method 2022-12-28 14:34:27 +01:00
BlauFx
5c5e84f931 Fix formatiing 2022-12-28 14:06:50 +01:00
BlauFx
16165b1f67 Remove blank line 2022-12-28 13:58:52 +01:00
BlauFx
b2aa2e1602 Add hardlink support for Linux 2022-12-28 13:32:49 +01:00
Berkan Diler
08d2fbeb8e Use new ArgumentNullException.ThrowIfNull throw-helper API 2022-12-22 21:27:59 +01:00
Dean Herbert
192536643c Fix some more inspections 2022-12-16 20:21:19 +09:00
Dean Herbert
a3c3112f89
Add SetLastError hint to CreateHardLink pinvoke method
Co-authored-by: Bartłomiej Dach <dach.bartlomiej@gmail.com>
2022-12-14 11:34:06 +09:00
Dean Herbert
6bb612ce69 Move hard link availability check to helper class 2022-12-13 20:20:42 +09:00
Dean Herbert
bbf931c746 Move hard link helper functions to their own class 2022-12-13 19:55:18 +09:00
Dean Herbert
a8dee17513 Fix missing DummyRenderer in skin resources tests 2022-08-08 13:06:01 +09:00
Dan Balasescu
c4b9b2a14b Merge branch 'master' into irenderer-glwrapper 2022-08-05 20:35:06 +09:00
Dean Herbert
f743dc623f Change migration logic to ignore realm pipe files regardless of database filename 2022-08-03 17:37:30 +09:00
Dan Balasescu
b4e55f7309 Apply IRenderer changes 2022-08-02 19:50:57 +09:00
Dean Herbert
cc8a71b65d Re-query file existence before failing a recursive copy operation during migration 2022-08-01 17:01:19 +09:00
Dean Herbert
59210ecc9d Revert "Fix migration failing on single file copy failure"
This reverts commit fc8835d43a.
2022-08-01 16:57:50 +09:00
Dean Herbert
fc8835d43a Fix migration failing on single file copy failure
No longer throw if copying of single files fails during data migration.

Aiming to fix https://github.com/ppy/osu/runs/7601653833?check_suite_focus=true, which could also affect end users. I've left a limit before an exception is still thrown, to handle cases like the user running out of disk space (where we probably *do* want to bail, so they can continue to use their still-intact original storage location).

If this isn't seen as a good direction, an alternative will be to make the migration code aware of the structure of the temporary files created by `Storage` (but doesn't guarantee this will cover all cases of such temporary files – there could for isntance be metadata files created by the host operating system).

Another option would be to mark those temporary files as hidden and skip any hidden files during iteration.
2022-08-01 15:02:39 +09:00
Bartłomiej Dach
6f37487528
Replace calls to defective Humanizer methods with correct version 2022-07-18 22:34:58 +02:00
Dean Herbert
27ef7fc78e Add log output for custom storage usage
Sometimes I am not sure where my osu! is reading files from. This should
help somewhat.

```csharp
/Users/dean/Projects/osu/osu.Desktop/bin/Debug/net6.0/osu!
[runtime] 2022-07-13 07:22:03 [verbose]: Starting legacy IPC provider...
[runtime] 2022-07-13 07:22:03 [verbose]: Attempting to use custom storage location /Users/dean/Games/osu-lazer-2
[runtime] 2022-07-13 07:22:03 [verbose]: Storage successfully changed to /Users/dean/Games/osu-lazer-2.
[runtime] 2022-07-13 07:22:05 [verbose]: GL Initialized
```
2022-07-13 16:22:51 +09:00
Dean Herbert
66f314915d Fix crash on mobile releases when attempting to read any file 2022-07-09 06:01:22 +09:00
Dean Herbert
c2f1069073 Avoid usage of finally in potentially hot path 2022-07-06 19:55:51 +09:00
Dean Herbert
01bc6e5cb7 Revert old behaviour of ReadToEnd 2022-07-06 19:55:51 +09:00
Dean Herbert
12d396a513 Use -1 to specify default buffer size 2022-07-06 15:43:35 +09:00
Dean Herbert
a52ea3cabe Enable NRT and simplify LineBufferedReader 2022-07-06 14:57:56 +09:00
Dan Balasescu
f8830c6850 Automated #nullable processing 2022-06-17 16:37:17 +09:00
Salman Ahmed
ee8045d507 Add failing test case 2022-06-15 07:33:21 +03:00
Dean Herbert
82a1ba1d46 Use pooled memory for memory copies performed by ZipArchiveReader 2022-05-30 20:22:26 +09:00
Dean Herbert
c587d10cc3 Revert storage workaround 2022-05-21 15:55:07 +09:00
Dean Herbert
72386d9377 Fix incorrect storage being used in CreateFileSafely implementation 2022-05-21 15:17:10 +09:00
Dean Herbert
5bf17dde9f Fix missing MutatePath calls 2022-05-21 14:43:35 +09:00
Dean Herbert
f78eb0066c Update Storage in line with new methods 2022-05-16 17:51:12 +09:00
Huo Yaoyuan
80e312dbbc Remove unused binary serialization related code. 2022-04-12 20:29:13 +08:00
Huo Yaoyuan
bf677ad0ac Remove usages of BinaryFormatter. 2022-04-12 20:28:14 +08:00
Dean Herbert
975883da5c Move all usages of client.realm filename to a single const 2022-03-30 13:34:48 +09:00
Dean Herbert
1fb3d11591 Add ability to "migrate" data to another folder which has an existing install
Until now, migrating would always attempt to move files.

There's a chance that a user is reinstalling osu! but has their data at
a custom location. We want to allow the chance for them to continue
using the external data. This seems like the easiest way to make it
work.

Would be nice if we had a `Game.Restart()` method, but maybe this is
enough for now?

Note that further down the road we will probably prompt the user to
potentially select a custom install path (including one with existing
data) before osu! gets to writing anything.
2022-03-29 18:04:31 +09:00
Dean Herbert
2938f44e6c Update PresentExternally usages in line with framework changes 2022-03-24 23:41:07 +09:00
Dean Herbert
5b30921cbf Merge branch 'master' into net6 2022-02-14 22:06:35 +09:00