mirror of
https://github.com/aaru-dps/Aaru.git
synced 2026-02-04 00:54:33 +00:00
Compare commits
505 Commits
v6.0.0-alp
...
devel
| Author | SHA1 | Date | |
|---|---|---|---|
|
f40bf12e72
|
|||
|
e62be9162a
|
|||
|
add96e2a4b
|
|||
|
7ab554cc8d
|
|||
|
ae62bf6a1d
|
|||
|
bce3d25213
|
|||
|
49350d25b2
|
|||
|
063df0a4f2
|
|||
|
f30a9d883c
|
|||
|
ee42c155fa
|
|||
|
ce278501b2
|
|||
|
21c47776b9
|
|||
|
c5d19bd953
|
|||
|
004a69e1d2
|
|||
|
bfae79e395
|
|||
|
38e201a742
|
|||
|
6f069a2b8d
|
|||
|
f4460cf5a4
|
|||
|
59b8ab6b04
|
|||
|
d67b4d9938
|
|||
|
19253ea67b
|
|||
|
196cc56bef
|
|||
|
180eba183e
|
|||
|
e4e0d77366
|
|||
|
e3bf0dcd29
|
|||
|
76128dfc1a
|
|||
|
9083b3a6a8
|
|||
|
98b223614c
|
|||
|
ff57c21ae4
|
|||
|
56f9cd914c
|
|||
|
f7792627aa
|
|||
|
3fc527f32b
|
|||
|
d9e85a2bc0
|
|||
|
d8e58f69e3
|
|||
|
1e4eff5869
|
|||
|
af438af639
|
|||
|
73a6c38c9c
|
|||
|
031e72afdb
|
|||
|
e430762c88
|
|||
|
3aadf4db25
|
|||
|
282ba70ad8
|
|||
|
3849ffd111
|
|||
|
3a1d2ed548
|
|||
|
63b79a6684
|
|||
|
2bcd319da9
|
|||
|
9ee3255349
|
|||
|
6b2aa60e7c
|
|||
|
a4d255791a
|
|||
|
18d7da890e
|
|||
|
a36e5c48e6
|
|||
|
2fcf3ad73f
|
|||
|
3d6c8a22bd
|
|||
|
c129271b5c
|
|||
|
a60469b8d7
|
|||
|
4c93ecfa13
|
|||
|
e9027eeef1
|
|||
|
dba10a64eb
|
|||
|
c828d01eb7
|
|||
|
0b2203ff38
|
|||
|
f3dadd8cf6
|
|||
|
52c2339e64
|
|||
|
896e7e1e96
|
|||
|
bfc12f82ce
|
|||
|
6d6cd069a6
|
|||
|
a20577d8c6
|
|||
|
bfb4b3b4b2
|
|||
|
7c2d31e754
|
|||
|
6bf20e6ce5
|
|||
|
3ebdd0073c
|
|||
|
1e41fa716a
|
|||
|
3a6362abc0
|
|||
|
071e59fc21
|
|||
|
ff00edfa93
|
|||
|
07416f5cb8
|
|||
|
1e7659f87c
|
|||
|
0bc12d1c0c
|
|||
|
b0c49b6b8f
|
|||
|
6c6c8cf549
|
|||
|
a269f74fac
|
|||
|
464bf4fef0
|
|||
|
ea96d65411
|
|||
|
e01e9c2f62
|
|||
|
0e12bb4c03
|
|||
|
d2d519e5d6
|
|||
|
ca5ac60088
|
|||
|
e1959fd00e
|
|||
|
b2118bfdbe
|
|||
|
4907e73ac4
|
|||
|
b082553ebf
|
|||
|
69bcf990db
|
|||
|
6f0ea32ea9
|
|||
|
d4afb1bc66
|
|||
|
c2eb4e654f
|
|||
|
30874d0dcf
|
|||
|
2b06401020
|
|||
|
ecd5a8fa9b
|
|||
|
0d71a49907
|
|||
|
8a42609a98
|
|||
|
0a2ba3a42c
|
|||
|
d517a984b8
|
|||
|
4d99f14cb4
|
|||
|
aadd1e1f49
|
|||
|
08af6a28de
|
|||
|
8bd739ed33
|
|||
|
0ccfd1864d
|
|||
|
1be5ccecbf
|
|||
|
71dfb1cb05
|
|||
|
04ff02a849
|
|||
|
3a18edbd7e
|
|||
|
d87d1efe43
|
|||
|
5e2806973f
|
|||
|
5dd0511ec2
|
|||
|
779569be42
|
|||
|
7270a2e521
|
|||
|
aab9d3df12
|
|||
|
22b698f002
|
|||
|
5e5df3e086
|
|||
|
106783d067
|
|||
|
0769719d48
|
|||
|
4c32e4d186
|
|||
|
006be5e652
|
|||
|
705fa5c6c9
|
|||
|
3d8758b93f
|
|||
|
434bb87c8c
|
|||
|
4f3268cf35
|
|||
|
01ec76347d
|
|||
|
b735122af2
|
|||
|
2d11a895d9
|
|||
|
ed66f52285
|
|||
|
3ade31b411
|
|||
|
a08e5162ac
|
|||
|
43c2f42a04
|
|||
|
6034dc439c
|
|||
|
7c78918f7a
|
|||
|
6a23f39234
|
|||
|
0ea3e709f6
|
|||
|
233cd4c265
|
|||
|
3a051233e8
|
|||
|
c92630ee89
|
|||
|
78039ba74a
|
|||
|
b2a2c8ad0d
|
|||
|
8faacb6d80
|
|||
|
d1c5b0ce68
|
|||
|
354c1c7a8e
|
|||
|
6d46f17487
|
|||
|
9203c5d32f
|
|||
|
5b0564f206
|
|||
| e729a0f3dc | |||
|
|
3d4ae298d5 | ||
|
c9404499e7
|
|||
|
f87a48aadd
|
|||
|
7343de9558
|
|||
|
0bec394166
|
|||
|
f26e57bf83
|
|||
| 18322abcba | |||
|
|
8ebfd8c810 | ||
|
|
6fb6535b6a | ||
|
|
88bd0877ae | ||
|
|
27fd729c9a | ||
|
|
ec4c99a8ab | ||
|
|
8429941faf | ||
|
|
8f1a6b3f00 | ||
|
b2163cf8bd
|
|||
|
06cd4acc41
|
|||
|
6a885f1818
|
|||
|
4ee955613e
|
|||
|
a9c474b786
|
|||
|
f8131c08f6
|
|||
|
b17a85942c
|
|||
|
4e711c0fcd
|
|||
|
2fad54af5d
|
|||
|
6f53cc4717
|
|||
|
86bc57b4bd
|
|||
|
d51b1733aa
|
|||
|
8c75bceb70
|
|||
|
89751baced
|
|||
|
7ad1590fdd
|
|||
| 61d067d57b | |||
|
|
498d48b20f | ||
| 145a381a56 | |||
|
|
5955c3cade | ||
|
|
1d7f5b0de8 | ||
|
|
b48436c295 | ||
|
bce5ae0764
|
|||
| 75a2e4e90a | |||
| 02faee8cce | |||
|
|
0219f7b4de | ||
|
|
a4744b1e29 | ||
|
fab19cd6ba
|
|||
|
6eb4fb16e5
|
|||
|
06de336030
|
|||
|
5d73776a5a
|
|||
|
440e820e2d
|
|||
|
2db066ed19
|
|||
|
4ed0fe1ccd
|
|||
|
7f6915c95e
|
|||
|
|
8994b99b10 | ||
|
30ab4d2e13
|
|||
|
|
5bb89e27ef | ||
|
bdfd1a2a63
|
|||
|
e7c56ab370
|
|||
|
347629f378
|
|||
|
|
e6effdef90 | ||
| 60da22967d | |||
|
9a9106e8fa
|
|||
|
1c24e225ff
|
|||
|
c1ca631cf4
|
|||
|
eeff7b20e0
|
|||
|
6f4e6fd1d6
|
|||
|
eb6d564776
|
|||
|
514d1f0b25
|
|||
|
a8ff8d36f2
|
|||
|
ecbe78f93a
|
|||
|
1bd55d8586
|
|||
|
ef2f8f89c2
|
|||
|
b643bc7f07
|
|||
|
1842998372
|
|||
|
dd159d6126
|
|||
|
19b5be908c
|
|||
|
db79428375
|
|||
|
|
8020dee79d | ||
|
|
edac070218 | ||
|
|
0998eb01aa | ||
|
4f68b6e2be
|
|||
|
36eec226ba
|
|||
|
6f6f1c17c9
|
|||
|
4fd93523ff
|
|||
|
35c26c9128
|
|||
|
550e52b618
|
|||
|
078e74bf9c
|
|||
|
f5e217bd6a
|
|||
|
fceedd1045
|
|||
|
52310b7f67
|
|||
|
0d4647ac40
|
|||
|
60b361ae9a
|
|||
|
20ec77823d
|
|||
|
fd2db2a1e0
|
|||
|
a6f4326198
|
|||
|
5682d453b0
|
|||
|
b7ea7f9216
|
|||
|
c6db847b6a
|
|||
|
e7066b798f
|
|||
|
b15915dc03
|
|||
|
0a7437232c
|
|||
|
bab040d0c2
|
|||
|
2798b1d097
|
|||
|
cb19c30132
|
|||
|
c6f69ec6cd
|
|||
|
e0327853ee
|
|||
|
4ecc1647f2
|
|||
|
56044273cd
|
|||
|
9356f16eba
|
|||
|
8473fa416d
|
|||
|
3edb73070e
|
|||
|
e993906cab
|
|||
|
0fd083668a
|
|||
|
4af98e5dbb
|
|||
|
a6d880bc37
|
|||
|
ee8085c05f
|
|||
|
96406b844d
|
|||
|
4dc1842c77
|
|||
|
5785f2d947
|
|||
|
fdf695065f
|
|||
|
c141d1f8e3
|
|||
|
eacbe96ccf
|
|||
|
333055e5a3
|
|||
|
508a026798
|
|||
|
7bf82d2570
|
|||
|
4067ee8a1d
|
|||
|
aeb5698161
|
|||
|
45b62a9edd
|
|||
|
93e426f309
|
|||
|
c892c330df
|
|||
|
c876155f59
|
|||
|
574c24bfd7
|
|||
|
141c530c72
|
|||
|
63de433e26
|
|||
|
37ff868f18
|
|||
|
250b803902
|
|||
|
41851c1792
|
|||
|
d1a6b0ee40
|
|||
|
ef92ae8735
|
|||
|
ae1c67a72a
|
|||
|
a474b42f61
|
|||
|
da166acd31
|
|||
|
8827bfab7b
|
|||
|
4c6ab104cc
|
|||
|
4e56d1ca4f
|
|||
|
7d45606fde
|
|||
|
4a039376f2
|
|||
|
1f5cdb2be6
|
|||
|
85d04f2fa1
|
|||
|
e63ce84478
|
|||
|
4329607566
|
|||
|
9ecc9eb3b8
|
|||
|
f4594ba0c2
|
|||
|
3382369502
|
|||
|
4c2098410e
|
|||
|
ba2be66c73
|
|||
|
4e4ce8e313
|
|||
|
5d98cc118a
|
|||
|
2517335bf7
|
|||
|
afcc6206d0
|
|||
|
8d17f4fa08
|
|||
|
6e4befa98b
|
|||
|
507b1717ee
|
|||
|
60397af992
|
|||
|
6bf0b5e780
|
|||
|
9bd6357e1a
|
|||
|
3efbd151d5
|
|||
|
5fd0a344b3
|
|||
|
fe508801e8
|
|||
|
55addee5ad
|
|||
|
80f8931a6f
|
|||
|
f3470b2b17
|
|||
|
83b0c455d7
|
|||
|
0d3078b4aa
|
|||
|
9509cb9054
|
|||
|
4a0bd8b856
|
|||
|
5bc1a8b445
|
|||
|
42e47fc7a0
|
|||
|
65104ba678
|
|||
|
a8b1f21dc0
|
|||
|
cb9f6a1365
|
|||
|
92a144acf3
|
|||
|
8463ec7c27
|
|||
|
61a3ce4fb0
|
|||
|
ededbc82cd
|
|||
|
fde394008a
|
|||
|
ef3044012d
|
|||
|
cfab34cd4d
|
|||
|
257abc34c3
|
|||
|
590fa4e542
|
|||
|
7bd5f106f0
|
|||
|
6f00e7739c
|
|||
|
306f6e3168
|
|||
|
72b20f9938
|
|||
|
4ef63ae64b
|
|||
|
326f306c12
|
|||
|
efed1615cb
|
|||
|
7fee6c9a1c
|
|||
|
d4b88664fa
|
|||
|
d51f55a732
|
|||
|
df6e16a891
|
|||
|
49ffa4f921
|
|||
|
bc23c8f951
|
|||
|
b70751991d
|
|||
|
7599d57f21
|
|||
|
7f49998683
|
|||
|
2ae1a36c56
|
|||
|
d8a9ec25af
|
|||
|
523ce89c7c
|
|||
|
a3ec57902f
|
|||
|
98a0caa737
|
|||
|
1aa8271d62
|
|||
|
c92b3f636a
|
|||
|
bddd3121d6
|
|||
|
0b373c33e1
|
|||
|
61eb194fa1
|
|||
|
e20df59b28
|
|||
|
ab6451a73f
|
|||
|
4334dfe706
|
|||
|
f1abe1af0a
|
|||
|
1a27321f16
|
|||
|
dd7d2f53ad
|
|||
|
1689c6dd80
|
|||
|
|
f1121d6ecc | ||
|
|
d671dab788 | ||
|
|
96416b0107 | ||
|
|
e39fc57a0d | ||
|
c0f81cbfc1
|
|||
|
bc7d192b10
|
|||
|
26781eda6d
|
|||
|
5febb2012d
|
|||
|
37b8eeaf4f
|
|||
|
63ff190275
|
|||
|
8efd9896c1
|
|||
|
599454377e
|
|||
|
13a200d10b
|
|||
|
a58f2e60e5
|
|||
|
8331fba1e4
|
|||
|
5774885431
|
|||
|
7b487033b5
|
|||
|
dea49e235d
|
|||
|
64db005bdc
|
|||
|
c4af5bf241
|
|||
|
ebce649b61
|
|||
|
7af8b40f80
|
|||
|
46066fb9a7
|
|||
|
0fa91c34e1
|
|||
|
98f52803c9
|
|||
|
0ddd930ee1
|
|||
|
d29afd403a
|
|||
|
22aa9b3538
|
|||
|
04c45e69fa
|
|||
|
5fe7f574d6
|
|||
|
e9842195e1
|
|||
|
389ae5d5d5
|
|||
|
bfe36a62e1
|
|||
|
ea8633f4c5
|
|||
|
97283b4450
|
|||
|
3628fcf9c2
|
|||
|
4ee2034475
|
|||
|
ff9b2d64f4
|
|||
|
b8d55ff741
|
|||
|
70f005f61f
|
|||
|
0f78b128ac
|
|||
|
caae4311b9
|
|||
|
2c0c4ad891
|
|||
|
fa7b047eae
|
|||
|
19e03d3614
|
|||
|
98925c4611
|
|||
|
b34e549edd
|
|||
|
824b6b2032
|
|||
|
aec8263541
|
|||
|
afedc37ca9
|
|||
|
e11b4e9244
|
|||
|
2319ae2361
|
|||
|
b4c36a5940
|
|||
|
cc04c9a03c
|
|||
|
062e202dbf
|
|||
|
93a0670e8d
|
|||
|
89b42121e1
|
|||
|
1ee2d37a0f
|
|||
|
842376dd2d
|
|||
|
5f94bbf4ae
|
|||
|
7b6f05417c
|
|||
|
72163a870c
|
|||
|
81c0914f44
|
|||
|
a67a289351
|
|||
|
6cf642162b
|
|||
|
f82f62be8d
|
|||
|
468c5b8e0f
|
|||
|
0a37bbc4fc
|
|||
|
58ef5febeb
|
|||
|
b6b3e9d1d1
|
|||
|
8aadc3baca
|
|||
|
8b83f9cbbb
|
|||
|
c1af9a1f96
|
|||
|
5531414e76
|
|||
|
6bcc608668
|
|||
|
fe2e7455d3
|
|||
|
c66612737b
|
|||
|
02b0552544
|
|||
|
7dbe9289dd
|
|||
|
5a9b25986a
|
|||
|
f86a354aa0
|
|||
|
5bcfa20b32
|
|||
|
a3c17573a2
|
|||
|
c033ac108d
|
|||
|
6bee3261d0
|
|||
|
64e1e3f3bc
|
|||
|
63ecc65ad2
|
|||
|
f6477270c5
|
|||
|
e201ebcf9d
|
|||
|
c540bd794d
|
|||
|
c1ddebe52c
|
|||
|
227adeb092
|
|||
|
92bbdaaab6
|
|||
|
17dc7423c2
|
|||
|
daec2d8aa3
|
|||
|
79bbef052f
|
|||
|
0ef27976db
|
|||
|
185f8fb7ab
|
|||
|
06dc04c18a
|
|||
|
3482375ec7
|
|||
|
6474b83b51
|
|||
|
7791f9f740
|
|||
|
7aaf48567b
|
|||
|
70026ba4be
|
|||
|
bde0c7b5e3
|
|||
|
9ac4762f23
|
|||
|
36e80ed792
|
|||
|
0577767843
|
|||
|
190e22f610
|
|||
|
c67197f977
|
|||
|
7bee2d7473
|
|||
|
cd699f46de
|
|||
|
8c97cb5ccb
|
|||
|
7a4520d277
|
|||
|
b5ae3f08ef
|
|||
|
363cdbdd37
|
|||
|
98345425f8
|
|||
|
b748f54dca
|
|||
|
239af54b75
|
|||
|
8186aa3181
|
|||
|
4e06c565d8
|
|||
|
9f0109af43
|
|||
|
b37007321e
|
|||
|
6f0ec4546f
|
|||
|
b580bf0555
|
|||
|
|
31dfcadab8 | ||
|
54a640c3ed
|
|||
|
d362591dac
|
|||
|
62dc4b6704
|
|||
|
a55677ac18
|
|||
|
9c66f259ef
|
|||
|
ac5b01a95c
|
|||
|
|
827dcfee94 | ||
|
|
85d8c5e937 | ||
|
fd04d4fe2a
|
|||
|
af5fa8b34a
|
|||
|
efd9725d58
|
|||
|
2ea83e9f72
|
|||
|
a25e649fe2
|
@@ -261,10 +261,6 @@ resharper_xml_keep_user_linebreaks
|
||||
resharper_xml_pi_attribute_style = first_attribute_on_single_line
|
||||
|
||||
# ReSharper inspection severities
|
||||
resharper_annotate_can_be_null_parameter_highlighting = warning
|
||||
resharper_annotate_can_be_null_type_member_highlighting = warning
|
||||
resharper_annotate_not_null_parameter_highlighting = warning
|
||||
resharper_annotate_not_null_type_member_highlighting = warning
|
||||
resharper_arguments_style_anonymous_function_highlighting = warning
|
||||
resharper_arguments_style_literal_highlighting = warning
|
||||
resharper_arguments_style_named_expression_highlighting = warning
|
||||
@@ -1472,6 +1468,7 @@ dotnet_diagnostic.ph2081.severity = none
|
||||
dotnet_diagnostic.ph2082.severity = suggestion
|
||||
dotnet_diagnostic.ph2083.severity = warning
|
||||
dotnet_diagnostic.ph2086.severity = warning
|
||||
dotnet_diagnostic.ph2088.severity = none
|
||||
dotnet_diagnostic.ph2089.severity = warning
|
||||
dotnet_diagnostic.ph2096.severity = warning
|
||||
dotnet_diagnostic.ph2097.severity = warning
|
||||
|
||||
5
.github/FUNDING.yml
vendored
5
.github/FUNDING.yml
vendored
@@ -1,6 +1,5 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
# github: claunia
|
||||
github: claunia
|
||||
patreon: claunia
|
||||
ko_fi: claunia
|
||||
open_collective: aaru
|
||||
ko_fi: tinkeringdaemon
|
||||
|
||||
20
.github/ISSUE_TEMPLATE/bug_report_general.yaml
vendored
20
.github/ISSUE_TEMPLATE/bug_report_general.yaml
vendored
@@ -10,10 +10,24 @@ body:
|
||||
label: Version
|
||||
description: What version of Aaru are you running?
|
||||
options:
|
||||
- 5.3.0
|
||||
- 5.4.x
|
||||
- 5.3.x
|
||||
- 5.2.0
|
||||
- Older
|
||||
- 6.0.0-alpha6
|
||||
- 6.0.0-alpha.6
|
||||
- 6.0.0-alpha.7
|
||||
- 6.0.0-alpha.8
|
||||
- 6.0.0-alpha.9
|
||||
- 6.0.0-alpha.10
|
||||
- 6.0.0-alpha.11
|
||||
- 6.0.0-alpha.12
|
||||
- 6.0.0-alpha.13
|
||||
- 6.0.0-alpha.14
|
||||
- 6.0.0-alpha.15
|
||||
- 6.0.0-alpha.15.1
|
||||
- 6.0.0-alpha.16
|
||||
- 6.0.0-alpha.17
|
||||
- 6.0.0-alpha.18
|
||||
- Development commit
|
||||
validations:
|
||||
required: true
|
||||
@@ -21,7 +35,7 @@ body:
|
||||
id: commit
|
||||
attributes:
|
||||
label: Commit hash
|
||||
description: If using a developmen commit, which one
|
||||
description: If using a development commit, which one
|
||||
- type: checkboxes
|
||||
id: debug
|
||||
attributes:
|
||||
|
||||
20
.github/ISSUE_TEMPLATE/bug_report_image.yaml
vendored
20
.github/ISSUE_TEMPLATE/bug_report_image.yaml
vendored
@@ -10,10 +10,24 @@ body:
|
||||
label: Version
|
||||
description: What version of Aaru are you running?
|
||||
options:
|
||||
- 5.3.0
|
||||
- 5.4.x
|
||||
- 5.3.x
|
||||
- 5.2.0
|
||||
- Older
|
||||
- 6.0.0-alpha6
|
||||
- 6.0.0-alpha.6
|
||||
- 6.0.0-alpha.7
|
||||
- 6.0.0-alpha.8
|
||||
- 6.0.0-alpha.9
|
||||
- 6.0.0-alpha.10
|
||||
- 6.0.0-alpha.11
|
||||
- 6.0.0-alpha.12
|
||||
- 6.0.0-alpha.13
|
||||
- 6.0.0-alpha.14
|
||||
- 6.0.0-alpha.15
|
||||
- 6.0.0-alpha.15.1
|
||||
- 6.0.0-alpha.16
|
||||
- 6.0.0-alpha.17
|
||||
- 6.0.0-alpha.18
|
||||
- Development commit
|
||||
validations:
|
||||
required: true
|
||||
@@ -21,7 +35,7 @@ body:
|
||||
id: commit
|
||||
attributes:
|
||||
label: Commit hash
|
||||
description: If using a developmen commit, which one
|
||||
description: If using a development commit, which one
|
||||
- type: checkboxes
|
||||
id: debug
|
||||
attributes:
|
||||
|
||||
20
.github/ISSUE_TEMPLATE/bug_report_media.yaml
vendored
20
.github/ISSUE_TEMPLATE/bug_report_media.yaml
vendored
@@ -10,10 +10,24 @@ body:
|
||||
label: Version
|
||||
description: What version of Aaru are you running?
|
||||
options:
|
||||
- 5.3.0
|
||||
- 5.4.x
|
||||
- 5.3.x
|
||||
- 5.2.0
|
||||
- Older
|
||||
- 6.0.0-alpha6
|
||||
- 6.0.0-alpha.6
|
||||
- 6.0.0-alpha.7
|
||||
- 6.0.0-alpha.8
|
||||
- 6.0.0-alpha.9
|
||||
- 6.0.0-alpha.10
|
||||
- 6.0.0-alpha.11
|
||||
- 6.0.0-alpha.12
|
||||
- 6.0.0-alpha.13
|
||||
- 6.0.0-alpha.14
|
||||
- 6.0.0-alpha.15
|
||||
- 6.0.0-alpha.15.1
|
||||
- 6.0.0-alpha.16
|
||||
- 6.0.0-alpha.17
|
||||
- 6.0.0-alpha.18
|
||||
- Development commit
|
||||
validations:
|
||||
required: true
|
||||
@@ -21,7 +35,7 @@ body:
|
||||
id: commit
|
||||
attributes:
|
||||
label: Commit hash
|
||||
description: If using a developmen commit, which one
|
||||
description: If using a development commit, which one
|
||||
- type: checkboxes
|
||||
id: debug
|
||||
attributes:
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
2
.github/ISSUE_TEMPLATE/feature_request.yaml
vendored
@@ -7,7 +7,7 @@ assignees:
|
||||
body:
|
||||
- type: dropdown
|
||||
attributes:
|
||||
description: Type of feture you're requesting
|
||||
description: Type of feature you're requesting
|
||||
label: Type
|
||||
options:
|
||||
- Support for a new media image format...
|
||||
|
||||
@@ -1,2 +1,3 @@
|
||||
is_global = true
|
||||
dotnet_diagnostic.PH2075.severity = none
|
||||
dotnet_diagnostic.PH2088.severity = none
|
||||
@@ -1,8 +1,8 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="Aaru" type="DotNetProject" factoryName=".NET Project">
|
||||
<option name="EXE_PATH" value="$PROJECT_DIR$/Aaru/bin/Debug/net10.0/win-x64/aaru.exe" />
|
||||
<option name="PROGRAM_PARAMETERS" value="m dump /dev/sdb testlib.aif" />
|
||||
<option name="WORKING_DIRECTORY" value="/mnt/datos/" />
|
||||
<option name="EXE_PATH" value="$PROJECT_DIR$/Aaru/bin/Debug/net10.0/osx-arm64/aaru" />
|
||||
<option name="PROGRAM_PARAMETERS" value="i info "Tanxugueiras - Contra (CLVR012).aif"" />
|
||||
<option name="WORKING_DIRECTORY" value="/Volumes/iPhone/issue662/" />
|
||||
<option name="PASS_PARENT_ENVS" value="1" />
|
||||
<option name="ENV_FILE_PATHS" value="" />
|
||||
<option name="REDIRECT_INPUT_PATH" value="" />
|
||||
|
||||
2
.idea/.idea.Aaru/.idea/vcs.xml
generated
2
.idea/.idea.Aaru/.idea/vcs.xml
generated
@@ -6,6 +6,6 @@
|
||||
</profile>
|
||||
</component>
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
206
AGENTS.md
Normal file
206
AGENTS.md
Normal file
@@ -0,0 +1,206 @@
|
||||
# AGENTS.md - AI Coding Agent Guidelines for Aaru
|
||||
|
||||
This document provides guidelines for AI coding assistants working with the Aaru Data Preservation Suite codebase.
|
||||
|
||||
## Project Overview
|
||||
|
||||
**Aaru** is an open-source Data Preservation Suite for creating, managing, and preserving digital media images. It supports dumping media from various drives (magnetic disks, optical discs, tapes, flash devices), converting between image formats, and analyzing filesystems.
|
||||
|
||||
- **Language:** C# 8+ (latest features enabled)
|
||||
- **Framework:** .NET 10
|
||||
- **Solution File:** `Aaru.slnx`
|
||||
- **Build System:** MSBuild with `dotnet` CLI
|
||||
|
||||
## Repository Structure
|
||||
|
||||
The repository is organized into multiple modules:
|
||||
|
||||
| Module | Purpose |
|
||||
|--------|---------|
|
||||
| `Aaru/` | Main CLI application and entry point |
|
||||
| `Aaru.Archives/` | Archive format support (AMG, Arc, Ha, Stfs, Symbian, Zoo) |
|
||||
| `Aaru.Checksums/` | Checksum, hashing, and error correction algorithms |
|
||||
| `Aaru.CommonTypes/` | Shared interfaces, structures, and enumerations |
|
||||
| `Aaru.Compression/` | Compression algorithm implementations |
|
||||
| `Aaru.Console/` | Console abstraction for CLI/GUI output |
|
||||
| `Aaru.Core/` | Core functionality: dumping, conversion, filesystem operations |
|
||||
| `Aaru.Database/` | Database models and access |
|
||||
| `Aaru.Decoders/` | Protocol structures and decoder implementations |
|
||||
| `Aaru.Decryption/` | Media decryption (CSS, CPRM, etc.) |
|
||||
| `Aaru.Devices/` | Hardware device communication across platforms |
|
||||
| `Aaru.Dto/` | Data Transfer Objects for client-server communication |
|
||||
| `Aaru.EntityFramework/` | Entity Framework integration |
|
||||
| `Aaru.Filesystems/` | Filesystem identification and extraction |
|
||||
| `Aaru.Filters/` | Data filters (compression, encoding transformations) |
|
||||
| `Aaru.Generators/` | Source generators |
|
||||
| `Aaru.Gui/` | Avalonia-based graphical user interface |
|
||||
| `Aaru.Helpers/` | Utility functions (marshalling, byte manipulation, etc.) |
|
||||
| `Aaru.Images/` | Disk/disc image format readers and writers |
|
||||
| `Aaru.Localization/` | Localized strings (shared resources) |
|
||||
| `Aaru.Logging/` | Logging infrastructure |
|
||||
| `Aaru.Partitions/` | Partition scheme readers |
|
||||
| `Aaru.Settings/` | Application settings management |
|
||||
| `Aaru.Tests/` | Unit tests (xUnit) |
|
||||
| `Aaru.Tests.Devices/` | Device command testing (menu-driven) |
|
||||
| `Aaru.Tui/` | Terminal UI implementation |
|
||||
|
||||
## Coding Style Guidelines
|
||||
|
||||
The project follows strict coding conventions. An `.editorconfig` file is included to enforce these.
|
||||
|
||||
### General Rules
|
||||
|
||||
- **Braces:** BSD style (braces on new line, unindented)
|
||||
- **Empty braces:** Open and close on same line: `{ }`
|
||||
- **Single-statement blocks:** No braces required
|
||||
- **Indentation:** 4 spaces (soft tabs)
|
||||
- **Line length:** 120 characters maximum
|
||||
- **Line endings:** UNIX (`\n`)
|
||||
- **Final newline:** Do NOT end files with a newline
|
||||
- **Blank lines:** Do not use more than one consecutive blank line
|
||||
|
||||
### Naming Conventions
|
||||
|
||||
- **Constants:** `ALL_UPPER_CASE`
|
||||
- **Instance/static fields (private):** `lowerCamelCase` (often prefixed with `_`)
|
||||
- **Public fields:** `UpperCamelCase`
|
||||
- **Properties/Methods:** `UpperCamelCase`
|
||||
|
||||
### C# Specific
|
||||
|
||||
- **Do NOT use `var`** - always use explicit types
|
||||
- **Use built-in type keywords:** `uint` instead of `UInt32`, `string` instead of `String`
|
||||
- **Expression bodies:** Only for properties, indexers, and events; use block bodies for methods
|
||||
- **Use inline variable declaration:** `if(Foo(out var result))`
|
||||
- **Keywords order:** `public, private, protected, internal, file, new, static, abstract, virtual, sealed, readonly, override, extern, unsafe, volatile, async, required`
|
||||
- **`else`, `while`, `catch`, `finally`:** Always on new lines
|
||||
- **No spaces around parentheses:** `if(condition)` not `if (condition)`
|
||||
- **Prefer structs over classes** when only storing data; use nullable structs when needed
|
||||
- **Avoid unnecessary OOP abstractions** - this is low-level code
|
||||
|
||||
### LINQ
|
||||
|
||||
LINQ is acceptable and commonly used throughout the codebase.
|
||||
|
||||
## Localization
|
||||
|
||||
All user-facing strings must be localized:
|
||||
|
||||
- **Shared strings:** `Aaru.Localization/UI.resx` and `Aaru.Localization/Core.resx`
|
||||
- **Project-specific strings:** In each project's `Localization/` folder
|
||||
- **Translations:** Currently English (`*.resx`) and Spanish (`*.es.resx`)
|
||||
- **Resource ID conventions:**
|
||||
- `Title_*` - Table/section headers
|
||||
- `ButtonLabel_*` - Action buttons (use appropriate verb tense)
|
||||
- `*_Q` - Questions
|
||||
- `*_WithMarkup` - Contains Spectre.Console markup
|
||||
- Numbers in IDs (e.g., `_0`, `_1`) indicate string format arguments `{0}`, `{1}`
|
||||
|
||||
For enum values, use `[LocalizedDescription(nameof(UI.EnumName_Value))]` attribute.
|
||||
|
||||
## Testing
|
||||
|
||||
- **Framework:** xUnit
|
||||
- **Location:** `Aaru.Tests/` project
|
||||
- **Note:** Full test suite requires ~900+ GiB of test images; not all tests can be run locally
|
||||
- **Device tests:** `Aaru.Tests.Devices/` provides interactive device command testing
|
||||
|
||||
## Building
|
||||
|
||||
```bash
|
||||
# Build all configurations
|
||||
dotnet build
|
||||
|
||||
# Build specific configuration
|
||||
dotnet build -c Release
|
||||
|
||||
# Publish for specific platform
|
||||
dotnet publish -f net10.0 -r osx-arm64 -c Release
|
||||
|
||||
# Run tests
|
||||
dotnet test
|
||||
```
|
||||
|
||||
Supported runtime identifiers: `linux-arm64`, `linux-arm`, `linux-x64`, `osx-x64`, `osx-arm64`, `win-arm64`, `win-x64`, `win-x86`
|
||||
|
||||
## Key Interfaces
|
||||
|
||||
When working with the codebase, be aware of these core interfaces in `Aaru.CommonTypes`:
|
||||
|
||||
- `IMediaImage` / `IWritableImage` - Disk/disc image reading/writing
|
||||
- `IOpticalMediaImage` / `IWritableOpticalImage` - Optical media specific
|
||||
- `ITapeImage` / `IWritableTapeImage` - Tape media specific
|
||||
- `IFluxImage` / `IWritableFluxImage` - Flux-level data
|
||||
- `IFilesystem` / `IReadOnlyFilesystem` - Filesystem operations
|
||||
- `IPartition` - Partition scheme reading
|
||||
- `IFilter` - Data transformation filters
|
||||
- `IArchive` - Archive format support
|
||||
|
||||
## Error Handling
|
||||
|
||||
- Use `ErrorNumber` enum for return values indicating success/failure
|
||||
- Check for `ErrorNumber.NoError` for success
|
||||
- Propagate errors up the call stack with appropriate context
|
||||
|
||||
## Events and Progress Reporting
|
||||
|
||||
Many operations use event-based progress reporting:
|
||||
|
||||
```csharp
|
||||
public event InitProgressHandler InitProgress;
|
||||
public event UpdateProgressHandler UpdateProgress;
|
||||
public event EndProgressHandler EndProgress;
|
||||
public event UpdateStatusHandler UpdateStatus;
|
||||
public event ErrorMessageHandler ErrorMessage;
|
||||
public event ErrorMessageHandler StoppingErrorMessage;
|
||||
```
|
||||
|
||||
## Platform Considerations
|
||||
|
||||
- Avoid platform-dependent code unless absolutely necessary
|
||||
- For system calls, only use `System.*` namespaces when possible
|
||||
- Device communication uses OS-specific interop in `Aaru.Devices/`:
|
||||
- Windows: `KERNEL32.DLL`, `WinUsb`
|
||||
- Unix/Linux/macOS: `libc`, `libusb`
|
||||
|
||||
## Pull Request Guidelines
|
||||
|
||||
1. Do not modify interfaces without discussion
|
||||
2. Follow the code style guide strictly
|
||||
3. Include XML documentation for new public APIs
|
||||
4. Add tests for new functionality when possible
|
||||
5. Do not include copyrighted content in test files
|
||||
6. Keep commits focused and well-described
|
||||
|
||||
## External Dependencies
|
||||
|
||||
- Dependencies are managed via central package management (`Directory.Packages.props`)
|
||||
- Minimize external library usage - prefer .NET built-in functionality
|
||||
- Compression: Use `SharpCompress` library
|
||||
- Mac Resource Forks: Use `Claunia.RsrcFork`
|
||||
- Encodings: Use `Claunia.Encoding` for legacy codepages
|
||||
- Property Lists: Use `plist-cil`
|
||||
|
||||
## Common Patterns
|
||||
|
||||
### Plugin Registration
|
||||
|
||||
Plugins (images, filesystems, partitions, etc.) register through `PluginRegister.Singleton`.
|
||||
|
||||
### Reading/Writing Images
|
||||
|
||||
```csharp
|
||||
// Reading
|
||||
(ErrorNumber errno, IMediaImage image) = GetInputImage(imagePath);
|
||||
if(image is null) return errno;
|
||||
|
||||
// Writing
|
||||
IWritableImage outputFormat = FindOutputFormat(PluginRegister.Singleton, format, outputPath);
|
||||
```
|
||||
|
||||
### Metadata and Dump Hardware
|
||||
|
||||
- Use `Metadata` class for image metadata
|
||||
- Use `DumpHardware` for recording dump device information
|
||||
- Use `Resume` for dump session resumption data
|
||||
|
||||
@@ -54,7 +54,7 @@
|
||||
<PackageReference Include="Humanizer"/>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection"/>
|
||||
<PackageReference Include="SharpCompress"/>
|
||||
<PackageReference Include="Spectre.Console" />
|
||||
<PackageReference Include="Spectre.Console"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Aaru.Generators\Aaru.Generators.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
|
||||
|
||||
@@ -11,10 +11,9 @@ public sealed partial class Amg
|
||||
#region IArchive Members
|
||||
|
||||
/// <inheritdoc />
|
||||
public bool Identify(IFilter filter)
|
||||
{
|
||||
return false;
|
||||
/*
|
||||
public bool Identify(IFilter filter) => false;
|
||||
|
||||
/*
|
||||
if(filter.DataForkLength < Marshal.SizeOf<ArcHeader>()) return false;
|
||||
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
@@ -29,8 +28,6 @@ public sealed partial class Amg
|
||||
// Not a valid magic
|
||||
return header.magic == ARC_MAGIC;
|
||||
*/
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
public void GetInformation(IFilter filter, Encoding encoding, out string information)
|
||||
{
|
||||
@@ -42,7 +39,7 @@ public sealed partial class Amg
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<ArcHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<ArcHeader>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -61,7 +58,7 @@ public sealed partial class Amg
|
||||
|
||||
if(header.commentLength > 0)
|
||||
{
|
||||
byte[] buffer = new byte[header.commentLength];
|
||||
var buffer = new byte[header.commentLength];
|
||||
stream.ReadExactly(buffer, 0, buffer.Length);
|
||||
sb.AppendLine(Localization.Archive_comment);
|
||||
sb.AppendLine(Markup.Escape(StringHandlers.CToString(buffer, encoding)));
|
||||
|
||||
@@ -20,7 +20,7 @@ public sealed partial class Amg
|
||||
_stream = filter.GetDataForkStream();
|
||||
_stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<ArcHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<ArcHeader>()];
|
||||
|
||||
_stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -39,7 +39,7 @@ public sealed partial class Amg
|
||||
|
||||
while(_stream.Position + fileHeaderLen < _stream.Length)
|
||||
{
|
||||
byte[] fileHdr = new byte[fileHeaderLen];
|
||||
var fileHdr = new byte[fileHeaderLen];
|
||||
|
||||
_stream.ReadExactly(fileHdr, 0, fileHdr.Length);
|
||||
|
||||
@@ -65,7 +65,7 @@ public sealed partial class Amg
|
||||
|
||||
if(fh.pathLength > 0)
|
||||
{
|
||||
byte[] buffer = new byte[fh.pathLength];
|
||||
var buffer = new byte[fh.pathLength];
|
||||
_stream.ReadExactly(buffer, 0, buffer.Length);
|
||||
string path = StringHandlers.CToString(buffer, encoding);
|
||||
path = path.Replace('\\', Path.DirectorySeparatorChar);
|
||||
@@ -74,7 +74,7 @@ public sealed partial class Amg
|
||||
|
||||
if(fh.commentLength > 0)
|
||||
{
|
||||
byte[] buffer = new byte[fh.commentLength];
|
||||
var buffer = new byte[fh.commentLength];
|
||||
_stream.ReadExactly(buffer, 0, buffer.Length);
|
||||
entry.Comment = StringHandlers.CToString(buffer, encoding);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ public sealed partial class Arc
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<Header>()];
|
||||
var hdr = new byte[Marshal.SizeOf<Header>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -53,7 +53,7 @@ public sealed partial class Arc
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<Header>()];
|
||||
var hdr = new byte[Marshal.SizeOf<Header>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ public sealed partial class Arc
|
||||
_stream = filter.GetDataForkStream();
|
||||
_stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<Header>()];
|
||||
var hdr = new byte[Marshal.SizeOf<Header>()];
|
||||
|
||||
_stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -55,7 +55,7 @@ public sealed partial class Arc
|
||||
ArchiveSupportedFeature.SupportsFilenames |
|
||||
ArchiveSupportedFeature.HasEntryTimestamp;
|
||||
|
||||
string path = "";
|
||||
var path = "";
|
||||
string longname = null;
|
||||
string comment = null;
|
||||
string attributes = null;
|
||||
@@ -104,7 +104,7 @@ public sealed partial class Arc
|
||||
if(header.method == Method.FileInformation)
|
||||
{
|
||||
int recordsSize = header.compressed;
|
||||
int recordsRead = 0;
|
||||
var recordsRead = 0;
|
||||
|
||||
while(recordsRead < recordsSize)
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
@@ -17,7 +17,7 @@ public sealed partial class Ha
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<HaHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<HaHeader>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -37,7 +37,7 @@ public sealed partial class Ha
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<HaHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<HaHeader>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
using Aaru.CommonTypes.Enums;
|
||||
@@ -21,7 +20,7 @@ public sealed partial class Ha
|
||||
_stream = filter.GetDataForkStream();
|
||||
_stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<HaHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<HaHeader>()];
|
||||
|
||||
_stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -32,11 +31,11 @@ public sealed partial class Ha
|
||||
|
||||
_entries = [];
|
||||
|
||||
int fhLen = Marshal.SizeOf<FHeader>();
|
||||
byte[] fhBuf = new byte[fhLen];
|
||||
byte[] pathBuf = new byte[16384];
|
||||
byte[] nameBuf = new byte[256];
|
||||
int i; // Guard
|
||||
int fhLen = Marshal.SizeOf<FHeader>();
|
||||
var fhBuf = new byte[fhLen];
|
||||
var pathBuf = new byte[16384];
|
||||
var nameBuf = new byte[256];
|
||||
int i; // Guard
|
||||
|
||||
while(_stream.Position + fhLen < _stream.Length)
|
||||
{
|
||||
@@ -88,7 +87,7 @@ public sealed partial class Ha
|
||||
|
||||
int mdiLen = _stream.ReadByte();
|
||||
|
||||
byte[] mdi = new byte[mdiLen];
|
||||
var mdi = new byte[mdiLen];
|
||||
_stream.ReadExactly(mdi, 0, mdiLen);
|
||||
|
||||
string path = StringHandlers.CToString(pathBuf, encoding);
|
||||
|
||||
@@ -698,11 +698,5 @@ namespace Aaru.Archives {
|
||||
return ResourceManager.GetString("Archive_contains_0_files", resourceCulture);
|
||||
}
|
||||
}
|
||||
|
||||
internal static string Converting_negative_sector_0_of_1 {
|
||||
get {
|
||||
return ResourceManager.GetString("Converting_negative_sector_0_of_1", resourceCulture);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -350,7 +350,4 @@
|
||||
<data name="Archive_contains_0_files" xml:space="preserve">
|
||||
<value>[slateblue1]Archive contains [green]{0}[/] files[/]</value>
|
||||
</data>
|
||||
<data name="Converting_negative_sector_0_of_1" xml:space="preserve">
|
||||
<value>[slateblue1]Converting sector -[lime]{0}[/] of -[violet]{1}[/][/]</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -34,8 +34,8 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2021-2025 Michael Drüing
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2021-2026 Michael Drüing
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using Aaru.CommonTypes.Interfaces;
|
||||
|
||||
@@ -12,6 +12,11 @@ namespace Aaru.Archives;
|
||||
|
||||
public sealed partial class Stfs
|
||||
{
|
||||
static void ReverseShorts(byte[] shorts, int start, int count)
|
||||
{
|
||||
for(int i = start; i < start + count; i += 2) (shorts[i], shorts[i + 1]) = (shorts[i + 1], shorts[i]);
|
||||
}
|
||||
|
||||
#region IArchive Members
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -22,7 +27,7 @@ public sealed partial class Stfs
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<RemotePackage>()];
|
||||
var hdr = new byte[Marshal.SizeOf<RemotePackage>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -44,7 +49,7 @@ public sealed partial class Stfs
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<RemotePackage>()];
|
||||
var hdr = new byte[Marshal.SizeOf<RemotePackage>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -133,35 +138,36 @@ public sealed partial class Stfs
|
||||
sb.AppendFormat(Localization.Descriptor_type_0, header.Metadata.DescriptorType).AppendLine();
|
||||
|
||||
foreach(LocalizedString displayName in
|
||||
header.Metadata.DisplayName.Where(displayName => displayName.Name is not ""))
|
||||
header.Metadata.DisplayName.Where(static displayName => displayName.Name is not ""))
|
||||
sb.AppendFormat(Localization.Display_name_0, Markup.Escape(displayName.Name)).AppendLine();
|
||||
|
||||
foreach(LocalizedString description in
|
||||
header.Metadata.DisplayDescription.Where(description => description.Name is not ""))
|
||||
header.Metadata.DisplayDescription.Where(static description => description.Name is not ""))
|
||||
sb.AppendFormat(Localization.Display_description_0, Markup.Escape(description.Name)).AppendLine();
|
||||
|
||||
if(header.Metadata.DeviceId.Any(c => c != 0x00))
|
||||
if(header.Metadata.DeviceId.Any(static c => c != 0x00))
|
||||
{
|
||||
sb.AppendFormat(Localization.Device_ID_0,
|
||||
StringHandlers.CToString(header.Metadata.DeviceId, Encoding.ASCII).Trim())
|
||||
.AppendLine();
|
||||
}
|
||||
|
||||
if(header.Metadata.ConsoleId.Any(c => c != 0x00))
|
||||
if(header.Metadata.ConsoleId.Any(static c => c != 0x00))
|
||||
{
|
||||
sb.AppendFormat(Localization.Console_ID_0,
|
||||
BitConverter.ToString(header.Metadata.ConsoleId).Replace("-", ""))
|
||||
.AppendLine();
|
||||
}
|
||||
|
||||
if(header.Metadata.ProfileId.Any(c => c != 0x00))
|
||||
if(header.Metadata.ProfileId.Any(static c => c != 0x00))
|
||||
{
|
||||
sb.AppendFormat(Localization.Profile_ID_0,
|
||||
BitConverter.ToString(header.Metadata.ProfileId).Replace("-", ""))
|
||||
.AppendLine();
|
||||
}
|
||||
|
||||
information = sb.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
static void ReverseShorts(byte[] shorts, int start, int count)
|
||||
{
|
||||
for(int i = start; i < start + count; i += 2) (shorts[i], shorts[i + 1]) = (shorts[i + 1], shorts[i]);
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ public sealed partial class Stfs
|
||||
_stream = filter.GetDataForkStream();
|
||||
_stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<RemotePackage>()];
|
||||
var hdr = new byte[Marshal.SizeOf<RemotePackage>()];
|
||||
|
||||
_stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -46,13 +46,13 @@ public sealed partial class Stfs
|
||||
|
||||
int fileTablePosition = BlockToPosition(fileTableBlockNumber, (int)header.Metadata.HeaderSize);
|
||||
|
||||
byte[] buffer = new byte[4096 * vd.FileTableBlockCount];
|
||||
var buffer = new byte[4096 * vd.FileTableBlockCount];
|
||||
_stream.Position = fileTablePosition;
|
||||
_stream.ReadExactly(buffer, 0, buffer.Length);
|
||||
|
||||
List<FileTableEntry> entries = [];
|
||||
int entrySize = Marshal.SizeOf<FileTableEntry>();
|
||||
int in_pos = 0;
|
||||
var in_pos = 0;
|
||||
|
||||
do
|
||||
{
|
||||
@@ -67,11 +67,11 @@ public sealed partial class Stfs
|
||||
|
||||
_entries = new FileEntry[entries.Count];
|
||||
|
||||
for(int i = 0; i < entries.Count; i++)
|
||||
for(var i = 0; i < entries.Count; i++)
|
||||
{
|
||||
// While entries[i].PathIndicator > 0 recursively inversely prepend entries[PathIndicator].Filename to entries[i].Filename
|
||||
int pathIndicator = entries[i].PathIndicator;
|
||||
string path = "";
|
||||
int pathIndicator = entries[i].PathIndicator;
|
||||
var path = "";
|
||||
|
||||
while(pathIndicator > 0)
|
||||
{
|
||||
|
||||
@@ -54,7 +54,7 @@ public sealed partial class Stfs
|
||||
/// <inheritdoc />
|
||||
public override int Read(byte[] buffer, int offset, int count)
|
||||
{
|
||||
int totalRead = 0;
|
||||
var totalRead = 0;
|
||||
|
||||
// Validate parameters
|
||||
ArgumentNullException.ThrowIfNull(buffer);
|
||||
@@ -73,7 +73,7 @@ public sealed partial class Stfs
|
||||
_isConsole);
|
||||
|
||||
// Calculate position within block
|
||||
int blockOffset = (int)(_position % 0x1000);
|
||||
var blockOffset = (int)(_position % 0x1000);
|
||||
|
||||
// Calculate absolute position in the stream
|
||||
long absolutePosition = BlockToPosition(currentBlock, _headerSize) + blockOffset;
|
||||
@@ -138,7 +138,7 @@ public sealed partial class Stfs
|
||||
_baseStream.Position = absolutePosition + leftInBlock;
|
||||
|
||||
// Read remaining bytes
|
||||
int toRead = (int)Math.Min(count, _length - _position);
|
||||
var toRead = (int)Math.Min(count, _length - _position);
|
||||
_baseStream.ReadExactly(buffer, offset, toRead);
|
||||
_position += toRead;
|
||||
totalRead += toRead;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
@@ -55,7 +55,7 @@ public sealed partial class Symbian
|
||||
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<SymbianHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<SymbianHeader>()];
|
||||
|
||||
stream.EnsureRead(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -78,7 +78,7 @@ public sealed partial class Symbian
|
||||
|
||||
if(stream.Length < Marshal.SizeOf<SymbianHeader>()) return;
|
||||
|
||||
byte[] buffer = new byte[Marshal.SizeOf<SymbianHeader>()];
|
||||
var buffer = new byte[Marshal.SizeOf<SymbianHeader>()];
|
||||
|
||||
stream.Seek(0, SeekOrigin.Begin);
|
||||
stream.EnsureRead(buffer, 0, buffer.Length);
|
||||
@@ -164,7 +164,7 @@ public sealed partial class Symbian
|
||||
|
||||
// Go to enumerate languages
|
||||
br.BaseStream.Seek(sh.lang_ptr, SeekOrigin.Begin);
|
||||
for(int i = 0; i < sh.languages; i++) languages.Add(((LanguageCodes)br.ReadUInt16()).ToString("G"));
|
||||
for(var i = 0; i < sh.languages; i++) languages.Add(((LanguageCodes)br.ReadUInt16()).ToString("G"));
|
||||
|
||||
// Go to component record
|
||||
br.BaseStream.Seek(sh.comp_ptr, SeekOrigin.Begin);
|
||||
@@ -186,7 +186,7 @@ public sealed partial class Symbian
|
||||
span = buffer;
|
||||
componentRecord.namesPointers = MemoryMarshal.Cast<byte, uint>(span)[..languages.Count].ToArray();
|
||||
|
||||
for(int i = 0; i < sh.languages; i++)
|
||||
for(var i = 0; i < sh.languages; i++)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.Found_component_name_for_language_0_at_1_with_a_length_of_2_bytes,
|
||||
@@ -202,7 +202,7 @@ public sealed partial class Symbian
|
||||
// Go to capabilities (???)
|
||||
br.BaseStream.Seek(sh.caps_ptr, SeekOrigin.Begin);
|
||||
|
||||
for(int i = 0; i < sh.capabilities; i++)
|
||||
for(var i = 0; i < sh.capabilities; i++)
|
||||
{
|
||||
uint cap_Key = br.ReadUInt32();
|
||||
uint cap_Value = br.ReadUInt32();
|
||||
@@ -228,7 +228,7 @@ public sealed partial class Symbian
|
||||
|
||||
description.AppendFormat(Localization.File_contains_0_languages, sh.languages).AppendLine();
|
||||
|
||||
for(int i = 0; i < languages.Count; i++)
|
||||
for(var i = 0; i < languages.Count; i++)
|
||||
{
|
||||
if(i > 0) description.Append(", ");
|
||||
description.Append($"[italic][rosybrown]{languages[i]}[/][/]");
|
||||
@@ -237,7 +237,7 @@ public sealed partial class Symbian
|
||||
description.AppendLine();
|
||||
description.AppendLine();
|
||||
|
||||
for(int i = 0; i < languages.Count; i++)
|
||||
for(var i = 0; i < languages.Count; i++)
|
||||
{
|
||||
description.AppendFormat(Localization.Component_name_for_language_with_code_0_1,
|
||||
languages[i],
|
||||
@@ -254,7 +254,7 @@ public sealed partial class Symbian
|
||||
|
||||
if(sh.requisites > 0)
|
||||
{
|
||||
for(int r = 0; r < sh.requisites; r++)
|
||||
for(var r = 0; r < sh.requisites; r++)
|
||||
{
|
||||
br.BaseStream.Seek(offset, SeekOrigin.Begin);
|
||||
|
||||
@@ -286,7 +286,7 @@ public sealed partial class Symbian
|
||||
|
||||
offset = (uint)br.BaseStream.Position;
|
||||
|
||||
for(int i = 0; i < languages.Count; i++)
|
||||
for(var i = 0; i < languages.Count; i++)
|
||||
{
|
||||
br.BaseStream.Seek(requisiteRecord.namesPointers[i], SeekOrigin.Begin);
|
||||
buffer = br.ReadBytes((int)requisiteRecord.namesLengths[i]);
|
||||
@@ -311,7 +311,7 @@ public sealed partial class Symbian
|
||||
|
||||
uint currentFile = 0;
|
||||
offset = sh.files_ptr;
|
||||
int conditionLevel = 0;
|
||||
var conditionLevel = 0;
|
||||
_options = [];
|
||||
|
||||
// Get only the options records
|
||||
@@ -338,11 +338,11 @@ public sealed partial class Symbian
|
||||
// Conditions do as well
|
||||
_conditions.Reverse();
|
||||
|
||||
if(_files.Any(t => t.language is null))
|
||||
if(_files.Any(static t => t.language is null))
|
||||
{
|
||||
description.AppendLine(Localization.Files_for_all_languages);
|
||||
|
||||
foreach(DecodedFileRecord file in _files.Where(t => t.language is null))
|
||||
foreach(DecodedFileRecord file in _files.Where(static t => t.language is null))
|
||||
description.AppendLine($"[green]{Markup.Escape(file.destinationName)}[/]");
|
||||
|
||||
description.AppendLine();
|
||||
@@ -362,7 +362,7 @@ public sealed partial class Symbian
|
||||
|
||||
if(_options.Count > 0)
|
||||
{
|
||||
for(int i = 0; i < _options.Count; i++)
|
||||
for(var i = 0; i < _options.Count; i++)
|
||||
{
|
||||
OptionRecord option = _options[i];
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Collections.Generic;
|
||||
@@ -56,7 +56,7 @@ public sealed partial class Symbian
|
||||
|
||||
if(_stream.Length < Marshal.SizeOf<SymbianHeader>()) return ErrorNumber.InvalidArgument;
|
||||
|
||||
byte[] buffer = new byte[Marshal.SizeOf<SymbianHeader>()];
|
||||
var buffer = new byte[Marshal.SizeOf<SymbianHeader>()];
|
||||
|
||||
_stream.Seek(0, SeekOrigin.Begin);
|
||||
_stream.EnsureRead(buffer, 0, buffer.Length);
|
||||
@@ -123,7 +123,7 @@ public sealed partial class Symbian
|
||||
|
||||
// Go to enumerate languages
|
||||
br.BaseStream.Seek(sh.lang_ptr, SeekOrigin.Begin);
|
||||
for(int i = 0; i < sh.languages; i++) languages.Add(((LanguageCodes)br.ReadUInt16()).ToString("G"));
|
||||
for(var i = 0; i < sh.languages; i++) languages.Add(((LanguageCodes)br.ReadUInt16()).ToString("G"));
|
||||
|
||||
_files = [];
|
||||
_conditions = [];
|
||||
@@ -131,7 +131,7 @@ public sealed partial class Symbian
|
||||
|
||||
uint currentFile = 0;
|
||||
uint offset = sh.files_ptr;
|
||||
int conditionLevel = 0;
|
||||
var conditionLevel = 0;
|
||||
|
||||
// Get only the options records
|
||||
do
|
||||
@@ -178,7 +178,7 @@ public sealed partial class Symbian
|
||||
_compressed = true;
|
||||
}
|
||||
|
||||
if(_files.Any(t => t.mime is not null)) _features |= ArchiveSupportedFeature.SupportsXAttrs;
|
||||
if(_files.Any(static t => t.mime is not null)) _features |= ArchiveSupportedFeature.SupportsXAttrs;
|
||||
|
||||
Opened = true;
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
@@ -51,15 +51,11 @@ public sealed partial class Symbian
|
||||
|
||||
if(currentFile > maxFiles) return;
|
||||
|
||||
char[] tabulationChars = new char[conditionLevel];
|
||||
for(int i = 0; i < conditionLevel; i++) tabulationChars[i] = '\t';
|
||||
var tabulationChars = new char[conditionLevel];
|
||||
for(var i = 0; i < conditionLevel; i++) tabulationChars[i] = '\t';
|
||||
string tabulation = new(tabulationChars);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Seeking to {0} for parsing of file {1} of {2}",
|
||||
offset,
|
||||
currentFile,
|
||||
maxFiles);
|
||||
AaruLogging.Debug(MODULE_NAME, "Seeking to {0} for parsing of file {1} of {2}", offset, currentFile, maxFiles);
|
||||
|
||||
br.BaseStream.Seek(offset, SeekOrigin.Begin);
|
||||
var recordType = (FileRecordType)br.ReadUInt32();
|
||||
@@ -119,10 +115,10 @@ public sealed partial class Symbian
|
||||
}
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Found file for \"{0}\" with length {1} at {2}",
|
||||
decodedFileRecord.destinationName,
|
||||
decodedFileRecord.length,
|
||||
decodedFileRecord.pointer);
|
||||
"Found file for \"{0}\" with length {1} at {2}",
|
||||
decodedFileRecord.destinationName,
|
||||
decodedFileRecord.length,
|
||||
decodedFileRecord.pointer);
|
||||
|
||||
_files.Add(decodedFileRecord);
|
||||
|
||||
@@ -323,7 +319,7 @@ public sealed partial class Symbian
|
||||
|
||||
var decodedFileRecords = new DecodedFileRecord[languages.Count];
|
||||
|
||||
for(int i = 0; i < languages.Count; i++)
|
||||
for(var i = 0; i < languages.Count; i++)
|
||||
{
|
||||
decodedFileRecords[i].type = multipleFileRecord.record.type;
|
||||
decodedFileRecords[i].details = multipleFileRecord.record.details;
|
||||
@@ -488,7 +484,7 @@ public sealed partial class Symbian
|
||||
|
||||
optionsLineRecord.options = new OptionRecord[(int)optionsLineRecord.numberOfOptions];
|
||||
|
||||
for(int i = 0; i < optionsLineRecord.numberOfOptions; i++)
|
||||
for(var i = 0; i < optionsLineRecord.numberOfOptions; i++)
|
||||
{
|
||||
optionsLineRecord.options[i] = new OptionRecord();
|
||||
|
||||
@@ -508,7 +504,7 @@ public sealed partial class Symbian
|
||||
|
||||
offset = (uint)br.BaseStream.Position;
|
||||
|
||||
for(int j = 0; j < languages.Count; j++)
|
||||
for(var j = 0; j < languages.Count; j++)
|
||||
{
|
||||
br.BaseStream.Seek(optionsLineRecord.options[i].pointers[j], SeekOrigin.Begin);
|
||||
buffer = br.ReadBytes((int)optionsLineRecord.options[i].lengths[j]);
|
||||
@@ -527,7 +523,7 @@ public sealed partial class Symbian
|
||||
conditionLevel--;
|
||||
|
||||
tabulationChars = new char[conditionLevel];
|
||||
for(int i = 0; i < conditionLevel; i++) tabulationChars[i] = '\t';
|
||||
for(var i = 0; i < conditionLevel; i++) tabulationChars[i] = '\t';
|
||||
tabulation = new string(tabulationChars);
|
||||
|
||||
conditionalRecord = new ConditionalRecord
|
||||
@@ -552,7 +548,7 @@ public sealed partial class Symbian
|
||||
break;
|
||||
case FileRecordType.ElseIf:
|
||||
tabulationChars = new char[conditionLevel - 1];
|
||||
for(int i = 0; i < conditionLevel - 1; i++) tabulationChars[i] = '\t';
|
||||
for(var i = 0; i < conditionLevel - 1; i++) tabulationChars[i] = '\t';
|
||||
tabulation = new string(tabulationChars);
|
||||
|
||||
conditionalRecord = new ConditionalRecord
|
||||
@@ -577,7 +573,7 @@ public sealed partial class Symbian
|
||||
break;
|
||||
case FileRecordType.Else:
|
||||
tabulationChars = new char[conditionLevel - 1];
|
||||
for(int i = 0; i < conditionLevel - 1; i++) tabulationChars[i] = '\t';
|
||||
for(var i = 0; i < conditionLevel - 1; i++) tabulationChars[i] = '\t';
|
||||
tabulation = new string(tabulationChars);
|
||||
|
||||
offset = (uint)(br.BaseStream.Position + Marshal.SizeOf<ConditionalEndRecord>());
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
namespace Aaru.Archives;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// Copied from zoo.h
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.IO;
|
||||
@@ -48,7 +48,7 @@ public sealed partial class Zoo
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<ZooHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<ZooHeader>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -67,7 +67,7 @@ public sealed partial class Zoo
|
||||
Stream stream = filter.GetDataForkStream();
|
||||
stream.Position = 0;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<ZooHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<ZooHeader>()];
|
||||
|
||||
stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -105,7 +105,7 @@ public sealed partial class Zoo
|
||||
|
||||
if(header.acmt_len > 0)
|
||||
{
|
||||
byte[] buffer = new byte[header.acmt_len];
|
||||
var buffer = new byte[header.acmt_len];
|
||||
stream.Position = header.acmt_pos;
|
||||
encoding ??= Encoding.UTF8;
|
||||
stream.ReadExactly(buffer, 0, buffer.Length);
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
@@ -56,7 +56,7 @@ public sealed partial class Zoo
|
||||
ArchiveSupportedFeature.SupportsFilenames |
|
||||
ArchiveSupportedFeature.SupportsSubdirectories;
|
||||
|
||||
byte[] hdr = new byte[Marshal.SizeOf<ZooHeader>()];
|
||||
var hdr = new byte[Marshal.SizeOf<ZooHeader>()];
|
||||
|
||||
_stream.ReadExactly(hdr, 0, hdr.Length);
|
||||
|
||||
@@ -86,7 +86,7 @@ public sealed partial class Zoo
|
||||
|
||||
do
|
||||
{
|
||||
byte[] buf = new byte[Marshal.SizeOf<Direntry>()];
|
||||
var buf = new byte[Marshal.SizeOf<Direntry>()];
|
||||
|
||||
if(_stream.Position + buf.Length >= _stream.Length) break;
|
||||
|
||||
@@ -94,7 +94,7 @@ public sealed partial class Zoo
|
||||
|
||||
entry = Marshal.ByteArrayToStructureLittleEndian<Direntry>(buf);
|
||||
|
||||
int pos = 56; // dir_crc
|
||||
var pos = 56; // dir_crc
|
||||
|
||||
if(entry.namlen > 0)
|
||||
{
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// Copied from zoo.h
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -50,7 +50,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Aaru.Checksums.Native"/>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection"/>
|
||||
<PackageReference Include="Sentry" />
|
||||
<PackageReference Include="Sentry"/>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Aaru.Generators\Aaru.Generators.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/>
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
// ****************************************************************************/
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
// ****************************************************************************/
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@
|
||||
// 3. This notice may not be removed or altered from any source distribution.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// Copyright (C) 1995-2011 Mark Adler
|
||||
// Copyright (C) Jean-loup Gailly
|
||||
// ****************************************************************************/
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// along with this program.If not, see<http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ECC algorithm from ECM(c) 2002-2011 Neill Corlett
|
||||
// ****************************************************************************/
|
||||
|
||||
@@ -82,8 +82,8 @@ public static class CdChecksums
|
||||
{
|
||||
case 2448:
|
||||
{
|
||||
byte[] subchannel = new byte[96];
|
||||
byte[] channel = new byte[2352];
|
||||
var subchannel = new byte[96];
|
||||
var channel = new byte[2352];
|
||||
|
||||
Array.Copy(buffer, 0, channel, 0, 2352);
|
||||
Array.Copy(buffer, 2352, subchannel, 0, 96);
|
||||
@@ -121,7 +121,7 @@ public static class CdChecksums
|
||||
for(uint i = 0; i < 256; i++)
|
||||
{
|
||||
uint edc = i;
|
||||
uint j = (uint)(i << 1 ^ ((i & 0x80) == 0x80 ? 0x11D : 0));
|
||||
var j = (uint)(i << 1 ^ ((i & 0x80) == 0x80 ? 0x11D : 0));
|
||||
_eccFTable[i] = (byte)j;
|
||||
_eccBTable[i ^ j] = (byte)i;
|
||||
|
||||
@@ -197,15 +197,15 @@ public static class CdChecksums
|
||||
{
|
||||
//AaruLogging.DebugWriteLine(MODULE_NAME, "Mode 0 sector at address {0:X2}:{1:X2}:{2:X2}",
|
||||
// channel[0x00C], channel[0x00D], channel[0x00E]);
|
||||
for(int i = 0x010; i < 0x930; i++)
|
||||
for(var i = 0x010; i < 0x930; i++)
|
||||
{
|
||||
if(channel[i] == 0x00) continue;
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 0 sector with error at address: {0:X2}:{1:X2}:{2:X2}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Mode 0 sector with error at address: {0:X2}:{1:X2}:{2:X2}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -225,19 +225,19 @@ public static class CdChecksums
|
||||
channel[0x81A] != 0x00 ||
|
||||
channel[0x81B] != 0x00:
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 1 sector with data in reserved bytes at address: {0:X2}:{1:X2}:{2:X2}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Mode 1 sector with data in reserved bytes at address: {0:X2}:{1:X2}:{2:X2}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
|
||||
return false;
|
||||
case 0x01:
|
||||
{
|
||||
byte[] address = new byte[4];
|
||||
byte[] data = new byte[2060];
|
||||
byte[] data2 = new byte[2232];
|
||||
byte[] eccP = new byte[172];
|
||||
byte[] eccQ = new byte[104];
|
||||
var address = new byte[4];
|
||||
var data = new byte[2060];
|
||||
var data2 = new byte[2232];
|
||||
var eccP = new byte[172];
|
||||
var eccQ = new byte[104];
|
||||
|
||||
Array.Copy(channel, 0x0C, address, 0, 4);
|
||||
Array.Copy(channel, 0x10, data, 0, 2060);
|
||||
@@ -254,22 +254,22 @@ public static class CdChecksums
|
||||
if(failedEccP)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 1 sector at address: {0:X2}:{1:X2}:{2:X2}, fails ECC P check",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Mode 1 sector at address: {0:X2}:{1:X2}:{2:X2}, fails ECC P check",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
}
|
||||
|
||||
if(failedEccQ)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 1 sector at address: {0:X2}:{1:X2}:{2:X2}, fails ECC Q check",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Mode 1 sector at address: {0:X2}:{1:X2}:{2:X2}, fails ECC Q check",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
}
|
||||
|
||||
uint storedEdc = BitConverter.ToUInt32(channel, 0x810);
|
||||
var storedEdc = BitConverter.ToUInt32(channel, 0x810);
|
||||
uint calculatedEdc = ComputeEdc(0, channel, 0x810);
|
||||
|
||||
correctEdc = calculatedEdc == storedEdc;
|
||||
@@ -277,12 +277,12 @@ public static class CdChecksums
|
||||
if(calculatedEdc == storedEdc) return !failedEccP && !failedEccQ;
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 1 sector at address: {0:X2}:{1:X2}:{2:X2}, got CRC 0x{3:X8} expected 0x{4:X8}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E],
|
||||
calculatedEdc,
|
||||
storedEdc);
|
||||
"Mode 1 sector at address: {0:X2}:{1:X2}:{2:X2}, got CRC 0x{3:X8} expected 0x{4:X8}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E],
|
||||
calculatedEdc,
|
||||
storedEdc);
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -292,7 +292,7 @@ public static class CdChecksums
|
||||
{
|
||||
//AaruLogging.DebugWriteLine(MODULE_NAME, "Mode 2 sector at address {0:X2}:{1:X2}:{2:X2}",
|
||||
// channel[0x00C], channel[0x00D], channel[0x00E]);
|
||||
byte[] mode2Sector = new byte[channel.Length - 0x10];
|
||||
var mode2Sector = new byte[channel.Length - 0x10];
|
||||
Array.Copy(channel, 0x10, mode2Sector, 0, mode2Sector.Length);
|
||||
|
||||
if((channel[0x012] & 0x20) == 0x20) // mode 2 form 2
|
||||
@@ -303,13 +303,13 @@ public static class CdChecksums
|
||||
channel[0x013] != channel[0x017])
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Subheader copies differ in mode 2 form 2 sector at address: {0:X2}:{1:X2}:{2:X2}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Subheader copies differ in mode 2 form 2 sector at address: {0:X2}:{1:X2}:{2:X2}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
}
|
||||
|
||||
uint storedEdc = BitConverter.ToUInt32(mode2Sector, 0x91C);
|
||||
var storedEdc = BitConverter.ToUInt32(mode2Sector, 0x91C);
|
||||
|
||||
// No CRC stored!
|
||||
if(storedEdc == 0x00000000) return true;
|
||||
@@ -321,12 +321,12 @@ public static class CdChecksums
|
||||
if(calculatedEdc == storedEdc) return true;
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 2 form 2 sector at address: {0:X2}:{1:X2}:{2:X2}, got CRC 0x{3:X8} expected 0x{4:X8}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E],
|
||||
calculatedEdc,
|
||||
storedEdc);
|
||||
"Mode 2 form 2 sector at address: {0:X2}:{1:X2}:{2:X2}, got CRC 0x{3:X8} expected 0x{4:X8}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E],
|
||||
calculatedEdc,
|
||||
storedEdc);
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -338,15 +338,15 @@ public static class CdChecksums
|
||||
channel[0x013] != channel[0x017])
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Subheader copies differ in mode 2 form 1 sector at address: {0:X2}:{1:X2}:{2:X2}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Subheader copies differ in mode 2 form 1 sector at address: {0:X2}:{1:X2}:{2:X2}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
}
|
||||
|
||||
byte[] address = new byte[4];
|
||||
byte[] eccP = new byte[172];
|
||||
byte[] eccQ = new byte[104];
|
||||
var address = new byte[4];
|
||||
var eccP = new byte[172];
|
||||
var eccQ = new byte[104];
|
||||
|
||||
Array.Copy(mode2Sector, 0x80C, eccP, 0, 172);
|
||||
Array.Copy(mode2Sector, 0x8B8, eccQ, 0, 104);
|
||||
@@ -360,22 +360,22 @@ public static class CdChecksums
|
||||
if(failedEccP)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 2 form 1 sector at address: {0:X2}:{1:X2}:{2:X2}, fails ECC P check",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Mode 2 form 1 sector at address: {0:X2}:{1:X2}:{2:X2}, fails ECC P check",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
}
|
||||
|
||||
if(failedEccQ)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 2 form 1 sector at address: {0:X2}:{1:X2}:{2:X2}, fails ECC Q check",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Mode 2 form 1 sector at address: {0:X2}:{1:X2}:{2:X2}, fails ECC Q check",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
}
|
||||
|
||||
uint storedEdc = BitConverter.ToUInt32(mode2Sector, 0x808);
|
||||
var storedEdc = BitConverter.ToUInt32(mode2Sector, 0x808);
|
||||
uint calculatedEdc = ComputeEdc(0, mode2Sector, 0x808);
|
||||
|
||||
correctEdc = calculatedEdc == storedEdc;
|
||||
@@ -383,23 +383,23 @@ public static class CdChecksums
|
||||
if(calculatedEdc == storedEdc) return !failedEccP && !failedEccQ;
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Mode 2 sector at address: {0:X2}:{1:X2}:{2:X2}, got CRC 0x{3:X8} expected 0x{4:X8}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E],
|
||||
calculatedEdc,
|
||||
storedEdc);
|
||||
"Mode 2 sector at address: {0:X2}:{1:X2}:{2:X2}, got CRC 0x{3:X8} expected 0x{4:X8}",
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E],
|
||||
calculatedEdc,
|
||||
storedEdc);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
default:
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
"Unknown mode {0} sector at address: {1:X2}:{2:X2}:{3:X2}",
|
||||
channel[0x00F],
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
"Unknown mode {0} sector at address: {1:X2}:{2:X2}:{3:X2}",
|
||||
channel[0x00F],
|
||||
channel[0x00C],
|
||||
channel[0x00D],
|
||||
channel[0x00E]);
|
||||
|
||||
return null;
|
||||
}
|
||||
@@ -407,7 +407,7 @@ public static class CdChecksums
|
||||
|
||||
static uint ComputeEdc(uint edc, IReadOnlyList<byte> src, int size)
|
||||
{
|
||||
int pos = 0;
|
||||
var pos = 0;
|
||||
|
||||
for(; size > 0; size--) edc = edc >> 8 ^ _edcTable[(edc ^ src[pos++]) & 0xFF];
|
||||
|
||||
@@ -416,22 +416,22 @@ public static class CdChecksums
|
||||
|
||||
static bool? CheckCdSectorSubChannel(IReadOnlyList<byte> subchannel)
|
||||
{
|
||||
bool? status = true;
|
||||
byte[] qSubChannel = new byte[12];
|
||||
byte[] cdTextPack1 = new byte[18];
|
||||
byte[] cdTextPack2 = new byte[18];
|
||||
byte[] cdTextPack3 = new byte[18];
|
||||
byte[] cdTextPack4 = new byte[18];
|
||||
byte[] cdSubRwPack1 = new byte[24];
|
||||
byte[] cdSubRwPack2 = new byte[24];
|
||||
byte[] cdSubRwPack3 = new byte[24];
|
||||
byte[] cdSubRwPack4 = new byte[24];
|
||||
bool? status = true;
|
||||
var qSubChannel = new byte[12];
|
||||
var cdTextPack1 = new byte[18];
|
||||
var cdTextPack2 = new byte[18];
|
||||
var cdTextPack3 = new byte[18];
|
||||
var cdTextPack4 = new byte[18];
|
||||
var cdSubRwPack1 = new byte[24];
|
||||
var cdSubRwPack2 = new byte[24];
|
||||
var cdSubRwPack3 = new byte[24];
|
||||
var cdSubRwPack4 = new byte[24];
|
||||
|
||||
int i = 0;
|
||||
var i = 0;
|
||||
|
||||
for(int j = 0; j < 12; j++) qSubChannel[j] = 0;
|
||||
for(var j = 0; j < 12; j++) qSubChannel[j] = 0;
|
||||
|
||||
for(int j = 0; j < 18; j++)
|
||||
for(var j = 0; j < 18; j++)
|
||||
{
|
||||
cdTextPack1[j] = 0;
|
||||
cdTextPack2[j] = 0;
|
||||
@@ -439,7 +439,7 @@ public static class CdChecksums
|
||||
cdTextPack4[j] = 0;
|
||||
}
|
||||
|
||||
for(int j = 0; j < 24; j++)
|
||||
for(var j = 0; j < 24; j++)
|
||||
{
|
||||
cdSubRwPack1[j] = 0;
|
||||
cdSubRwPack2[j] = 0;
|
||||
@@ -447,7 +447,7 @@ public static class CdChecksums
|
||||
cdSubRwPack4[j] = 0;
|
||||
}
|
||||
|
||||
for(int j = 0; j < 12; j++)
|
||||
for(var j = 0; j < 12; j++)
|
||||
{
|
||||
qSubChannel[j] = (byte)(qSubChannel[j] | (subchannel[i++] & 0x40) << 1);
|
||||
qSubChannel[j] = (byte)(qSubChannel[j] | subchannel[i++] & 0x40);
|
||||
@@ -461,7 +461,7 @@ public static class CdChecksums
|
||||
|
||||
i = 0;
|
||||
|
||||
for(int j = 0; j < 18; j++)
|
||||
for(var j = 0; j < 18; j++)
|
||||
{
|
||||
cdTextPack1[j] = (byte)(cdTextPack1[j] | (subchannel[i++] & 0x3F) << 2);
|
||||
|
||||
@@ -476,7 +476,7 @@ public static class CdChecksums
|
||||
cdTextPack1[j] = (byte)(cdTextPack1[j] | subchannel[i++] & 0x3F);
|
||||
}
|
||||
|
||||
for(int j = 0; j < 18; j++)
|
||||
for(var j = 0; j < 18; j++)
|
||||
{
|
||||
cdTextPack2[j] = (byte)(cdTextPack2[j] | (subchannel[i++] & 0x3F) << 2);
|
||||
|
||||
@@ -491,7 +491,7 @@ public static class CdChecksums
|
||||
cdTextPack2[j] = (byte)(cdTextPack2[j] | subchannel[i++] & 0x3F);
|
||||
}
|
||||
|
||||
for(int j = 0; j < 18; j++)
|
||||
for(var j = 0; j < 18; j++)
|
||||
{
|
||||
cdTextPack3[j] = (byte)(cdTextPack3[j] | (subchannel[i++] & 0x3F) << 2);
|
||||
|
||||
@@ -506,7 +506,7 @@ public static class CdChecksums
|
||||
cdTextPack3[j] = (byte)(cdTextPack3[j] | subchannel[i++] & 0x3F);
|
||||
}
|
||||
|
||||
for(int j = 0; j < 18; j++)
|
||||
for(var j = 0; j < 18; j++)
|
||||
{
|
||||
cdTextPack4[j] = (byte)(cdTextPack4[j] | (subchannel[i++] & 0x3F) << 2);
|
||||
|
||||
@@ -523,13 +523,13 @@ public static class CdChecksums
|
||||
|
||||
i = 0;
|
||||
|
||||
for(int j = 0; j < 24; j++) cdSubRwPack1[j] = (byte)(subchannel[i++] & 0x3F);
|
||||
for(var j = 0; j < 24; j++) cdSubRwPack1[j] = (byte)(subchannel[i++] & 0x3F);
|
||||
|
||||
for(int j = 0; j < 24; j++) cdSubRwPack2[j] = (byte)(subchannel[i++] & 0x3F);
|
||||
for(var j = 0; j < 24; j++) cdSubRwPack2[j] = (byte)(subchannel[i++] & 0x3F);
|
||||
|
||||
for(int j = 0; j < 24; j++) cdSubRwPack3[j] = (byte)(subchannel[i++] & 0x3F);
|
||||
for(var j = 0; j < 24; j++) cdSubRwPack3[j] = (byte)(subchannel[i++] & 0x3F);
|
||||
|
||||
for(int j = 0; j < 24; j++) cdSubRwPack4[j] = (byte)(subchannel[i++] & 0x3F);
|
||||
for(var j = 0; j < 24; j++) cdSubRwPack4[j] = (byte)(subchannel[i++] & 0x3F);
|
||||
|
||||
switch(cdSubRwPack1[0])
|
||||
{
|
||||
@@ -563,41 +563,38 @@ public static class CdChecksums
|
||||
break;
|
||||
default:
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.Detected_unknown_Pack_type_in_subchannel_mode_0_item_1,
|
||||
Convert.ToString(cdSubRwPack1[0] & 0x38, 2),
|
||||
Convert.ToString(cdSubRwPack1[0] & 0x07, 2));
|
||||
Localization.Detected_unknown_Pack_type_in_subchannel_mode_0_item_1,
|
||||
Convert.ToString(cdSubRwPack1[0] & 0x38, 2),
|
||||
Convert.ToString(cdSubRwPack1[0] & 0x07, 2));
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
ushort qSubChannelCrc = BigEndianBitConverter.ToUInt16(qSubChannel, 10);
|
||||
byte[] qSubChannelForCrc = new byte[10];
|
||||
var qSubChannelCrc = BigEndianBitConverter.ToUInt16(qSubChannel, 10);
|
||||
var qSubChannelForCrc = new byte[10];
|
||||
Array.Copy(qSubChannel, 0, qSubChannelForCrc, 0, 10);
|
||||
ushort calculatedQcrc = CRC16CcittContext.Calculate(qSubChannelForCrc);
|
||||
|
||||
if(qSubChannelCrc != calculatedQcrc)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.Q_subchannel_CRC_0_expected_1,
|
||||
calculatedQcrc,
|
||||
qSubChannelCrc);
|
||||
AaruLogging.Debug(MODULE_NAME, Localization.Q_subchannel_CRC_0_expected_1, calculatedQcrc, qSubChannelCrc);
|
||||
|
||||
status = false;
|
||||
}
|
||||
|
||||
if((cdTextPack1[0] & 0x80) == 0x80)
|
||||
{
|
||||
ushort cdTextPack1Crc = BigEndianBitConverter.ToUInt16(cdTextPack1, 16);
|
||||
byte[] cdTextPack1ForCrc = new byte[16];
|
||||
var cdTextPack1Crc = BigEndianBitConverter.ToUInt16(cdTextPack1, 16);
|
||||
var cdTextPack1ForCrc = new byte[16];
|
||||
Array.Copy(cdTextPack1, 0, cdTextPack1ForCrc, 0, 16);
|
||||
ushort calculatedCdtp1Crc = CRC16CcittContext.Calculate(cdTextPack1ForCrc);
|
||||
|
||||
if(cdTextPack1Crc != calculatedCdtp1Crc && cdTextPack1Crc != 0)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.CD_Text_Pack_one_CRC_0_expected_1,
|
||||
cdTextPack1Crc,
|
||||
calculatedCdtp1Crc);
|
||||
Localization.CD_Text_Pack_one_CRC_0_expected_1,
|
||||
cdTextPack1Crc,
|
||||
calculatedCdtp1Crc);
|
||||
|
||||
status = false;
|
||||
}
|
||||
@@ -605,22 +602,22 @@ public static class CdChecksums
|
||||
|
||||
if((cdTextPack2[0] & 0x80) == 0x80)
|
||||
{
|
||||
ushort cdTextPack2Crc = BigEndianBitConverter.ToUInt16(cdTextPack2, 16);
|
||||
byte[] cdTextPack2ForCrc = new byte[16];
|
||||
var cdTextPack2Crc = BigEndianBitConverter.ToUInt16(cdTextPack2, 16);
|
||||
var cdTextPack2ForCrc = new byte[16];
|
||||
Array.Copy(cdTextPack2, 0, cdTextPack2ForCrc, 0, 16);
|
||||
ushort calculatedCdtp2Crc = CRC16CcittContext.Calculate(cdTextPack2ForCrc);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.Cyclic_CDTP2_0_Calc_CDTP2_1,
|
||||
cdTextPack2Crc,
|
||||
calculatedCdtp2Crc);
|
||||
Localization.Cyclic_CDTP2_0_Calc_CDTP2_1,
|
||||
cdTextPack2Crc,
|
||||
calculatedCdtp2Crc);
|
||||
|
||||
if(cdTextPack2Crc != calculatedCdtp2Crc && cdTextPack2Crc != 0)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.CD_Text_Pack_two_CRC_0_expected_1,
|
||||
cdTextPack2Crc,
|
||||
calculatedCdtp2Crc);
|
||||
Localization.CD_Text_Pack_two_CRC_0_expected_1,
|
||||
cdTextPack2Crc,
|
||||
calculatedCdtp2Crc);
|
||||
|
||||
status = false;
|
||||
}
|
||||
@@ -628,22 +625,22 @@ public static class CdChecksums
|
||||
|
||||
if((cdTextPack3[0] & 0x80) == 0x80)
|
||||
{
|
||||
ushort cdTextPack3Crc = BigEndianBitConverter.ToUInt16(cdTextPack3, 16);
|
||||
byte[] cdTextPack3ForCrc = new byte[16];
|
||||
var cdTextPack3Crc = BigEndianBitConverter.ToUInt16(cdTextPack3, 16);
|
||||
var cdTextPack3ForCrc = new byte[16];
|
||||
Array.Copy(cdTextPack3, 0, cdTextPack3ForCrc, 0, 16);
|
||||
ushort calculatedCdtp3Crc = CRC16CcittContext.Calculate(cdTextPack3ForCrc);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.Cyclic_CDTP3_0_Calc_CDTP3_1,
|
||||
cdTextPack3Crc,
|
||||
calculatedCdtp3Crc);
|
||||
Localization.Cyclic_CDTP3_0_Calc_CDTP3_1,
|
||||
cdTextPack3Crc,
|
||||
calculatedCdtp3Crc);
|
||||
|
||||
if(cdTextPack3Crc != calculatedCdtp3Crc && cdTextPack3Crc != 0)
|
||||
{
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.CD_Text_Pack_three_CRC_0_expected_1,
|
||||
cdTextPack3Crc,
|
||||
calculatedCdtp3Crc);
|
||||
Localization.CD_Text_Pack_three_CRC_0_expected_1,
|
||||
cdTextPack3Crc,
|
||||
calculatedCdtp3Crc);
|
||||
|
||||
status = false;
|
||||
}
|
||||
@@ -651,22 +648,19 @@ public static class CdChecksums
|
||||
|
||||
if((cdTextPack4[0] & 0x80) != 0x80) return status;
|
||||
|
||||
ushort cdTextPack4Crc = BigEndianBitConverter.ToUInt16(cdTextPack4, 16);
|
||||
byte[] cdTextPack4ForCrc = new byte[16];
|
||||
var cdTextPack4Crc = BigEndianBitConverter.ToUInt16(cdTextPack4, 16);
|
||||
var cdTextPack4ForCrc = new byte[16];
|
||||
Array.Copy(cdTextPack4, 0, cdTextPack4ForCrc, 0, 16);
|
||||
ushort calculatedCdtp4Crc = CRC16CcittContext.Calculate(cdTextPack4ForCrc);
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.Cyclic_CDTP4_0_Calc_CDTP4_1,
|
||||
cdTextPack4Crc,
|
||||
calculatedCdtp4Crc);
|
||||
AaruLogging.Debug(MODULE_NAME, Localization.Cyclic_CDTP4_0_Calc_CDTP4_1, cdTextPack4Crc, calculatedCdtp4Crc);
|
||||
|
||||
if(cdTextPack4Crc == calculatedCdtp4Crc || cdTextPack4Crc == 0) return status;
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.CD_Text_Pack_four_CRC_0_expected_1,
|
||||
cdTextPack4Crc,
|
||||
calculatedCdtp4Crc);
|
||||
Localization.CD_Text_Pack_four_CRC_0_expected_1,
|
||||
cdTextPack4Crc,
|
||||
calculatedCdtp4Crc);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
@@ -83,121 +83,6 @@ public partial class Crc16Context : IChecksum
|
||||
if(!_useNative) _table = table ?? GenerateTable(polynomial, inverse);
|
||||
}
|
||||
|
||||
#region IChecksum Members
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Name => "Adler-32";
|
||||
|
||||
/// <inheritdoc />
|
||||
public Guid Id => new("D69CF1E7-4A7B-4605-9291-3A1BE4C2951F");
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Author => Authors.NataliaPortillo;
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Updates the hash with data.</summary>
|
||||
/// <param name="data">Data buffer.</param>
|
||||
/// <param name="len">Length of buffer to hash.</param>
|
||||
public void Update(byte[] data, uint len)
|
||||
{
|
||||
switch(_useNative)
|
||||
{
|
||||
case true when _useCcitt:
|
||||
crc16_ccitt_update(_nativeContext, data, len);
|
||||
|
||||
break;
|
||||
case true when _useIbm:
|
||||
crc16_update(_nativeContext, data, len);
|
||||
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if(_inverse)
|
||||
StepInverse(ref _hashInt, _table, data, len);
|
||||
else
|
||||
Step(ref _hashInt, _table, data, len);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Updates the hash with data.</summary>
|
||||
/// <param name="data">Data buffer.</param>
|
||||
public void Update(byte[] data) => Update(data, (uint)data.Length);
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Returns a byte array of the hash value.</summary>
|
||||
public byte[] Final()
|
||||
{
|
||||
ushort crc = 0;
|
||||
|
||||
switch(_useNative)
|
||||
{
|
||||
case true when _useCcitt:
|
||||
crc16_ccitt_final(_nativeContext, ref crc);
|
||||
crc16_ccitt_free(_nativeContext);
|
||||
|
||||
break;
|
||||
case true when _useIbm:
|
||||
crc16_final(_nativeContext, ref crc);
|
||||
crc16_free(_nativeContext);
|
||||
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if(_inverse)
|
||||
crc = (ushort)~(_hashInt ^ _finalSeed);
|
||||
else
|
||||
crc = (ushort)(_hashInt ^ _finalSeed);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return BigEndianBitConverter.GetBytes(crc);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Returns a hexadecimal representation of the hash value.</summary>
|
||||
public string End()
|
||||
{
|
||||
var crc16Output = new StringBuilder();
|
||||
ushort final = 0;
|
||||
|
||||
switch(_useNative)
|
||||
{
|
||||
case true when _useCcitt:
|
||||
crc16_ccitt_final(_nativeContext, ref final);
|
||||
crc16_ccitt_free(_nativeContext);
|
||||
|
||||
break;
|
||||
case true when _useIbm:
|
||||
crc16_final(_nativeContext, ref final);
|
||||
crc16_free(_nativeContext);
|
||||
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if(_inverse)
|
||||
final = (ushort)~(_hashInt ^ _finalSeed);
|
||||
else
|
||||
final = (ushort)(_hashInt ^ _finalSeed);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
byte[] finalBytes = BigEndianBitConverter.GetBytes(final);
|
||||
|
||||
foreach(byte t in finalBytes) crc16Output.Append(t.ToString("x2"));
|
||||
|
||||
return crc16Output.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
[LibraryImport("libAaru.Checksums.Native", SetLastError = true)]
|
||||
private static partial IntPtr crc16_init();
|
||||
|
||||
@@ -632,4 +517,119 @@ public partial class Crc16Context : IChecksum
|
||||
|
||||
return localHashInt;
|
||||
}
|
||||
|
||||
#region IChecksum Members
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Name => "Adler-32";
|
||||
|
||||
/// <inheritdoc />
|
||||
public Guid Id => new("D69CF1E7-4A7B-4605-9291-3A1BE4C2951F");
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Author => Authors.NataliaPortillo;
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Updates the hash with data.</summary>
|
||||
/// <param name="data">Data buffer.</param>
|
||||
/// <param name="len">Length of buffer to hash.</param>
|
||||
public void Update(byte[] data, uint len)
|
||||
{
|
||||
switch(_useNative)
|
||||
{
|
||||
case true when _useCcitt:
|
||||
crc16_ccitt_update(_nativeContext, data, len);
|
||||
|
||||
break;
|
||||
case true when _useIbm:
|
||||
crc16_update(_nativeContext, data, len);
|
||||
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if(_inverse)
|
||||
StepInverse(ref _hashInt, _table, data, len);
|
||||
else
|
||||
Step(ref _hashInt, _table, data, len);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Updates the hash with data.</summary>
|
||||
/// <param name="data">Data buffer.</param>
|
||||
public void Update(byte[] data) => Update(data, (uint)data.Length);
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Returns a byte array of the hash value.</summary>
|
||||
public byte[] Final()
|
||||
{
|
||||
ushort crc = 0;
|
||||
|
||||
switch(_useNative)
|
||||
{
|
||||
case true when _useCcitt:
|
||||
crc16_ccitt_final(_nativeContext, ref crc);
|
||||
crc16_ccitt_free(_nativeContext);
|
||||
|
||||
break;
|
||||
case true when _useIbm:
|
||||
crc16_final(_nativeContext, ref crc);
|
||||
crc16_free(_nativeContext);
|
||||
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if(_inverse)
|
||||
crc = (ushort)~(_hashInt ^ _finalSeed);
|
||||
else
|
||||
crc = (ushort)(_hashInt ^ _finalSeed);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return BigEndianBitConverter.GetBytes(crc);
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Returns a hexadecimal representation of the hash value.</summary>
|
||||
public string End()
|
||||
{
|
||||
var crc16Output = new StringBuilder();
|
||||
ushort final = 0;
|
||||
|
||||
switch(_useNative)
|
||||
{
|
||||
case true when _useCcitt:
|
||||
crc16_ccitt_final(_nativeContext, ref final);
|
||||
crc16_ccitt_free(_nativeContext);
|
||||
|
||||
break;
|
||||
case true when _useIbm:
|
||||
crc16_final(_nativeContext, ref final);
|
||||
crc16_free(_nativeContext);
|
||||
|
||||
break;
|
||||
default:
|
||||
{
|
||||
if(_inverse)
|
||||
final = (ushort)~(_hashInt ^ _finalSeed);
|
||||
else
|
||||
final = (ushort)(_hashInt ^ _finalSeed);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
byte[] finalBytes = BigEndianBitConverter.GetBytes(final);
|
||||
|
||||
foreach(byte t in finalBytes) crc16Output.Append(t.ToString("x2"));
|
||||
|
||||
return crc16Output.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
// ****************************************************************************/
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@
|
||||
// 3. This notice may not be removed or altered from any source distribution.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// Copyright (c) 2016 Marian Beermann (add support for initial value, restructuring)
|
||||
// Copyright (C) 2013 Intel Corporation. All rights reserved.
|
||||
// ****************************************************************************/
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
// https://github.com/rawrunprotected/crc
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
// ****************************************************************************/
|
||||
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// Copyright 2017 The Chromium Authors. All rights reserved.
|
||||
// ****************************************************************************/
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// Disabled because the speed is abnormally slow
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
@@ -47,53 +47,6 @@ public sealed class Md5Context : IChecksum
|
||||
/// <summary>Initializes the MD5 hash provider</summary>
|
||||
public Md5Context() => _provider = MD5.Create();
|
||||
|
||||
#region IChecksum Members
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Name => Localization.MD5_Name;
|
||||
|
||||
/// <inheritdoc />
|
||||
public Guid Id => new("C78674C4-F699-4FAB-A618-1661AF659A7C");
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Author => Authors.NataliaPortillo;
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Updates the hash with data.</summary>
|
||||
/// <param name="data">Data buffer.</param>
|
||||
/// <param name="len">Length of buffer to hash.</param>
|
||||
public void Update(byte[] data, uint len) => _provider.TransformBlock(data, 0, (int)len, data, 0);
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Updates the hash with data.</summary>
|
||||
/// <param name="data">Data buffer.</param>
|
||||
public void Update(byte[] data) => Update(data, (uint)data.Length);
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Returns a byte array of the hash value.</summary>
|
||||
public byte[] Final()
|
||||
{
|
||||
_provider.TransformFinalBlock([], 0, 0);
|
||||
|
||||
return _provider.Hash;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Returns a hexadecimal representation of the hash value.</summary>
|
||||
public string End()
|
||||
{
|
||||
_provider.TransformFinalBlock([], 0, 0);
|
||||
var md5Output = new StringBuilder();
|
||||
|
||||
if(_provider.Hash is null) return null;
|
||||
|
||||
foreach(byte h in _provider.Hash) md5Output.Append(h.ToString("x2"));
|
||||
|
||||
return md5Output.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
/// <summary>Gets the hash of a file</summary>
|
||||
/// <param name="filename">File path.</param>
|
||||
public static byte[] File(string filename)
|
||||
@@ -142,4 +95,51 @@ public sealed class Md5Context : IChecksum
|
||||
/// <param name="data">Data buffer.</param>
|
||||
/// <param name="hash">Byte array of the hash value.</param>
|
||||
public static string Data(byte[] data, out byte[] hash) => Data(data, (uint)data.Length, out hash);
|
||||
|
||||
#region IChecksum Members
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Name => Localization.MD5_Name;
|
||||
|
||||
/// <inheritdoc />
|
||||
public Guid Id => new("C78674C4-F699-4FAB-A618-1661AF659A7C");
|
||||
|
||||
/// <inheritdoc />
|
||||
public string Author => Authors.NataliaPortillo;
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Updates the hash with data.</summary>
|
||||
/// <param name="data">Data buffer.</param>
|
||||
/// <param name="len">Length of buffer to hash.</param>
|
||||
public void Update(byte[] data, uint len) => _provider.TransformBlock(data, 0, (int)len, data, 0);
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Updates the hash with data.</summary>
|
||||
/// <param name="data">Data buffer.</param>
|
||||
public void Update(byte[] data) => Update(data, (uint)data.Length);
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Returns a byte array of the hash value.</summary>
|
||||
public byte[] Final()
|
||||
{
|
||||
_provider.TransformFinalBlock([], 0, 0);
|
||||
|
||||
return _provider.Hash;
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
/// <summary>Returns a hexadecimal representation of the hash value.</summary>
|
||||
public string End()
|
||||
{
|
||||
_provider.TransformFinalBlock([], 0, 0);
|
||||
var md5Output = new StringBuilder();
|
||||
|
||||
if(_provider.Hash is null) return null;
|
||||
|
||||
foreach(byte h in _provider.Hash) md5Output.Append(h.ToString("x2"));
|
||||
|
||||
return md5Output.ToString();
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
@@ -39,7 +39,6 @@ namespace Aaru.Checksums;
|
||||
/// <summary>Handles native implementations of compression algorithms</summary>
|
||||
public static partial class Native
|
||||
{
|
||||
static bool _checked;
|
||||
static bool _supported;
|
||||
|
||||
/// <summary>Set to return native as never supported</summary>
|
||||
@@ -55,10 +54,10 @@ public static partial class Native
|
||||
{
|
||||
if(ForceManaged) return false;
|
||||
|
||||
if(_checked) return _supported;
|
||||
if(field) return _supported;
|
||||
|
||||
ulong version;
|
||||
_checked = true;
|
||||
field = true;
|
||||
|
||||
try
|
||||
{
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// Copyright (C) 1996 Phil Karn
|
||||
// Copyright (C) 1995 Robert Morelos-Zaragoza
|
||||
// Copyright (C) 1995 Hari Thirumoorthy
|
||||
@@ -194,7 +194,7 @@ public class ReedSolomon
|
||||
{
|
||||
int i;
|
||||
|
||||
int mask = 1;
|
||||
var mask = 1;
|
||||
_alphaTo[_mm] = 0;
|
||||
|
||||
for(i = 0; i < _mm; i++)
|
||||
@@ -300,8 +300,9 @@ public class ReedSolomon
|
||||
{
|
||||
if(_mm != 8)
|
||||
{
|
||||
if(data[i] > _nn) return -1; /* Illegal symbol */
|
||||
if(data[i] > _nn) return -1;
|
||||
}
|
||||
/* Illegal symbol */
|
||||
|
||||
int feedback = _indexOf[data[i] ^ bb[_nn - _kk - 1]];
|
||||
|
||||
@@ -355,26 +356,27 @@ public class ReedSolomon
|
||||
throw new UnauthorizedAccessException(Localization.Trying_to_calculate_RS_without_initializing);
|
||||
|
||||
erasPos = new int[_nn - _kk];
|
||||
int i, j;
|
||||
int q, tmp;
|
||||
int[] recd = new int[_nn];
|
||||
int[] lambda = new int[_nn - _kk + 1]; /* Err+Eras Locator poly */
|
||||
int[] s = new int[_nn - _kk + 1]; /* syndrome poly */
|
||||
int[] b = new int[_nn - _kk + 1];
|
||||
int[] t = new int[_nn - _kk + 1];
|
||||
int[] omega = new int[_nn - _kk + 1];
|
||||
int[] root = new int[_nn - _kk];
|
||||
int[] reg = new int[_nn - _kk + 1];
|
||||
int[] loc = new int[_nn - _kk];
|
||||
int count;
|
||||
int i, j;
|
||||
int q, tmp;
|
||||
var recd = new int[_nn];
|
||||
var lambda = new int[_nn - _kk + 1]; /* Err+Eras Locator poly */
|
||||
var s = new int[_nn - _kk + 1]; /* syndrome poly */
|
||||
var b = new int[_nn - _kk + 1];
|
||||
var t = new int[_nn - _kk + 1];
|
||||
var omega = new int[_nn - _kk + 1];
|
||||
var root = new int[_nn - _kk];
|
||||
var reg = new int[_nn - _kk + 1];
|
||||
var loc = new int[_nn - _kk];
|
||||
int count;
|
||||
|
||||
/* data[] is in polynomial form, copy and convert to index form */
|
||||
for(i = _nn - 1; i >= 0; i--)
|
||||
{
|
||||
if(_mm != 8)
|
||||
{
|
||||
if(data[i] > _nn) return -1; /* Illegal symbol */
|
||||
if(data[i] > _nn) return -1;
|
||||
}
|
||||
/* Illegal symbol */
|
||||
|
||||
recd[i] = _indexOf[data[i]];
|
||||
}
|
||||
@@ -382,7 +384,7 @@ public class ReedSolomon
|
||||
/* first form the syndromes; i.e., evaluate recd(x) at roots of g(x)
|
||||
* namely @**(B0+i), i = 0, ... ,(NN-KK-1)
|
||||
*/
|
||||
int synError = 0;
|
||||
var synError = 0;
|
||||
|
||||
for(i = 1; i <= _nn - _kk; i++)
|
||||
{
|
||||
@@ -457,8 +459,7 @@ public class ReedSolomon
|
||||
return -1;
|
||||
}
|
||||
|
||||
AaruLogging.Debug(MODULE_NAME,
|
||||
Localization.Erasure_positions_as_determined_by_roots_of_Eras_Loc_Poly);
|
||||
AaruLogging.Debug(MODULE_NAME, Localization.Erasure_positions_as_determined_by_roots_of_Eras_Loc_Poly);
|
||||
|
||||
for(i = 0; i < count; i++) AaruLogging.Debug(MODULE_NAME, "{0} ", loc[i]);
|
||||
|
||||
@@ -479,7 +480,7 @@ public class ReedSolomon
|
||||
{
|
||||
/* r is the step number */
|
||||
/* Compute discrepancy at the r-th step in poly-form */
|
||||
int discrR = 0;
|
||||
var discrR = 0;
|
||||
|
||||
for(i = 0; i < r; i++)
|
||||
{
|
||||
@@ -530,7 +531,7 @@ public class ReedSolomon
|
||||
}
|
||||
|
||||
/* Convert lambda to index form and compute deg(lambda(x)) */
|
||||
int degLambda = 0;
|
||||
var degLambda = 0;
|
||||
|
||||
for(i = 0; i < _nn - _kk + 1; i++)
|
||||
{
|
||||
@@ -582,7 +583,7 @@ public class ReedSolomon
|
||||
* Compute err+eras evaluator poly omega(x) = s(x)*lambda(x) (modulo
|
||||
* x**(NN-KK)). in index form. Also find deg(omega).
|
||||
*/
|
||||
int degOmega = 0;
|
||||
var degOmega = 0;
|
||||
|
||||
for(i = 0; i < _nn - _kk; i++)
|
||||
{
|
||||
@@ -607,7 +608,7 @@ public class ReedSolomon
|
||||
*/
|
||||
for(j = count - 1; j >= 0; j--)
|
||||
{
|
||||
int num1 = 0;
|
||||
var num1 = 0;
|
||||
|
||||
for(i = degOmega; i >= 0; i--)
|
||||
{
|
||||
@@ -615,7 +616,7 @@ public class ReedSolomon
|
||||
}
|
||||
|
||||
int num2 = _alphaTo[Modnn(root[j] * (B0 - 1) + _nn)];
|
||||
int den = 0;
|
||||
var den = 0;
|
||||
|
||||
/* lambda[i+1] for i even is the formal derivative lambda_pr of lambda[i] */
|
||||
for(i = Min(degLambda, _nn - _kk - 1) & ~1; i >= 0; i -= 2)
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using Aaru.CommonTypes.Interfaces;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
// License along with this library; if not, see <http://www.gnu.org/licenses/>.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// Based on ssdeep
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
<PackageReference Include="Macross.Json.Extensions"/>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection"/>
|
||||
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions"/>
|
||||
<PackageReference Include="Sentry" />
|
||||
<PackageReference Include="Sentry"/>
|
||||
<PackageReference Include="System.ComponentModel.Annotations"/>
|
||||
<PackageReference Include="System.Security.Principal.Windows"/>
|
||||
<PackageReference Include="System.ValueTuple"/>
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,10 +33,11 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Text.Json.Serialization;
|
||||
using Aaru.Localization;
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
// ReSharper disable ClassNeverInstantiated.Global
|
||||
@@ -47,83 +48,155 @@ namespace Aaru.CommonTypes.AaruMetadata;
|
||||
public enum Architecture
|
||||
{
|
||||
[JsonPropertyName("4004")]
|
||||
[LocalizedDescription(nameof(UI.Architecture_4004))]
|
||||
_4004,
|
||||
[JsonPropertyName("4040")]
|
||||
[LocalizedDescription(nameof(UI.Architecture_4040))]
|
||||
_4040,
|
||||
[JsonPropertyName("6502")]
|
||||
[LocalizedDescription(nameof(UI.Architecture_6502))]
|
||||
_6502,
|
||||
[JsonPropertyName("65816")]
|
||||
[LocalizedDescription(nameof(UI.Architecture_65816))]
|
||||
_65816,
|
||||
[JsonPropertyName("8008")]
|
||||
[LocalizedDescription(nameof(UI.Architecture_8008))]
|
||||
_8008,
|
||||
[JsonPropertyName("8051")]
|
||||
[LocalizedDescription(nameof(UI.Architecture_8051))]
|
||||
_8051,
|
||||
[JsonPropertyName("8080")]
|
||||
[LocalizedDescription(nameof(UI.Architecture_8080))]
|
||||
_8080,
|
||||
[JsonPropertyName("8085")]
|
||||
[LocalizedDescription(nameof(UI.Architecture_8085))]
|
||||
_8085,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Aarch64))]
|
||||
Aarch64,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Am29000))]
|
||||
Am29000,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Amd64))]
|
||||
Amd64,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Apx432))]
|
||||
Apx432,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Arm))]
|
||||
Arm,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Avr))]
|
||||
Avr,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Avr32))]
|
||||
Avr32,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Axp))]
|
||||
Axp,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Clipper))]
|
||||
Clipper,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Cray))]
|
||||
Cray,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Esa390))]
|
||||
Esa390,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Hobbit))]
|
||||
Hobbit,
|
||||
[LocalizedDescription(nameof(UI.Architecture_I86))]
|
||||
I86,
|
||||
[LocalizedDescription(nameof(UI.Architecture_I860))]
|
||||
I860,
|
||||
[LocalizedDescription(nameof(UI.Architecture_I960))]
|
||||
I960,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Ia32))]
|
||||
Ia32,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Ia64))]
|
||||
Ia64,
|
||||
[LocalizedDescription(nameof(UI.Architecture_M56K))]
|
||||
M56K,
|
||||
[LocalizedDescription(nameof(UI.Architecture_M6800))]
|
||||
M6800,
|
||||
[LocalizedDescription(nameof(UI.Architecture_M6801))]
|
||||
M6801,
|
||||
[LocalizedDescription(nameof(UI.Architecture_M6805))]
|
||||
M6805,
|
||||
[LocalizedDescription(nameof(UI.Architecture_M6809))]
|
||||
M6809,
|
||||
[LocalizedDescription(nameof(UI.Architecture_M68K))]
|
||||
M68K,
|
||||
[LocalizedDescription(nameof(UI.Architecture_M88K))]
|
||||
M88K,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Mcs41))]
|
||||
Mcs41,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Mcs48))]
|
||||
Mcs48,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Mips32))]
|
||||
Mips32,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Mips64))]
|
||||
Mips64,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Msp430))]
|
||||
Msp430,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Nios2))]
|
||||
Nios2,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Openrisc))]
|
||||
Openrisc,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Parisc))]
|
||||
Parisc,
|
||||
[LocalizedDescription(nameof(UI.Architecture_PDP1))]
|
||||
PDP1,
|
||||
[LocalizedDescription(nameof(UI.Architecture_PDP10))]
|
||||
PDP10,
|
||||
[LocalizedDescription(nameof(UI.Architecture_PDP11))]
|
||||
PDP11,
|
||||
[LocalizedDescription(nameof(UI.Architecture_PDP7))]
|
||||
PDP7,
|
||||
[LocalizedDescription(nameof(UI.Architecture_PDP8))]
|
||||
PDP8,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Pic))]
|
||||
Pic,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Power))]
|
||||
Power,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Ppc))]
|
||||
Ppc,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Ppc64))]
|
||||
Ppc64,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Prism))]
|
||||
Prism,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Renesasrx))]
|
||||
Renesasrx,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Riscv))]
|
||||
Riscv,
|
||||
[LocalizedDescription(nameof(UI.Architecture_S360))]
|
||||
S360,
|
||||
[LocalizedDescription(nameof(UI.Architecture_S370))]
|
||||
S370,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sh))]
|
||||
Sh,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sh1))]
|
||||
Sh1,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sh2))]
|
||||
Sh2,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sh3))]
|
||||
Sh3,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sh4))]
|
||||
Sh4,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sh5))]
|
||||
Sh5,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sh64))]
|
||||
Sh64,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sparc))]
|
||||
Sparc,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Sparc64))]
|
||||
Sparc64,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Transputer))]
|
||||
Transputer,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Vax))]
|
||||
Vax,
|
||||
[LocalizedDescription(nameof(UI.Architecture_We32000))]
|
||||
We32000,
|
||||
[LocalizedDescription(nameof(UI.Architecture_X32))]
|
||||
X32,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Z80))]
|
||||
Z80,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Z800))]
|
||||
Z800,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Z8000))]
|
||||
Z8000,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Z80000))]
|
||||
Z80000,
|
||||
[LocalizedDescription(nameof(UI.Architecture_Zarch))]
|
||||
Zarch
|
||||
}
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
@@ -42,6 +42,7 @@
|
||||
using System;
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using Aaru.Localization;
|
||||
|
||||
namespace Aaru.CommonTypes.AaruMetadata;
|
||||
|
||||
@@ -49,33 +50,61 @@ namespace Aaru.CommonTypes.AaruMetadata;
|
||||
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
||||
public enum BarcodeType
|
||||
{
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_Aztec))]
|
||||
Aztec,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_Codabar))]
|
||||
Codabar,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_Code11))]
|
||||
Code11,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_Code128))]
|
||||
Code128,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_Code39))]
|
||||
Code39,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_Code93))]
|
||||
Code93,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_CPC_Binary))]
|
||||
CPC_Binary,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_EZcode))]
|
||||
EZcode,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_FIM))]
|
||||
FIM,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_ITF))]
|
||||
ITF,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_ITF14))]
|
||||
ITF14,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_EAN13))]
|
||||
EAN13,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_EAN8))]
|
||||
EAN8,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_MaxiCode))]
|
||||
MaxiCode,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_ISBN))]
|
||||
ISBN,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_ISRC))]
|
||||
ISRC,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_MSI))]
|
||||
MSI,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_ShotCode))]
|
||||
ShotCode,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_RM4SCC))]
|
||||
RM4SCC,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_QR))]
|
||||
QR,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_EAN5))]
|
||||
EAN5,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_EAN2))]
|
||||
EAN2,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_POSTNET))]
|
||||
POSTNET,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_PostBar))]
|
||||
PostBar,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_Plessey))]
|
||||
Plessey,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_Pharmacode))]
|
||||
Pharmacode,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_PDF417))]
|
||||
PDF417,
|
||||
[LocalizedDescription(nameof(UI.BarcodeType_PatchCode))]
|
||||
PatchCode
|
||||
}
|
||||
|
||||
@@ -92,4 +121,4 @@ public class Barcode
|
||||
Type = (BarcodeType)cicm.type,
|
||||
Value = cicm.Value
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,11 +33,12 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using Aaru.Localization;
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
// ReSharper disable ClassNeverInstantiated.Global
|
||||
@@ -48,491 +49,977 @@ namespace Aaru.CommonTypes.AaruMetadata;
|
||||
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
||||
public enum Language
|
||||
{
|
||||
[LocalizedDescription(nameof(UI.Language_aar))]
|
||||
aar,
|
||||
[LocalizedDescription(nameof(UI.Language_abk))]
|
||||
abk,
|
||||
[LocalizedDescription(nameof(UI.Language_ace))]
|
||||
ace,
|
||||
[LocalizedDescription(nameof(UI.Language_ach))]
|
||||
ach,
|
||||
[LocalizedDescription(nameof(UI.Language_ada))]
|
||||
ada,
|
||||
[LocalizedDescription(nameof(UI.Language_ady))]
|
||||
ady,
|
||||
[LocalizedDescription(nameof(UI.Language_afa))]
|
||||
afa,
|
||||
[LocalizedDescription(nameof(UI.Language_afh))]
|
||||
afh,
|
||||
[LocalizedDescription(nameof(UI.Language_afr))]
|
||||
afr,
|
||||
[LocalizedDescription(nameof(UI.Language_ain))]
|
||||
ain,
|
||||
[LocalizedDescription(nameof(UI.Language_aka))]
|
||||
aka,
|
||||
[LocalizedDescription(nameof(UI.Language_akk))]
|
||||
akk,
|
||||
[LocalizedDescription(nameof(UI.Language_alb))]
|
||||
alb,
|
||||
[LocalizedDescription(nameof(UI.Language_ale))]
|
||||
ale,
|
||||
[LocalizedDescription(nameof(UI.Language_alg))]
|
||||
alg,
|
||||
[LocalizedDescription(nameof(UI.Language_alt))]
|
||||
alt,
|
||||
[LocalizedDescription(nameof(UI.Language_amh))]
|
||||
amh,
|
||||
[LocalizedDescription(nameof(UI.Language_ang))]
|
||||
ang,
|
||||
[LocalizedDescription(nameof(UI.Language_anp))]
|
||||
anp,
|
||||
[LocalizedDescription(nameof(UI.Language_apa))]
|
||||
apa,
|
||||
[LocalizedDescription(nameof(UI.Language_ara))]
|
||||
ara,
|
||||
[LocalizedDescription(nameof(UI.Language_arc))]
|
||||
arc,
|
||||
[LocalizedDescription(nameof(UI.Language_arg))]
|
||||
arg,
|
||||
[LocalizedDescription(nameof(UI.Language_arm))]
|
||||
arm,
|
||||
[LocalizedDescription(nameof(UI.Language_arn))]
|
||||
arn,
|
||||
[LocalizedDescription(nameof(UI.Language_arp))]
|
||||
arp,
|
||||
[LocalizedDescription(nameof(UI.Language_art))]
|
||||
art,
|
||||
[LocalizedDescription(nameof(UI.Language_arw))]
|
||||
arw,
|
||||
[LocalizedDescription(nameof(UI.Language_asm))]
|
||||
asm,
|
||||
[LocalizedDescription(nameof(UI.Language_ast))]
|
||||
ast,
|
||||
[LocalizedDescription(nameof(UI.Language_ath))]
|
||||
ath,
|
||||
[LocalizedDescription(nameof(UI.Language_aus))]
|
||||
aus,
|
||||
[LocalizedDescription(nameof(UI.Language_ava))]
|
||||
ava,
|
||||
[LocalizedDescription(nameof(UI.Language_ave))]
|
||||
ave,
|
||||
[LocalizedDescription(nameof(UI.Language_awa))]
|
||||
awa,
|
||||
[LocalizedDescription(nameof(UI.Language_aym))]
|
||||
aym,
|
||||
[LocalizedDescription(nameof(UI.Language_aze))]
|
||||
aze,
|
||||
[LocalizedDescription(nameof(UI.Language_bad))]
|
||||
bad,
|
||||
[LocalizedDescription(nameof(UI.Language_bai))]
|
||||
bai,
|
||||
[LocalizedDescription(nameof(UI.Language_bak))]
|
||||
bak,
|
||||
[LocalizedDescription(nameof(UI.Language_bal))]
|
||||
bal,
|
||||
[LocalizedDescription(nameof(UI.Language_bam))]
|
||||
bam,
|
||||
[LocalizedDescription(nameof(UI.Language_ban))]
|
||||
ban,
|
||||
[LocalizedDescription(nameof(UI.Language_baq))]
|
||||
baq,
|
||||
[LocalizedDescription(nameof(UI.Language_bas))]
|
||||
bas,
|
||||
[LocalizedDescription(nameof(UI.Language_bat))]
|
||||
bat,
|
||||
[LocalizedDescription(nameof(UI.Language_bej))]
|
||||
bej,
|
||||
[LocalizedDescription(nameof(UI.Language_bel))]
|
||||
bel,
|
||||
[LocalizedDescription(nameof(UI.Language_bem))]
|
||||
bem,
|
||||
[LocalizedDescription(nameof(UI.Language_ben))]
|
||||
ben,
|
||||
[LocalizedDescription(nameof(UI.Language_ber))]
|
||||
ber,
|
||||
[LocalizedDescription(nameof(UI.Language_bho))]
|
||||
bho,
|
||||
[LocalizedDescription(nameof(UI.Language_bih))]
|
||||
bih,
|
||||
[LocalizedDescription(nameof(UI.Language_bik))]
|
||||
bik,
|
||||
[LocalizedDescription(nameof(UI.Language_bin))]
|
||||
bin,
|
||||
[LocalizedDescription(nameof(UI.Language_bis))]
|
||||
bis,
|
||||
[LocalizedDescription(nameof(UI.Language_bla))]
|
||||
bla,
|
||||
[LocalizedDescription(nameof(UI.Language_bnt))]
|
||||
bnt,
|
||||
[LocalizedDescription(nameof(UI.Language_bos))]
|
||||
bos,
|
||||
[LocalizedDescription(nameof(UI.Language_bra))]
|
||||
bra,
|
||||
[LocalizedDescription(nameof(UI.Language_bre))]
|
||||
bre,
|
||||
[LocalizedDescription(nameof(UI.Language_btk))]
|
||||
btk,
|
||||
[LocalizedDescription(nameof(UI.Language_bua))]
|
||||
bua,
|
||||
[LocalizedDescription(nameof(UI.Language_bug))]
|
||||
bug,
|
||||
[LocalizedDescription(nameof(UI.Language_bul))]
|
||||
bul,
|
||||
[LocalizedDescription(nameof(UI.Language_bur))]
|
||||
bur,
|
||||
[LocalizedDescription(nameof(UI.Language_byn))]
|
||||
byn,
|
||||
[LocalizedDescription(nameof(UI.Language_cad))]
|
||||
cad,
|
||||
[LocalizedDescription(nameof(UI.Language_cai))]
|
||||
cai,
|
||||
[LocalizedDescription(nameof(UI.Language_car))]
|
||||
car,
|
||||
[LocalizedDescription(nameof(UI.Language_cat))]
|
||||
cat,
|
||||
[LocalizedDescription(nameof(UI.Language_cau))]
|
||||
cau,
|
||||
[LocalizedDescription(nameof(UI.Language_ceb))]
|
||||
ceb,
|
||||
[LocalizedDescription(nameof(UI.Language_cel))]
|
||||
cel,
|
||||
[LocalizedDescription(nameof(UI.Language_cha))]
|
||||
cha,
|
||||
[LocalizedDescription(nameof(UI.Language_chb))]
|
||||
chb,
|
||||
[LocalizedDescription(nameof(UI.Language_che))]
|
||||
che,
|
||||
[LocalizedDescription(nameof(UI.Language_chg))]
|
||||
chg,
|
||||
[LocalizedDescription(nameof(UI.Language_chi))]
|
||||
chi,
|
||||
[LocalizedDescription(nameof(UI.Language_chk))]
|
||||
chk,
|
||||
[LocalizedDescription(nameof(UI.Language_chm))]
|
||||
chm,
|
||||
[LocalizedDescription(nameof(UI.Language_chn))]
|
||||
chn,
|
||||
[LocalizedDescription(nameof(UI.Language_cho))]
|
||||
cho,
|
||||
[LocalizedDescription(nameof(UI.Language_chp))]
|
||||
chp,
|
||||
[LocalizedDescription(nameof(UI.Language_chr))]
|
||||
chr,
|
||||
[LocalizedDescription(nameof(UI.Language_chu))]
|
||||
chu,
|
||||
[LocalizedDescription(nameof(UI.Language_chv))]
|
||||
chv,
|
||||
[LocalizedDescription(nameof(UI.Language_chy))]
|
||||
chy,
|
||||
[LocalizedDescription(nameof(UI.Language_cmc))]
|
||||
cmc,
|
||||
[LocalizedDescription(nameof(UI.Language_cop))]
|
||||
cop,
|
||||
[LocalizedDescription(nameof(UI.Language_cor))]
|
||||
cor,
|
||||
[LocalizedDescription(nameof(UI.Language_cos))]
|
||||
cos,
|
||||
[LocalizedDescription(nameof(UI.Language_cpe))]
|
||||
cpe,
|
||||
[LocalizedDescription(nameof(UI.Language_cpf))]
|
||||
cpf,
|
||||
[LocalizedDescription(nameof(UI.Language_cpp))]
|
||||
cpp,
|
||||
[LocalizedDescription(nameof(UI.Language_cre))]
|
||||
cre,
|
||||
[LocalizedDescription(nameof(UI.Language_crh))]
|
||||
crh,
|
||||
[LocalizedDescription(nameof(UI.Language_crp))]
|
||||
crp,
|
||||
[LocalizedDescription(nameof(UI.Language_csb))]
|
||||
csb,
|
||||
[LocalizedDescription(nameof(UI.Language_cus))]
|
||||
cus,
|
||||
[LocalizedDescription(nameof(UI.Language_cze))]
|
||||
cze,
|
||||
[LocalizedDescription(nameof(UI.Language_dak))]
|
||||
dak,
|
||||
[LocalizedDescription(nameof(UI.Language_dan))]
|
||||
dan,
|
||||
[LocalizedDescription(nameof(UI.Language_dar))]
|
||||
dar,
|
||||
[LocalizedDescription(nameof(UI.Language_day))]
|
||||
day,
|
||||
[LocalizedDescription(nameof(UI.Language_del))]
|
||||
del,
|
||||
[LocalizedDescription(nameof(UI.Language_den))]
|
||||
den,
|
||||
[LocalizedDescription(nameof(UI.Language_dgr))]
|
||||
dgr,
|
||||
[LocalizedDescription(nameof(UI.Language_din))]
|
||||
din,
|
||||
[LocalizedDescription(nameof(UI.Language_div))]
|
||||
div,
|
||||
[LocalizedDescription(nameof(UI.Language_doi))]
|
||||
doi,
|
||||
[LocalizedDescription(nameof(UI.Language_dra))]
|
||||
dra,
|
||||
[LocalizedDescription(nameof(UI.Language_dsb))]
|
||||
dsb,
|
||||
[LocalizedDescription(nameof(UI.Language_dua))]
|
||||
dua,
|
||||
[LocalizedDescription(nameof(UI.Language_dum))]
|
||||
dum,
|
||||
[LocalizedDescription(nameof(UI.Language_dut))]
|
||||
dut,
|
||||
[LocalizedDescription(nameof(UI.Language_dyu))]
|
||||
dyu,
|
||||
[LocalizedDescription(nameof(UI.Language_dzo))]
|
||||
dzo,
|
||||
[LocalizedDescription(nameof(UI.Language_efi))]
|
||||
efi,
|
||||
[LocalizedDescription(nameof(UI.Language_egy))]
|
||||
egy,
|
||||
[LocalizedDescription(nameof(UI.Language_eka))]
|
||||
eka,
|
||||
[LocalizedDescription(nameof(UI.Language_elx))]
|
||||
elx,
|
||||
[LocalizedDescription(nameof(UI.Language_eng))]
|
||||
eng,
|
||||
[LocalizedDescription(nameof(UI.Language_enm))]
|
||||
enm,
|
||||
[LocalizedDescription(nameof(UI.Language_epo))]
|
||||
epo,
|
||||
[LocalizedDescription(nameof(UI.Language_est))]
|
||||
est,
|
||||
[LocalizedDescription(nameof(UI.Language_ewe))]
|
||||
ewe,
|
||||
[LocalizedDescription(nameof(UI.Language_ewo))]
|
||||
ewo,
|
||||
[LocalizedDescription(nameof(UI.Language_fan))]
|
||||
fan,
|
||||
[LocalizedDescription(nameof(UI.Language_fao))]
|
||||
fao,
|
||||
[LocalizedDescription(nameof(UI.Language_fat))]
|
||||
fat,
|
||||
[LocalizedDescription(nameof(UI.Language_fij))]
|
||||
fij,
|
||||
[LocalizedDescription(nameof(UI.Language_fil))]
|
||||
fil,
|
||||
[LocalizedDescription(nameof(UI.Language_fin))]
|
||||
fin,
|
||||
[LocalizedDescription(nameof(UI.Language_fiu))]
|
||||
fiu,
|
||||
[LocalizedDescription(nameof(UI.Language_fon))]
|
||||
fon,
|
||||
[LocalizedDescription(nameof(UI.Language_fre))]
|
||||
fre,
|
||||
[LocalizedDescription(nameof(UI.Language_frm))]
|
||||
frm,
|
||||
[LocalizedDescription(nameof(UI.Language_fro))]
|
||||
fro,
|
||||
[LocalizedDescription(nameof(UI.Language_frr))]
|
||||
frr,
|
||||
[LocalizedDescription(nameof(UI.Language_frs))]
|
||||
frs,
|
||||
[LocalizedDescription(nameof(UI.Language_fry))]
|
||||
fry,
|
||||
[LocalizedDescription(nameof(UI.Language_ful))]
|
||||
ful,
|
||||
[LocalizedDescription(nameof(UI.Language_fur))]
|
||||
fur,
|
||||
[LocalizedDescription(nameof(UI.Language_gaa))]
|
||||
gaa,
|
||||
[LocalizedDescription(nameof(UI.Language_gay))]
|
||||
gay,
|
||||
[LocalizedDescription(nameof(UI.Language_gba))]
|
||||
gba,
|
||||
[LocalizedDescription(nameof(UI.Language_gem))]
|
||||
gem,
|
||||
[LocalizedDescription(nameof(UI.Language_geo))]
|
||||
geo,
|
||||
[LocalizedDescription(nameof(UI.Language_ger))]
|
||||
ger,
|
||||
[LocalizedDescription(nameof(UI.Language_gez))]
|
||||
gez,
|
||||
[LocalizedDescription(nameof(UI.Language_gil))]
|
||||
gil,
|
||||
[LocalizedDescription(nameof(UI.Language_gla))]
|
||||
gla,
|
||||
[LocalizedDescription(nameof(UI.Language_gle))]
|
||||
gle,
|
||||
[LocalizedDescription(nameof(UI.Language_glg))]
|
||||
glg,
|
||||
[LocalizedDescription(nameof(UI.Language_glv))]
|
||||
glv,
|
||||
[LocalizedDescription(nameof(UI.Language_gmh))]
|
||||
gmh,
|
||||
[LocalizedDescription(nameof(UI.Language_goh))]
|
||||
goh,
|
||||
[LocalizedDescription(nameof(UI.Language_gon))]
|
||||
gon,
|
||||
[LocalizedDescription(nameof(UI.Language_gor))]
|
||||
gor,
|
||||
[LocalizedDescription(nameof(UI.Language_got))]
|
||||
got,
|
||||
[LocalizedDescription(nameof(UI.Language_grb))]
|
||||
grb,
|
||||
[LocalizedDescription(nameof(UI.Language_grc))]
|
||||
grc,
|
||||
[LocalizedDescription(nameof(UI.Language_gre))]
|
||||
gre,
|
||||
[LocalizedDescription(nameof(UI.Language_grn))]
|
||||
grn,
|
||||
[LocalizedDescription(nameof(UI.Language_gsw))]
|
||||
gsw,
|
||||
[LocalizedDescription(nameof(UI.Language_guj))]
|
||||
guj,
|
||||
[LocalizedDescription(nameof(UI.Language_gwi))]
|
||||
gwi,
|
||||
[LocalizedDescription(nameof(UI.Language_hai))]
|
||||
hai,
|
||||
[LocalizedDescription(nameof(UI.Language_hat))]
|
||||
hat,
|
||||
[LocalizedDescription(nameof(UI.Language_hau))]
|
||||
hau,
|
||||
[LocalizedDescription(nameof(UI.Language_haw))]
|
||||
haw,
|
||||
[LocalizedDescription(nameof(UI.Language_heb))]
|
||||
heb,
|
||||
[LocalizedDescription(nameof(UI.Language_her))]
|
||||
her,
|
||||
[LocalizedDescription(nameof(UI.Language_hil))]
|
||||
hil,
|
||||
[LocalizedDescription(nameof(UI.Language_him))]
|
||||
him,
|
||||
[LocalizedDescription(nameof(UI.Language_hin))]
|
||||
hin,
|
||||
[LocalizedDescription(nameof(UI.Language_hit))]
|
||||
hit,
|
||||
[LocalizedDescription(nameof(UI.Language_hmn))]
|
||||
hmn,
|
||||
[LocalizedDescription(nameof(UI.Language_hmo))]
|
||||
hmo,
|
||||
[LocalizedDescription(nameof(UI.Language_hrv))]
|
||||
hrv,
|
||||
[LocalizedDescription(nameof(UI.Language_hsb))]
|
||||
hsb,
|
||||
[LocalizedDescription(nameof(UI.Language_hun))]
|
||||
hun,
|
||||
[LocalizedDescription(nameof(UI.Language_hup))]
|
||||
hup,
|
||||
[LocalizedDescription(nameof(UI.Language_iba))]
|
||||
iba,
|
||||
[LocalizedDescription(nameof(UI.Language_ibo))]
|
||||
ibo,
|
||||
[LocalizedDescription(nameof(UI.Language_ice))]
|
||||
ice,
|
||||
[LocalizedDescription(nameof(UI.Language_ido))]
|
||||
ido,
|
||||
[LocalizedDescription(nameof(UI.Language_iii))]
|
||||
iii,
|
||||
[LocalizedDescription(nameof(UI.Language_ijo))]
|
||||
ijo,
|
||||
[LocalizedDescription(nameof(UI.Language_iku))]
|
||||
iku,
|
||||
[LocalizedDescription(nameof(UI.Language_ile))]
|
||||
ile,
|
||||
[LocalizedDescription(nameof(UI.Language_ilo))]
|
||||
ilo,
|
||||
[LocalizedDescription(nameof(UI.Language_ina))]
|
||||
ina,
|
||||
[LocalizedDescription(nameof(UI.Language_inc))]
|
||||
inc,
|
||||
[LocalizedDescription(nameof(UI.Language_ind))]
|
||||
ind,
|
||||
[LocalizedDescription(nameof(UI.Language_ine))]
|
||||
ine,
|
||||
[LocalizedDescription(nameof(UI.Language_inh))]
|
||||
inh,
|
||||
[LocalizedDescription(nameof(UI.Language_ipk))]
|
||||
ipk,
|
||||
[LocalizedDescription(nameof(UI.Language_ira))]
|
||||
ira,
|
||||
[LocalizedDescription(nameof(UI.Language_iro))]
|
||||
iro,
|
||||
[LocalizedDescription(nameof(UI.Language_ita))]
|
||||
ita,
|
||||
[LocalizedDescription(nameof(UI.Language_jav))]
|
||||
jav,
|
||||
[LocalizedDescription(nameof(UI.Language_jbo))]
|
||||
jbo,
|
||||
[LocalizedDescription(nameof(UI.Language_jpn))]
|
||||
jpn,
|
||||
[LocalizedDescription(nameof(UI.Language_jpr))]
|
||||
jpr,
|
||||
[LocalizedDescription(nameof(UI.Language_jrb))]
|
||||
jrb,
|
||||
[LocalizedDescription(nameof(UI.Language_kaa))]
|
||||
kaa,
|
||||
[LocalizedDescription(nameof(UI.Language_kab))]
|
||||
kab,
|
||||
[LocalizedDescription(nameof(UI.Language_kac))]
|
||||
kac,
|
||||
[LocalizedDescription(nameof(UI.Language_kal))]
|
||||
kal,
|
||||
[LocalizedDescription(nameof(UI.Language_kam))]
|
||||
kam,
|
||||
[LocalizedDescription(nameof(UI.Language_kan))]
|
||||
kan,
|
||||
[LocalizedDescription(nameof(UI.Language_kar))]
|
||||
kar,
|
||||
[LocalizedDescription(nameof(UI.Language_kas))]
|
||||
kas,
|
||||
[LocalizedDescription(nameof(UI.Language_kau))]
|
||||
kau,
|
||||
[LocalizedDescription(nameof(UI.Language_kaw))]
|
||||
kaw,
|
||||
[LocalizedDescription(nameof(UI.Language_kaz))]
|
||||
kaz,
|
||||
[LocalizedDescription(nameof(UI.Language_kbd))]
|
||||
kbd,
|
||||
[LocalizedDescription(nameof(UI.Language_kha))]
|
||||
kha,
|
||||
[LocalizedDescription(nameof(UI.Language_khi))]
|
||||
khi,
|
||||
[LocalizedDescription(nameof(UI.Language_khm))]
|
||||
khm,
|
||||
[LocalizedDescription(nameof(UI.Language_kho))]
|
||||
kho,
|
||||
[LocalizedDescription(nameof(UI.Language_kik))]
|
||||
kik,
|
||||
[LocalizedDescription(nameof(UI.Language_kin))]
|
||||
kin,
|
||||
[LocalizedDescription(nameof(UI.Language_kir))]
|
||||
kir,
|
||||
[LocalizedDescription(nameof(UI.Language_kmb))]
|
||||
kmb,
|
||||
[LocalizedDescription(nameof(UI.Language_kok))]
|
||||
kok,
|
||||
[LocalizedDescription(nameof(UI.Language_kom))]
|
||||
kom,
|
||||
[LocalizedDescription(nameof(UI.Language_kon))]
|
||||
kon,
|
||||
[LocalizedDescription(nameof(UI.Language_kor))]
|
||||
kor,
|
||||
[LocalizedDescription(nameof(UI.Language_kos))]
|
||||
kos,
|
||||
[LocalizedDescription(nameof(UI.Language_kpe))]
|
||||
kpe,
|
||||
[LocalizedDescription(nameof(UI.Language_krc))]
|
||||
krc,
|
||||
[LocalizedDescription(nameof(UI.Language_krl))]
|
||||
krl,
|
||||
[LocalizedDescription(nameof(UI.Language_kro))]
|
||||
kro,
|
||||
[LocalizedDescription(nameof(UI.Language_kru))]
|
||||
kru,
|
||||
[LocalizedDescription(nameof(UI.Language_kua))]
|
||||
kua,
|
||||
[LocalizedDescription(nameof(UI.Language_kum))]
|
||||
kum,
|
||||
[LocalizedDescription(nameof(UI.Language_kur))]
|
||||
kur,
|
||||
[LocalizedDescription(nameof(UI.Language_kut))]
|
||||
kut,
|
||||
[LocalizedDescription(nameof(UI.Language_lad))]
|
||||
lad,
|
||||
[LocalizedDescription(nameof(UI.Language_lah))]
|
||||
lah,
|
||||
[LocalizedDescription(nameof(UI.Language_lam))]
|
||||
lam,
|
||||
[LocalizedDescription(nameof(UI.Language_lao))]
|
||||
lao,
|
||||
[LocalizedDescription(nameof(UI.Language_lat))]
|
||||
lat,
|
||||
[LocalizedDescription(nameof(UI.Language_lav))]
|
||||
lav,
|
||||
[LocalizedDescription(nameof(UI.Language_lez))]
|
||||
lez,
|
||||
[LocalizedDescription(nameof(UI.Language_lim))]
|
||||
lim,
|
||||
[LocalizedDescription(nameof(UI.Language_lin))]
|
||||
lin,
|
||||
[LocalizedDescription(nameof(UI.Language_lit))]
|
||||
lit,
|
||||
[LocalizedDescription(nameof(UI.Language_lol))]
|
||||
lol,
|
||||
[LocalizedDescription(nameof(UI.Language_loz))]
|
||||
loz,
|
||||
[LocalizedDescription(nameof(UI.Language_ltz))]
|
||||
ltz,
|
||||
[LocalizedDescription(nameof(UI.Language_lua))]
|
||||
lua,
|
||||
[LocalizedDescription(nameof(UI.Language_lub))]
|
||||
lub,
|
||||
[LocalizedDescription(nameof(UI.Language_lug))]
|
||||
lug,
|
||||
[LocalizedDescription(nameof(UI.Language_lui))]
|
||||
lui,
|
||||
[LocalizedDescription(nameof(UI.Language_lun))]
|
||||
lun,
|
||||
[LocalizedDescription(nameof(UI.Language_luo))]
|
||||
luo,
|
||||
[LocalizedDescription(nameof(UI.Language_lus))]
|
||||
lus,
|
||||
[LocalizedDescription(nameof(UI.Language_mac))]
|
||||
mac,
|
||||
[LocalizedDescription(nameof(UI.Language_mad))]
|
||||
mad,
|
||||
[LocalizedDescription(nameof(UI.Language_mag))]
|
||||
mag,
|
||||
[LocalizedDescription(nameof(UI.Language_mah))]
|
||||
mah,
|
||||
[LocalizedDescription(nameof(UI.Language_mai))]
|
||||
mai,
|
||||
[LocalizedDescription(nameof(UI.Language_mak))]
|
||||
mak,
|
||||
[LocalizedDescription(nameof(UI.Language_mal))]
|
||||
mal,
|
||||
[LocalizedDescription(nameof(UI.Language_man))]
|
||||
man,
|
||||
[LocalizedDescription(nameof(UI.Language_mao))]
|
||||
mao,
|
||||
[LocalizedDescription(nameof(UI.Language_map))]
|
||||
map,
|
||||
[LocalizedDescription(nameof(UI.Language_mar))]
|
||||
mar,
|
||||
[LocalizedDescription(nameof(UI.Language_mas))]
|
||||
mas,
|
||||
[LocalizedDescription(nameof(UI.Language_may))]
|
||||
may,
|
||||
[LocalizedDescription(nameof(UI.Language_mdf))]
|
||||
mdf,
|
||||
[LocalizedDescription(nameof(UI.Language_mdr))]
|
||||
mdr,
|
||||
[LocalizedDescription(nameof(UI.Language_men))]
|
||||
men,
|
||||
[LocalizedDescription(nameof(UI.Language_mga))]
|
||||
mga,
|
||||
[LocalizedDescription(nameof(UI.Language_mic))]
|
||||
mic,
|
||||
[LocalizedDescription(nameof(UI.Language_min))]
|
||||
min,
|
||||
[LocalizedDescription(nameof(UI.Language_mis))]
|
||||
mis,
|
||||
[LocalizedDescription(nameof(UI.Language_mkh))]
|
||||
mkh,
|
||||
[LocalizedDescription(nameof(UI.Language_mlg))]
|
||||
mlg,
|
||||
[LocalizedDescription(nameof(UI.Language_mlt))]
|
||||
mlt,
|
||||
[LocalizedDescription(nameof(UI.Language_mnc))]
|
||||
mnc,
|
||||
[LocalizedDescription(nameof(UI.Language_mni))]
|
||||
mni,
|
||||
[LocalizedDescription(nameof(UI.Language_mno))]
|
||||
mno,
|
||||
[LocalizedDescription(nameof(UI.Language_moh))]
|
||||
moh,
|
||||
[LocalizedDescription(nameof(UI.Language_mon))]
|
||||
mon,
|
||||
[LocalizedDescription(nameof(UI.Language_mos))]
|
||||
mos,
|
||||
[LocalizedDescription(nameof(UI.Language_mul))]
|
||||
mul,
|
||||
[LocalizedDescription(nameof(UI.Language_mun))]
|
||||
mun,
|
||||
[LocalizedDescription(nameof(UI.Language_mus))]
|
||||
mus,
|
||||
[LocalizedDescription(nameof(UI.Language_mwl))]
|
||||
mwl,
|
||||
[LocalizedDescription(nameof(UI.Language_mwr))]
|
||||
mwr,
|
||||
[LocalizedDescription(nameof(UI.Language_myn))]
|
||||
myn,
|
||||
[LocalizedDescription(nameof(UI.Language_myv))]
|
||||
myv,
|
||||
[LocalizedDescription(nameof(UI.Language_nah))]
|
||||
nah,
|
||||
[LocalizedDescription(nameof(UI.Language_nai))]
|
||||
nai,
|
||||
[LocalizedDescription(nameof(UI.Language_nap))]
|
||||
nap,
|
||||
[LocalizedDescription(nameof(UI.Language_nau))]
|
||||
nau,
|
||||
[LocalizedDescription(nameof(UI.Language_nav))]
|
||||
nav,
|
||||
[LocalizedDescription(nameof(UI.Language_nbl))]
|
||||
nbl,
|
||||
[LocalizedDescription(nameof(UI.Language_nde))]
|
||||
nde,
|
||||
[LocalizedDescription(nameof(UI.Language_ndo))]
|
||||
ndo,
|
||||
[LocalizedDescription(nameof(UI.Language_nds))]
|
||||
nds,
|
||||
[LocalizedDescription(nameof(UI.Language_nep))]
|
||||
nep,
|
||||
[LocalizedDescription(nameof(UI.Language_new))]
|
||||
@new,
|
||||
[LocalizedDescription(nameof(UI.Language_nia))]
|
||||
nia,
|
||||
[LocalizedDescription(nameof(UI.Language_nic))]
|
||||
nic,
|
||||
[LocalizedDescription(nameof(UI.Language_niu))]
|
||||
niu,
|
||||
[LocalizedDescription(nameof(UI.Language_nno))]
|
||||
nno,
|
||||
[LocalizedDescription(nameof(UI.Language_nob))]
|
||||
nob,
|
||||
[LocalizedDescription(nameof(UI.Language_nog))]
|
||||
nog,
|
||||
[LocalizedDescription(nameof(UI.Language_non))]
|
||||
non,
|
||||
[LocalizedDescription(nameof(UI.Language_nor))]
|
||||
nor,
|
||||
[LocalizedDescription(nameof(UI.Language_nqo))]
|
||||
nqo,
|
||||
[LocalizedDescription(nameof(UI.Language_nso))]
|
||||
nso,
|
||||
[LocalizedDescription(nameof(UI.Language_nub))]
|
||||
nub,
|
||||
[LocalizedDescription(nameof(UI.Language_nwc))]
|
||||
nwc,
|
||||
[LocalizedDescription(nameof(UI.Language_nya))]
|
||||
nya,
|
||||
[LocalizedDescription(nameof(UI.Language_nym))]
|
||||
nym,
|
||||
[LocalizedDescription(nameof(UI.Language_nyn))]
|
||||
nyn,
|
||||
[LocalizedDescription(nameof(UI.Language_nyo))]
|
||||
nyo,
|
||||
[LocalizedDescription(nameof(UI.Language_nzi))]
|
||||
nzi,
|
||||
[LocalizedDescription(nameof(UI.Language_oci))]
|
||||
oci,
|
||||
[LocalizedDescription(nameof(UI.Language_oji))]
|
||||
oji,
|
||||
[LocalizedDescription(nameof(UI.Language_ori))]
|
||||
ori,
|
||||
[LocalizedDescription(nameof(UI.Language_orm))]
|
||||
orm,
|
||||
[LocalizedDescription(nameof(UI.Language_osa))]
|
||||
osa,
|
||||
[LocalizedDescription(nameof(UI.Language_oss))]
|
||||
oss,
|
||||
[LocalizedDescription(nameof(UI.Language_ota))]
|
||||
ota,
|
||||
[LocalizedDescription(nameof(UI.Language_oto))]
|
||||
oto,
|
||||
[LocalizedDescription(nameof(UI.Language_paa))]
|
||||
paa,
|
||||
[LocalizedDescription(nameof(UI.Language_pag))]
|
||||
pag,
|
||||
[LocalizedDescription(nameof(UI.Language_pal))]
|
||||
pal,
|
||||
[LocalizedDescription(nameof(UI.Language_pam))]
|
||||
pam,
|
||||
[LocalizedDescription(nameof(UI.Language_pan))]
|
||||
pan,
|
||||
[LocalizedDescription(nameof(UI.Language_pap))]
|
||||
pap,
|
||||
[LocalizedDescription(nameof(UI.Language_pau))]
|
||||
pau,
|
||||
[LocalizedDescription(nameof(UI.Language_peo))]
|
||||
peo,
|
||||
[LocalizedDescription(nameof(UI.Language_per))]
|
||||
per,
|
||||
[LocalizedDescription(nameof(UI.Language_phi))]
|
||||
phi,
|
||||
[LocalizedDescription(nameof(UI.Language_phn))]
|
||||
phn,
|
||||
[LocalizedDescription(nameof(UI.Language_pli))]
|
||||
pli,
|
||||
[LocalizedDescription(nameof(UI.Language_pol))]
|
||||
pol,
|
||||
[LocalizedDescription(nameof(UI.Language_pon))]
|
||||
pon,
|
||||
[LocalizedDescription(nameof(UI.Language_por))]
|
||||
por,
|
||||
[LocalizedDescription(nameof(UI.Language_pra))]
|
||||
pra,
|
||||
[LocalizedDescription(nameof(UI.Language_pro))]
|
||||
pro,
|
||||
[LocalizedDescription(nameof(UI.Language_pus))]
|
||||
pus,
|
||||
[JsonPropertyName("qaa-qtz")]
|
||||
[LocalizedDescription(nameof(UI.Language_qaaqtz))]
|
||||
qaaqtz,
|
||||
[LocalizedDescription(nameof(UI.Language_que))]
|
||||
que,
|
||||
[LocalizedDescription(nameof(UI.Language_raj))]
|
||||
raj,
|
||||
[LocalizedDescription(nameof(UI.Language_rap))]
|
||||
rap,
|
||||
[LocalizedDescription(nameof(UI.Language_rar))]
|
||||
rar,
|
||||
[LocalizedDescription(nameof(UI.Language_roa))]
|
||||
roa,
|
||||
[LocalizedDescription(nameof(UI.Language_roh))]
|
||||
roh,
|
||||
[LocalizedDescription(nameof(UI.Language_rom))]
|
||||
rom,
|
||||
[LocalizedDescription(nameof(UI.Language_rum))]
|
||||
rum,
|
||||
[LocalizedDescription(nameof(UI.Language_run))]
|
||||
run,
|
||||
[LocalizedDescription(nameof(UI.Language_rup))]
|
||||
rup,
|
||||
[LocalizedDescription(nameof(UI.Language_rus))]
|
||||
rus,
|
||||
[LocalizedDescription(nameof(UI.Language_sad))]
|
||||
sad,
|
||||
[LocalizedDescription(nameof(UI.Language_sag))]
|
||||
sag,
|
||||
[LocalizedDescription(nameof(UI.Language_sah))]
|
||||
sah,
|
||||
[LocalizedDescription(nameof(UI.Language_sai))]
|
||||
sai,
|
||||
[LocalizedDescription(nameof(UI.Language_sal))]
|
||||
sal,
|
||||
[LocalizedDescription(nameof(UI.Language_sam))]
|
||||
sam,
|
||||
[LocalizedDescription(nameof(UI.Language_san))]
|
||||
san,
|
||||
[LocalizedDescription(nameof(UI.Language_sas))]
|
||||
sas,
|
||||
[LocalizedDescription(nameof(UI.Language_sat))]
|
||||
sat,
|
||||
[LocalizedDescription(nameof(UI.Language_scn))]
|
||||
scn,
|
||||
[LocalizedDescription(nameof(UI.Language_sco))]
|
||||
sco,
|
||||
[LocalizedDescription(nameof(UI.Language_sel))]
|
||||
sel,
|
||||
[LocalizedDescription(nameof(UI.Language_sem))]
|
||||
sem,
|
||||
[LocalizedDescription(nameof(UI.Language_sga))]
|
||||
sga,
|
||||
[LocalizedDescription(nameof(UI.Language_sgn))]
|
||||
sgn,
|
||||
[LocalizedDescription(nameof(UI.Language_shn))]
|
||||
shn,
|
||||
[LocalizedDescription(nameof(UI.Language_sid))]
|
||||
sid,
|
||||
[LocalizedDescription(nameof(UI.Language_sin))]
|
||||
sin,
|
||||
[LocalizedDescription(nameof(UI.Language_sio))]
|
||||
sio,
|
||||
[LocalizedDescription(nameof(UI.Language_sit))]
|
||||
sit,
|
||||
[LocalizedDescription(nameof(UI.Language_sla))]
|
||||
sla,
|
||||
[LocalizedDescription(nameof(UI.Language_slo))]
|
||||
slo,
|
||||
[LocalizedDescription(nameof(UI.Language_slv))]
|
||||
slv,
|
||||
[LocalizedDescription(nameof(UI.Language_sma))]
|
||||
sma,
|
||||
[LocalizedDescription(nameof(UI.Language_sme))]
|
||||
sme,
|
||||
[LocalizedDescription(nameof(UI.Language_smi))]
|
||||
smi,
|
||||
[LocalizedDescription(nameof(UI.Language_smj))]
|
||||
smj,
|
||||
[LocalizedDescription(nameof(UI.Language_smn))]
|
||||
smn,
|
||||
[LocalizedDescription(nameof(UI.Language_smo))]
|
||||
smo,
|
||||
[LocalizedDescription(nameof(UI.Language_sms))]
|
||||
sms,
|
||||
[LocalizedDescription(nameof(UI.Language_sna))]
|
||||
sna,
|
||||
[LocalizedDescription(nameof(UI.Language_snd))]
|
||||
snd,
|
||||
[LocalizedDescription(nameof(UI.Language_snk))]
|
||||
snk,
|
||||
[LocalizedDescription(nameof(UI.Language_sog))]
|
||||
sog,
|
||||
[LocalizedDescription(nameof(UI.Language_som))]
|
||||
som,
|
||||
[LocalizedDescription(nameof(UI.Language_son))]
|
||||
son,
|
||||
[LocalizedDescription(nameof(UI.Language_sot))]
|
||||
sot,
|
||||
[LocalizedDescription(nameof(UI.Language_spa))]
|
||||
spa,
|
||||
[LocalizedDescription(nameof(UI.Language_srd))]
|
||||
srd,
|
||||
[LocalizedDescription(nameof(UI.Language_srn))]
|
||||
srn,
|
||||
[LocalizedDescription(nameof(UI.Language_srp))]
|
||||
srp,
|
||||
[LocalizedDescription(nameof(UI.Language_srr))]
|
||||
srr,
|
||||
[LocalizedDescription(nameof(UI.Language_ssa))]
|
||||
ssa,
|
||||
[LocalizedDescription(nameof(UI.Language_ssw))]
|
||||
ssw,
|
||||
[LocalizedDescription(nameof(UI.Language_suk))]
|
||||
suk,
|
||||
[LocalizedDescription(nameof(UI.Language_sun))]
|
||||
sun,
|
||||
[LocalizedDescription(nameof(UI.Language_sus))]
|
||||
sus,
|
||||
[LocalizedDescription(nameof(UI.Language_sux))]
|
||||
sux,
|
||||
[LocalizedDescription(nameof(UI.Language_swa))]
|
||||
swa,
|
||||
[LocalizedDescription(nameof(UI.Language_swe))]
|
||||
swe,
|
||||
[LocalizedDescription(nameof(UI.Language_syc))]
|
||||
syc,
|
||||
[LocalizedDescription(nameof(UI.Language_syr))]
|
||||
syr,
|
||||
[LocalizedDescription(nameof(UI.Language_tah))]
|
||||
tah,
|
||||
[LocalizedDescription(nameof(UI.Language_tai))]
|
||||
tai,
|
||||
[LocalizedDescription(nameof(UI.Language_tam))]
|
||||
tam,
|
||||
[LocalizedDescription(nameof(UI.Language_tat))]
|
||||
tat,
|
||||
[LocalizedDescription(nameof(UI.Language_tel))]
|
||||
tel,
|
||||
[LocalizedDescription(nameof(UI.Language_tem))]
|
||||
tem,
|
||||
[LocalizedDescription(nameof(UI.Language_ter))]
|
||||
ter,
|
||||
[LocalizedDescription(nameof(UI.Language_tet))]
|
||||
tet,
|
||||
[LocalizedDescription(nameof(UI.Language_tgk))]
|
||||
tgk,
|
||||
[LocalizedDescription(nameof(UI.Language_tgl))]
|
||||
tgl,
|
||||
[LocalizedDescription(nameof(UI.Language_tha))]
|
||||
tha,
|
||||
[LocalizedDescription(nameof(UI.Language_tib))]
|
||||
tib,
|
||||
[LocalizedDescription(nameof(UI.Language_tig))]
|
||||
tig,
|
||||
[LocalizedDescription(nameof(UI.Language_tir))]
|
||||
tir,
|
||||
[LocalizedDescription(nameof(UI.Language_tiv))]
|
||||
tiv,
|
||||
[LocalizedDescription(nameof(UI.Language_tkl))]
|
||||
tkl,
|
||||
[LocalizedDescription(nameof(UI.Language_tlh))]
|
||||
tlh,
|
||||
[LocalizedDescription(nameof(UI.Language_tli))]
|
||||
tli,
|
||||
[LocalizedDescription(nameof(UI.Language_tmh))]
|
||||
tmh,
|
||||
[LocalizedDescription(nameof(UI.Language_tog))]
|
||||
tog,
|
||||
[LocalizedDescription(nameof(UI.Language_ton))]
|
||||
ton,
|
||||
[LocalizedDescription(nameof(UI.Language_tpi))]
|
||||
tpi,
|
||||
[LocalizedDescription(nameof(UI.Language_tsi))]
|
||||
tsi,
|
||||
[LocalizedDescription(nameof(UI.Language_tsn))]
|
||||
tsn,
|
||||
[LocalizedDescription(nameof(UI.Language_tso))]
|
||||
tso,
|
||||
[LocalizedDescription(nameof(UI.Language_tuk))]
|
||||
tuk,
|
||||
[LocalizedDescription(nameof(UI.Language_tum))]
|
||||
tum,
|
||||
[LocalizedDescription(nameof(UI.Language_tup))]
|
||||
tup,
|
||||
[LocalizedDescription(nameof(UI.Language_tur))]
|
||||
tur,
|
||||
[LocalizedDescription(nameof(UI.Language_tut))]
|
||||
tut,
|
||||
[LocalizedDescription(nameof(UI.Language_tvl))]
|
||||
tvl,
|
||||
[LocalizedDescription(nameof(UI.Language_twi))]
|
||||
twi,
|
||||
[LocalizedDescription(nameof(UI.Language_tyv))]
|
||||
tyv,
|
||||
[LocalizedDescription(nameof(UI.Language_udm))]
|
||||
udm,
|
||||
[LocalizedDescription(nameof(UI.Language_uga))]
|
||||
uga,
|
||||
[LocalizedDescription(nameof(UI.Language_uig))]
|
||||
uig,
|
||||
[LocalizedDescription(nameof(UI.Language_ukr))]
|
||||
ukr,
|
||||
[LocalizedDescription(nameof(UI.Language_umb))]
|
||||
umb,
|
||||
[LocalizedDescription(nameof(UI.Language_und))]
|
||||
und,
|
||||
[LocalizedDescription(nameof(UI.Language_urd))]
|
||||
urd,
|
||||
[LocalizedDescription(nameof(UI.Language_uzb))]
|
||||
uzb,
|
||||
[LocalizedDescription(nameof(UI.Language_vai))]
|
||||
vai,
|
||||
[LocalizedDescription(nameof(UI.Language_ven))]
|
||||
ven,
|
||||
[LocalizedDescription(nameof(UI.Language_vie))]
|
||||
vie,
|
||||
[LocalizedDescription(nameof(UI.Language_vol))]
|
||||
vol,
|
||||
[LocalizedDescription(nameof(UI.Language_vot))]
|
||||
vot,
|
||||
[LocalizedDescription(nameof(UI.Language_wak))]
|
||||
wak,
|
||||
[LocalizedDescription(nameof(UI.Language_wal))]
|
||||
wal,
|
||||
[LocalizedDescription(nameof(UI.Language_war))]
|
||||
war,
|
||||
[LocalizedDescription(nameof(UI.Language_was))]
|
||||
was,
|
||||
[LocalizedDescription(nameof(UI.Language_wel))]
|
||||
wel,
|
||||
[LocalizedDescription(nameof(UI.Language_wen))]
|
||||
wen,
|
||||
[LocalizedDescription(nameof(UI.Language_wln))]
|
||||
wln,
|
||||
[LocalizedDescription(nameof(UI.Language_wol))]
|
||||
wol,
|
||||
[LocalizedDescription(nameof(UI.Language_xal))]
|
||||
xal,
|
||||
[LocalizedDescription(nameof(UI.Language_xho))]
|
||||
xho,
|
||||
[LocalizedDescription(nameof(UI.Language_yao))]
|
||||
yao,
|
||||
[LocalizedDescription(nameof(UI.Language_yap))]
|
||||
yap,
|
||||
[LocalizedDescription(nameof(UI.Language_yid))]
|
||||
yid,
|
||||
[LocalizedDescription(nameof(UI.Language_yor))]
|
||||
yor,
|
||||
[LocalizedDescription(nameof(UI.Language_ypk))]
|
||||
ypk,
|
||||
[LocalizedDescription(nameof(UI.Language_zap))]
|
||||
zap,
|
||||
[LocalizedDescription(nameof(UI.Language_zbl))]
|
||||
zbl,
|
||||
[LocalizedDescription(nameof(UI.Language_zen))]
|
||||
zen,
|
||||
[LocalizedDescription(nameof(UI.Language_zgh))]
|
||||
zgh,
|
||||
[LocalizedDescription(nameof(UI.Language_zha))]
|
||||
zha,
|
||||
[LocalizedDescription(nameof(UI.Language_znd))]
|
||||
znd,
|
||||
[LocalizedDescription(nameof(UI.Language_zul))]
|
||||
zul,
|
||||
[LocalizedDescription(nameof(UI.Language_zun))]
|
||||
zun,
|
||||
[LocalizedDescription(nameof(UI.Language_zxx))]
|
||||
zxx,
|
||||
[LocalizedDescription(nameof(UI.Language_zza))]
|
||||
zza
|
||||
}
|
||||
}
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
@@ -41,6 +41,7 @@
|
||||
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json.Serialization;
|
||||
using Aaru.Localization;
|
||||
|
||||
namespace Aaru.CommonTypes.AaruMetadata;
|
||||
|
||||
@@ -48,16 +49,28 @@ namespace Aaru.CommonTypes.AaruMetadata;
|
||||
[SuppressMessage("ReSharper", "InconsistentNaming")]
|
||||
public enum ReleaseType
|
||||
{
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_Retail))]
|
||||
Retail,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_Bundle))]
|
||||
Bundle,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_Coverdisc))]
|
||||
Coverdisc,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_Subscription))]
|
||||
Subscription,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_Demo))]
|
||||
Demo,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_OEM))]
|
||||
OEM,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_Shareware))]
|
||||
Shareware,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_FOSS))]
|
||||
FOSS,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_Adware))]
|
||||
Adware,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_Donationware))]
|
||||
Donationware,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_DigitalDownload))]
|
||||
DigitalDownload,
|
||||
[LocalizedDescription(nameof(UI.ReleaseType_SaaS))]
|
||||
SaaS
|
||||
}
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
using System;
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
|
||||
@@ -33,7 +33,7 @@
|
||||
// SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
//
|
||||
// ----------------------------------------------------------------------------
|
||||
// Copyright © 2011-2025 Natalia Portillo
|
||||
// Copyright © 2011-2026 Natalia Portillo
|
||||
// ****************************************************************************/
|
||||
|
||||
// ReSharper disable UnusedMember.Global
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user