diff --git a/data/manifest.yaml b/data/manifest.yaml
index c0d810f0..a26b8253 100644
--- a/data/manifest.yaml
+++ b/data/manifest.yaml
@@ -3978,7 +3978,7 @@ $1 Ride:
id: 737600
40 Winks:
files:
- "/memcard/Mcd****.mcr":
+ "/memcard/Mcd*.mcr":
tags:
- save
when:
@@ -23788,7 +23788,7 @@ Alien Bubble Destroyer:
id: 779310
Alien Cabal:
files:
- "/AC95****.ACG":
+ "/AC95*.ACG":
tags:
- save
when:
@@ -23803,7 +23803,7 @@ Alien Cabal:
- config
when:
- os: windows
- "/SAVE****.ACG":
+ "/SAVE*.ACG":
tags:
- save
when:
@@ -24090,7 +24090,7 @@ Alien Legacy:
- save
when:
- os: dos
- "/SAVE**.GAM":
+ "/SAVE*.GAM":
tags:
- save
when:
@@ -60331,7 +60331,7 @@ Beneath The Surface:
id: 792050
Beneath a Steel Sky:
files:
- "/SKY-VM.***":
+ "/SKY-VM.*":
tags:
- save
when:
@@ -70645,7 +70645,7 @@ Blood will be Spilled:
- config
when:
- os: windows
- "/Nightdive Studios/Blood EX/saves/save_**.sav":
+ "/Nightdive Studios/Blood EX/saves/save_*.sav":
tags:
- save
when:
@@ -90305,14 +90305,14 @@ Carnivore Land:
id: 397860
Carnivores:
files:
- "/trophy**.sav":
+ "/trophy*.sav":
tags:
- save
when:
- os: windows
Carnivores 2:
files:
- "/trophy**.sav":
+ "/trophy*.sav":
tags:
- save
when:
@@ -101277,7 +101277,7 @@ Chronomaster:
- save
when:
- os: dos
- "/SAVE.0**":
+ "/SAVE.0*":
tags:
- save
when:
@@ -110335,7 +110335,7 @@ Command & Conquer:
- config
when:
- os: dos
- "/savegame.***":
+ "/savegame.*":
tags:
- save
when:
@@ -110539,7 +110539,7 @@ Command & Conquer Remastered Collection:
- config
when:
- os: windows
- "/savegame.***":
+ "/savegame.*":
tags:
- save
when:
@@ -110679,7 +110679,7 @@ Command & Conquer Remastered Collection:
- os: windows
"Command & Conquer: Tiberian Sun":
files:
- "/SAVE****.sav":
+ "/SAVE*.sav":
tags:
- save
when:
@@ -127277,7 +127277,7 @@ CyberHive:
- save
when:
- os: dos
- "/SAVE0**.DAT":
+ "/SAVE0*.DAT":
tags:
- save
when:
@@ -132951,7 +132951,7 @@ Dark Space Conqueror:
- config
when:
- os: dos
- "/SAVE**.SAV":
+ "/SAVE*.SAV":
tags:
- save
when:
@@ -132975,7 +132975,7 @@ Dark Space Conqueror:
- config
when:
- os: dos
- "/SAVE**.SAV":
+ "/SAVE*.SAV":
tags:
- save
when:
@@ -139567,7 +139567,7 @@ Death Gasp VR:
id: 1199130
Death Gate:
files:
- "/DGATE***.SAV":
+ "/DGATE*.SAV":
tags:
- save
when:
@@ -140571,7 +140571,7 @@ DeathCrank:
id: 391290
DeathKeep:
files:
- "/DkSave**.sav":
+ "/DkSave*.sav":
tags:
- save
when:
@@ -148378,7 +148378,7 @@ Deus:
- config
when:
- os: dos
- "/SAVE**":
+ "/SAVE*":
tags:
- save
when:
@@ -162323,7 +162323,7 @@ Dragonsphere:
- config
when:
- os: dos
- "/DRAG0**.SAV":
+ "/DRAG0*.SAV":
tags:
- save
when:
@@ -166391,7 +166391,7 @@ Drymir Cave under Richmordnom:
id: 913570
"DrĂ¡scula: The Vampire Strikes Back":
files:
- "/drascula**":
+ "/drascula*":
tags:
- save
when:
@@ -183628,7 +183628,7 @@ Eradicated:
id: 548270
Eradicator:
files:
- "/ERAD**.SAV":
+ "/ERAD*.SAV":
tags:
- save
when:
@@ -195541,7 +195541,7 @@ Fallen Empires:
id: 228260
Fallen Haven:
files:
- "/savegame.**":
+ "/savegame.*":
tags:
- save
when:
@@ -207388,7 +207388,7 @@ Flight of the Amazon Queen:
- config
when:
- os: windows
- "/queen.s**":
+ "/queen.s*":
tags:
- save
when:
@@ -232834,7 +232834,7 @@ Gold Rush In The Oort Cloud:
id: 661530
Gold Rush!:
files:
- "/GRSG.**":
+ "/GRSG.*":
tags:
- save
when:
@@ -238767,7 +238767,7 @@ Grim Earth:
id: 940990
Grim Fandango:
files:
- "/grim**.gsv":
+ "/grim*.gsv":
tags:
- save
when:
@@ -242816,7 +242816,7 @@ Gurugedara:
id: 701010
"Gurumin: A Monstrous Adventure":
files:
- "/userdata//322290/remote/gdata**.sav":
+ "/userdata//322290/remote/gdata*.sav":
tags:
- save
when:
@@ -245782,7 +245782,7 @@ Halls of Torment:
id: 2218750
"Halls of the Dead: Faery Tale Adventure II":
files:
- "/0**.SAV":
+ "/0*.SAV":
tags:
- save
when:
@@ -287005,7 +287005,7 @@ Jazz Jackrabbit 2:
- config
when:
- os: windows
- "/SAVEGAME.***":
+ "/SAVEGAME.*":
tags:
- save
when:
@@ -297367,7 +297367,7 @@ King under the Mountain:
id: 10100
"King's Quest IV: The Perils of Rosella":
files:
- "/KQ4SG.***":
+ "/KQ4SG.*":
tags:
- save
when:
@@ -297388,7 +297388,7 @@ King under the Mountain:
id: 10100
"King's Quest V: Absence Makes the Heart Go Yonder!":
files:
- "/KQ5SG.***":
+ "/KQ5SG.*":
tags:
- save
when:
@@ -297406,7 +297406,7 @@ King under the Mountain:
id: 10100
"King's Quest VI: Heir Today, Gone Tomorrow":
files:
- "/KQ6SG.***":
+ "/KQ6SG.*":
tags:
- save
when:
@@ -297424,7 +297424,7 @@ King under the Mountain:
id: 10100
"King's Quest VII: The Princeless Bride":
files:
- "/KQ7CDSG.***":
+ "/KQ7CDSG.*":
tags:
- save
when:
@@ -304956,7 +304956,7 @@ Lands of Lore III:
- 1207658980
"Lands of Lore: The Throne of Chaos":
files:
- "/_SAVE***.DAT":
+ "/_SAVE*.DAT":
tags:
- save
when:
@@ -309539,7 +309539,7 @@ Legends of Time:
id: 514400
Legends of Valour:
files:
- "/CHAR**.DAT":
+ "/CHAR*.DAT":
tags:
- save
when:
@@ -316002,7 +316002,7 @@ Little Big Adventure:
- config
when:
- os: dos
- "/S****.LBA":
+ "/S*.LBA":
tags:
- save
when:
@@ -319991,7 +319991,7 @@ Lost Dimension:
id: 626600
Lost Eden:
files:
- "/EDV2_***.SAV":
+ "/EDV2_*.SAV":
tags:
- save
when:
@@ -338991,7 +338991,7 @@ Mega Man Legacy Collection 2:
id: 495050
Mega Man Legends:
files:
- "/DASH_**.MCD":
+ "/DASH_*.MCD":
tags:
- save
when:
@@ -340827,7 +340827,7 @@ Menzoberranzan:
- config
when:
- os: dos
- "/SAVE**":
+ "/SAVE*":
tags:
- save
when:
@@ -345077,7 +345077,7 @@ Might & Mayhem:
- 1207658788
"Might and Magic III: Isles of Terra":
files:
- "/SAVE**.MM3":
+ "/SAVE*.MM3":
tags:
- save
when:
@@ -345155,7 +345155,7 @@ Might and Magic IX:
alias: "Might & Magic: Clash of Heroes"
"Might and Magic: Clouds of Xeen":
files:
- "/XEEN**.SAV":
+ "/XEEN*.SAV":
tags:
- save
when:
@@ -345172,7 +345172,7 @@ Might and Magic IX:
- 1207658788
"Might and Magic: Darkside of Xeen":
files:
- "/DARK**.SAV":
+ "/DARK*.SAV":
tags:
- save
when:
@@ -345189,12 +345189,12 @@ Might and Magic IX:
- 1207658788
"Might and Magic: World of Xeen":
files:
- "/XEEN**.SAV":
+ "/XEEN*.SAV":
tags:
- save
when:
- os: dos
- "/XEEN**.WOX":
+ "/XEEN*.WOX":
tags:
- save
when:
@@ -351245,7 +351245,7 @@ Monkey GO Happy:
id: 32460
"Monkey Island 2: LeChuck's Revenge":
files:
- "/SAVEGAME.***":
+ "/SAVEGAME.*":
tags:
- save
when:
@@ -353646,7 +353646,7 @@ Monty Python & the Quest for the Holy Grail:
- os: windows
"Monty Python's Complete Waste of Time":
files:
- "/7THLEVEL.***":
+ "/7THLEVEL.*":
tags:
- save
when:
@@ -389188,7 +389188,7 @@ Orion (2018):
id: 811190
Orion Burger:
files:
- "/BURG0**.SAV":
+ "/BURG0*.SAV":
tags:
- save
when:
@@ -412457,12 +412457,12 @@ Police Patrol:
- config
when:
- os: windows
- "/PQ2/PQSG.***":
+ "/PQ2/PQSG.*":
tags:
- save
when:
- os: windows
- "/cloud_saves/PQSG.***":
+ "/cloud_saves/PQSG.*":
tags:
- save
when:
@@ -412516,7 +412516,7 @@ Police Patrol:
- save
when:
- os: windows
- "/PQ1SG.***":
+ "/PQ1SG.*":
tags:
- save
when:
@@ -417731,7 +417731,7 @@ Prince of Persia (2008):
- os: dos
Prince of Persia 3D:
files:
- "/Level ** Start, Level ** Start.bmp":
+ "/Level * Start, Level * Start.bmp":
tags:
- save
when:
@@ -428227,7 +428227,7 @@ Quest for Conquest:
id: 1147020
"Quest for Glory II: Trial by Fire":
files:
- "/TRIALSG.***":
+ "/TRIALSG.*":
tags:
- save
when:
@@ -428244,7 +428244,7 @@ Quest for Conquest:
id: 502750
"Quest for Glory III: Wages of War":
files:
- "/GLORYSG.***":
+ "/GLORYSG.*":
tags:
- save
when:
@@ -428281,7 +428281,7 @@ Quest for Conquest:
id: 502750
"Quest for Glory: Shadows of Darkness":
files:
- "/GLORYSG.***":
+ "/GLORYSG.*":
tags:
- save
when:
@@ -428301,7 +428301,7 @@ Quest for Conquest:
id: 502750
"Quest for Glory: So You Want to Be a Hero":
files:
- "/GLORYSG.***":
+ "/GLORYSG.*":
tags:
- save
when:
@@ -434217,7 +434217,7 @@ Raptor Valley:
id: 524120
"Raptor: Call of the Shadows":
files:
- "/CHAR****.FIL":
+ "/CHAR*.FIL":
tags:
- save
when:
@@ -434250,7 +434250,7 @@ Raptor Valley:
id: 358360
"Raptor: Call of the Shadows 2010 Edition":
files:
- "/CHAR****.FIL":
+ "/CHAR*.FIL":
tags:
- save
when:
@@ -434723,7 +434723,7 @@ Ravenland:
- config
when:
- os: dos
- "/SAVE**":
+ "/SAVE*":
tags:
- save
when:
@@ -434748,7 +434748,7 @@ Ravenland:
- config
when:
- os: dos
- "/SAVE**":
+ "/SAVE*":
tags:
- save
when:
@@ -463201,7 +463201,7 @@ Sam & Max Hit the Road:
- config
when:
- os: windows
- "/samnmax.s**":
+ "/samnmax.s*":
tags:
- save
when:
@@ -466767,7 +466767,7 @@ Schein:
- config
when:
- os: windows
- "/Schizm.s**":
+ "/Schizm.s*":
tags:
- save
when:
@@ -500126,7 +500126,7 @@ Space Punks:
- config
when:
- os: windows
- "/sq6/SQ6SG.***":
+ "/sq6/SQ6SG.*":
tags:
- save
when:
@@ -500214,7 +500214,7 @@ Space Punks:
- config
when:
- os: windows
- "/sq4/SQ4SG.***":
+ "/sq4/SQ4SG.*":
tags:
- save
when:
@@ -500237,7 +500237,7 @@ Space Punks:
- config
when:
- os: windows
- "/sq5/SQ5SG.***":
+ "/sq5/SQ5SG.*":
tags:
- save
when:
@@ -500255,7 +500255,7 @@ Space Punks:
id: 10110
"Space Quest: Chapter I - The Sarien Encounter":
files:
- "/SQ1SG.***":
+ "/SQ1SG.*":
tags:
- save
when:
@@ -521096,7 +521096,7 @@ Stronghold:
- save
when:
- os: dos
- "/STRONG.SAV/SAVE.***":
+ "/STRONG.SAV/SAVE.*":
tags:
- save
when:
@@ -533983,7 +533983,7 @@ Swords of Legends Online:
id: 1418100
Swords of Xeen:
files:
- "/SWRD**.SAV":
+ "/SWRD*.SAV":
tags:
- save
when:
@@ -535117,7 +535117,7 @@ System Shock 2 Enhanced Edition:
- save
when:
- os: windows
- "/Nightdive Studios/System Shock EE/savegame/archive/savgam**.dat":
+ "/Nightdive Studios/System Shock EE/savegame/archive/savgam*.dat":
tags:
- save
when:
@@ -551902,7 +551902,7 @@ The Collider 2:
id: 357010
"The Colonel's Bequest":
files:
- "/CB1SG.***":
+ "/CB1SG.*":
tags:
- save
when:
@@ -561091,7 +561091,7 @@ The Imperial Gatekeeper:
- save
when:
- os: windows
- "/save/Sandbox.sav**":
+ "/save/Sandbox.sav*":
tags:
- save
when:
@@ -565926,7 +565926,7 @@ The Lion King:
id: 561120
"The Lion King II: Simba's Pride GameBreak!":
registry:
- HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Disney Interactive/SPAG**:
+ HKEY_LOCAL_MACHINE/SOFTWARE/WOW6432Node/Disney Interactive/SPAG*:
tags:
- config
"The Lion's Song":
@@ -607486,7 +607486,7 @@ Ultima Defesa:
- 1207658965
"Ultima VII Part Two: Serpent Isle":
files:
- "/GAME**.U7":
+ "/GAME*.U7":
tags:
- save
when:
@@ -607500,7 +607500,7 @@ Ultima Defesa:
id: 1207662633
"Ultima VII: The Black Gate":
files:
- "/GAME**.U7":
+ "/GAME*.U7":
tags:
- save
when:
@@ -630487,7 +630487,7 @@ Warriors Orochi 4:
id: 831560
Warriors of Legend:
files:
- "/GAME**.DAT":
+ "/GAME*.DAT":
tags:
- save
when:
@@ -638730,7 +638730,7 @@ Wing Commander:
- 1207658960
"Wing Commander III: Heart of the Tiger":
files:
- "/00000***.WSG":
+ "/00000*.WSG":
tags:
- save
when:
@@ -646302,7 +646302,7 @@ X-ray Hospital:
id: 850720
"X2: The Threat":
files:
- "/**.sav":
+ "/*.sav":
tags:
- save
when:
@@ -652510,7 +652510,7 @@ Zak McKracken and the Alien Mindbenders:
- config
when:
- os: windows
- "/zak.s**":
+ "/zak.s*":
tags:
- save
when:
diff --git a/src/wiki.rs b/src/wiki.rs
index 3a2619d1..bd57912e 100644
--- a/src/wiki.rs
+++ b/src/wiki.rs
@@ -558,6 +558,8 @@ impl WikiPath {
}
static CONSECUTIVE_SLASHES: Lazy = Lazy::new(|| Regex::new(r"/{2,}").unwrap());
+ static UNNECESSARY_DOUBLE_STAR_1: Lazy = Lazy::new(|| Regex::new(r"([^/*])\*{2,}").unwrap());
+ static UNNECESSARY_DOUBLE_STAR_2: Lazy = Lazy::new(|| Regex::new(r"\*{2,}([^/*])").unwrap());
static ENDING_WILDCARD: Lazy = Lazy::new(|| Regex::new(r"(/\*)+$").unwrap());
static APP_DATA: Lazy = Lazy::new(|| Regex::new(r"(?i)%appdata%").unwrap());
static APP_DATA_ROAMING: Lazy = Lazy::new(|| Regex::new(r"(?i)%userprofile%/AppData/Roaming").unwrap());
@@ -568,6 +570,8 @@ impl WikiPath {
for (pattern, replacement) in [
(&CONSECUTIVE_SLASHES, "/"),
+ (&UNNECESSARY_DOUBLE_STAR_1, "${1}*"),
+ (&UNNECESSARY_DOUBLE_STAR_2, "*${1}"),
(&ENDING_WILDCARD, ""),
(&APP_DATA, placeholder::WIN_APP_DATA),
(&APP_DATA_ROAMING, placeholder::WIN_APP_DATA),