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