Comments (10)
Your log said "couldn't find file", so I don't think the zero size is anything to do with that. I believe there are some places in the scanner where file size is assumed to be >0 (.mis files for example), but my strategy has been to simply let those throw and fail on purpose because we'd be on a corrupt FM anyway and there'd be no point trying to scan any further.
from angelloader.
Okay, I figured out what's going on. When it iterates the archive to build the files-to-extract list, it only adds readmes that are >0 length. So 0 length readmes don't get extracted. But it still adds those readmes to the "file info" list, and when it goes through that list later to read the readmes in from disk, it doesn't check if the file it's about to read actually exists (it assumes it does). So a slight logic bug. I'm fixing it for the next version.
Note that, of course, you still won't get any useful data out of scanning these corrupt 7z files, but at least it won't fail the entire scan in future.
from angelloader.
Yes, 7z files are much slower to scan due to their nature. They're solid archives (technically they can be non-solid, but in practice they're basically always solid). That means their data is one big compressed blob, so the scanner can't skip around and pluck out the files it needs, and it can't stream them into memory either (no api for it). Instead, it has to just decompress through the entire blob (which could be very large) until it's come across and extracted all the files it needs. This combined with the fact that 7z's LZMA format is much slower to decompress to begin with, and is also not able to be multithreaded during decompression either, makes zip files a far better fit for FMs IMO, in this age of dirt cheap storage. That's my opinion anyway, but if you're cool with making the speed/size tradeoff then go for it. But just know that I won't be able to make 7z files go any faster, I'm already extracting the minimum and calling directly out to the official native 7z.exe for max speed.
from angelloader.
Ah, in that case it makes sense then.
from angelloader.
I'm going to close this issue since it appears to stem from an incorrect conversion from the original Zip format to 7z. Some vital files have been corrupted. Please examine the file sizes, particularly the FortyEight.txt
file.
Original Zip file vs Converted 7z file
from angelloader.
The 7z scan first extracts the files it needs to a temp folder, and then later in the scan it reads the files back in from disk, expecting them to be there. The extract obviously must have failed, although I would expect to see a 7z error in the log if that was the case (something like "c:\archives\the_fm.7z: fm is 7z: 7z.exe path: c:\AngelLoader\7z64\7z.exe: [error info]")
I'll look over my error handling code and see if I'm missing some situation in which an error occurs but I don't set the error flag.
from angelloader.
Can you send me one of your broken 7z files? I want to test 7z.exe's error output with it.
from angelloader.
@FenPhoenix Here's the link for reference:
It's worth mentioning that I can access and extract the so-called "corrupted" 7z file. Yet, AngelLoader struggles to interpret specific files due to their lack of content. This is what I think.
I'm currently troubleshooting my Python conversion script to pinpoint the root of this issue. It's like it is not to be able to do the job as intended. It erases the content of specific files, or it cannot parse them correctly during the conversion process and output empty files.
from angelloader.
Great, thanks Fen.
I've transitioned my Python program over to a Bash script, and it's converting correctly now. The space savings are significant. However, I've noticed that AngelLoader processes 7z files slower compared to Zip and Rar, which seems to be expected.
We can close the issue.
from angelloader.
That's okay. And TY for the explanations. That makes sense.
I'm aiming to save space since I have to store these files on a server I pay for monthly. If I can save upwards of 30GB of data, it's worth it.
from angelloader.
Related Issues (20)
- X buttons by each filter to hide individually HOT 1
- Custom theme colors HOT 1
- Create FM shortcut file
- Feature Request: Follow System Theme HOT 2
- Handle if game is in a write-protected folder, or 64-bit folder on 32-bit app HOT 1
- Does not work if my username contains non-ASCII characters (fix PR provided) HOT 3
- Convert O(n2) searches to hashtables
- Option to add "Play FM with AngelLoader" or similar to Explorer context menu HOT 1
- Could you include AngelLoader.ico HOT 1
- Update doc for v1.6
- Truncated Folder Name Upon FM Install HOT 1
- Allow specifying a different name for editor exes HOT 1
- Update doc for 1.6.4
- Access fms if they are on a network shared folder via "\\" HOT 1
- There exist semi-broken zip files that FMSel can handle but .NET's zip reader chokes on HOT 1
- General thorough behavior-identicality test in x64 profile
- Perf comparison of every perf-sensitive task in x86 vs. x64, and write notes HOT 1
- In "Enable/Disable Mods" list, correctly display mod paths which both start with a directory operator and point at a compressed file HOT 3
- Delete FM archives...: The method or operation is not implemented HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from angelloader.