Skip to content

Commit

Permalink
Fixed issue with missing files while decompressing SPC archives
Browse files Browse the repository at this point in the history
  • Loading branch information
redssu committed May 7, 2022
1 parent 0465846 commit b4daa71
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 14 deletions.
1 change: 1 addition & 0 deletions ExplorerExtension/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.IO;
using Microsoft.Win32;
using Microsoft.Win32.Registry;

namespace ExplorerExtension {
class Program {
Expand Down
17 changes: 3 additions & 14 deletions Spc/Program.cs
Original file line number Diff line number Diff line change
@@ -1,14 +1,11 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Text;
using System.Threading.Tasks;
using System.Security;
using System.Text.Json;
using V3Lib;
using V3Lib.Spc;
using System.Linq;

namespace Spc {
class SpcInfo {
Expand Down Expand Up @@ -104,17 +101,13 @@ class Program {
spcFile.Unknown2 = spcInfo.Unknown2;

List<String> targetFiles = new List<string>( Directory.GetFiles( filePath ) );
Task[] insertTasks = new Task[ targetFiles.Count - 1 ]; // Because we don't count the __spc_info.json file

foreach ( string subfileName in targetFiles ) {
if ( subfileName.EndsWith( "__spc_info.json" ) ) {
if ( subfileName.EndsWith( "__spc_info.json" ) )
continue;
}

insertTasks[ targetFiles.IndexOf( subfileName ) ] = Task.Factory.StartNew( () => spcFile.InsertSubfile( subfileName ) );
spcFile.InsertSubfile(subfileName);
}

Task.WaitAll( insertTasks );

string originalPath = filePath;

Expand Down Expand Up @@ -166,14 +159,10 @@ class Program {
string directoryBasePath = fileInfo.FullName;
Directory.CreateDirectory( directoryBasePath + ".decompressed" );

Task[] extractTasks = new Task[ spcFile.Subfiles.Count ];

foreach ( SpcSubfile subfile in spcFile.Subfiles ) {
extractTasks[ spcFile.Subfiles.IndexOf( subfile ) ] = Task.Factory.StartNew( () => spcFile.ExtractSubfile( subfile.Name, directoryBasePath + ".decompressed" ) );
spcFile.ExtractSubfile( subfile.Name, directoryBasePath + ".decompressed" );
}

Task.WaitAll( extractTasks );

SpcInfo spcInfo = new SpcInfo {
Unknown1 = spcFile.Unknown1,
Unknown2 = spcFile.Unknown2
Expand Down

0 comments on commit b4daa71

Please sign in to comment.