Commit Graph
482 Commits
Author SHA1 Message Date
Oliver Hamlet 38cecac07d Add support for checking assets in BA2 files
They're used by Fallout 4.

BA2 file and folder hashes are 32-bit, so collisions are much more
likely than with BSAs, which use 64-bit hashes. I put in some logging
to check the likelihood of collisions, and found that the largest
number of assets loaded was by Fallout4.esm (no surprise), which loaded
371182 files across 5746 folders, with the most files in one folder
being 124871. That puts the probability of a hash collision within that
folder at above 80%.

I did see different Fallout4 -*.ba2 files contain files with the same
combination of folder and file hashes, and similar for
DLCUltraHighResolution -*.ba2 files, so I'm going to try calculating
64-bit hashes from the file paths stored in the BA2 files.
2022-12-31 18:55:43 +00:00
Oliver Hamlet d05685aea4 Take loaded BSAs into account during sorting
This supports BSAs used from:

* Oblivion
* Fallout 3
* Fallout: New Vegas
* Skyrim
* Skyrim: Special Edition

If Skyrim VR uses the same BSA format as Skyrim SE, that's also supported.

Morrowind BSAs are intentionally not supported because they cannot be
loaded by plugins and so are of no interest to LOOT.

The BSA parsing code has been adapted from my abandoned libbsa library.

This doesn't bother reading folder and file names as hash collisions
seem pretty unlikely (2^64 possible folder hashes, and 2^64 possible
file hashes per folder).

The code checks and requires that BSAs use little-endian numbers, as
while big-endian BSAs are apparently possible I've never seen one,
and I don't want to try adding support without one to test against.
2022-12-31 18:55:40 +00:00
Oliver Hamlet ce7d9c21cd Update version and changelog for v0.18.3 release 2022-12-13 20:51:45 +00:00
sibir f4236037e4 Remove notes on not operator & expressions
No longer true as of v0.17 of metadata syntax.
2022-11-16 00:25:07 -08:00
Oliver Hamlet b1a9e317b3 Update version and changelog for v0.18.2 release 2022-10-11 22:22:53 +01:00
Oliver Hamlet c4cdfbbdf8 Update version and changelog for v0.18.1 release 2022-10-01 15:08:05 +01:00
Oliver Hamlet 632b85ce78 Update version and changelogs for v0.18.0 release 2022-02-27 10:20:29 +00:00
Oliver Hamlet 24f2635d2c Fix some internal documentation links
I haven't fixed the links in the changelog because there's so many of
them and it's not so important for older changelog entries anyway.
2022-02-27 10:20:29 +00:00
Oliver Hamlet 3269905e02 Add some missing documentation 2022-02-27 10:20:29 +00:00
Oliver Hamlet 874a3d86b5 Add support for the readable() condition function
Also clarify the behaviour of version functions when the no version is
read.
2022-02-27 10:07:26 +00:00
Oliver Hamlet 00b93526b2 Rework how libloot's version is exposed in the API
- Don't use a class, it doesn't add anything.
- Use constexpr for the individual version numbers
- Use a function to get the revision string, for consistency with the
  version string.
2022-02-23 16:50:58 +00:00
Oliver Hamlet 8e859f7408 Remove obsolete FileRevision class 2022-02-19 11:42:56 +00:00
Oliver Hamlet 5589dfbf4c Replace references to GitHub Flavored Markdown with CommonMark
LOOT now uses Qt's support for Markdown, but its support for GFM is
bugged so LOOT uses CommonMark instead. The practical impact is very
minor, but reflect the difference in libloot's docs.
2022-02-06 17:45:08 +00:00
Oliver Hamlet 938e805816 Improve docs for version comparison conditions
Be explicit about how libloot's behaviour differs from SemVer, and add
examples.
2022-02-04 16:50:44 +00:00
Oliver Hamlet 95980860e5 Remove all Git-related functionality
LOOT no longer uses Git to keep its copies of the masterlists up to
date, so this functionality is no longer needed. The removed API items
are:

- UpdateFile()
- GetFileRevision()
- IsLatestFile()
- libgit2_category()
- GitStateError
2022-01-23 20:41:54 +00:00
Oliver Hamlet fa3c4d5fef Add missing docs about not-expression condition syntax 2022-01-11 19:58:52 +00:00
sibir-ine 720170509a Update Localised Content page
* Add Ukrainian to list of example languages (l10n added in v0.17.0).
2022-01-07 02:22:40 -08:00
Oliver Hamlet 27d8c9bce8 Update version and changelog for v0.17.3 release 2022-01-02 11:25:36 +00:00
Oliver Hamlet da065e86e5 Update version and changelog for v0.17.2 release 2021-12-24 19:06:51 +00:00
sibirandGitHub 0bf70bdfeb Fix version number in changelog
v0.17.1's changelog was accidentally titled v0.17.0.
2021-12-18 23:54:24 -08:00
Oliver Hamlet e670605700 Fix building docs in CI
Older versions of Sphinx don't work with whatever the default version of
Python is on GitHub Actions, and never versions of Sphinx need a newer
version of Python.

Also update the RTD theme and Breathe while I'm at it.
2021-11-13 17:15:31 +00:00
Oliver Hamlet 31c478a2fc Update version and changelog for v0.17.1 release 2021-11-13 16:47:23 +00:00
Oliver Hamlet e8414a12cf Update version and changelog for v0.17.0 release 2021-09-24 22:04:22 +01:00
Oliver Hamlet e87ba12516 Various documentation updates 2021-09-24 22:04:21 +01:00
Oliver Hamlet e5a229e09f Move file versioning functions out of DatabaseInterface
They don't need to be member functions, and needing a pointer to an
instance of that interface is awkward.

The function names have also changed to reflect that they're not
specific to the masterlists.
2021-09-23 13:31:34 +01:00