Fix wlfuzz and enable in CI - Fix build failure on Linux by linking with the math library. - Don't hard-code the temporary directory to E:\ on Windows. - Relax some comparisons that don't work reliably on Windows: - Security descriptor - Last access time - Sparse file attribute (clear only) - Relax the timestamp comparisons when running on an ext4 filesystem, since ext4 doesn't support the full timestamp range that Windows does. Also, generate more timestamps that are close to the present date. - Make the command-line argument give the number of seconds to run, rather than the number of iterations. This makes it possible to run wlfuzz for 2 minutes in GitHub Actions, like the libFuzzer jobs. - Increase coverage by using a different random seed on each run. - Make wlfuzz initialize wimlib with STRICT_{CAPTURE,APPLY}_PRIVILIGES on Windows. I.e., don't allow running wlfuzz as non-Administrator. - Print security descriptors and timestamps when they differ. - Add GitHub Actions jobs that run wlfuzz on Linux and Windows.
Update hyperlinks Use https whenever possible, and replace some outdated links.
compiler.h: remove _unused_attribute This abstraction layer serves no purpose. Just use __attribute__((unused)) directly.
Consistently use _WIN32 instead of __WIN32__ _WIN32 works with all compilers, while __WIN32__ is MinGW-specific. This project used __WIN32__ in files that only support MinGW, and _WIN32 in other files such as the library header and example programs. One place even used WIN32. Avoid this unnecessary complication by just always using _WIN32.
Improved year 2038 safety Make wimlib on 32-bit Windows year 2038 safe by doing the following: - Build both the library and program with 64-bit time_t, being careful to avoid changing the timespec struct exposed in the API. - Update wimlib's API to include an extended seconds field in wimlib_dir_entry for each timestamp, and set it when tv_sec is 32-bit. - When needing the current time, call GetSystemTimeAsFileTime() instead of MinGW's gettimeofday(). This also has the advantage that due to switching to the 64-bit time_t functions, 32-bit wimlib-imagex.exe now prints timestamps prior to year 1970 correctly. Unfortunately, despite the API improvement, we cannot at this time make wimlib fully Y2038-safe on 32-bit UNIX, due to lack of OS support.
timestamp.c: correctly convert negative UNIX timestamps
Cleanup timestamp conversion code
Use LGPLv3+ for src/*.c
Refactor headers