Commit Graph

111 Commits

Author SHA1 Message Date
c35434e745
Simplify LOG macro.
All checks were successful
continuous-integration/drone/push Build is passing
We only have one logger, no need to specify it every time.
2021-05-31 22:43:30 +02:00
4c1bae86ba
Add fatal errors.
Errors are fatal if the program has to stop immediately.
2021-05-31 22:29:35 +02:00
1fee4f5afd
Fix file error reporting.
Not sure why exceptions don't have that info… 🤷
2021-05-31 22:22:04 +02:00
80e2e9d05d
Re-add -DBOOST_LOG_DYN_LINK
All checks were successful
continuous-integration/drone/push Build is passing
It seems we still need it. The combination of Boost 1.65.1 and CMake 3.12
does not work otherwise. Not sure whose fault it is.
2021-05-31 21:20:41 +02:00
c30a8b40be
Older Boost version need log_setup in addition to log.
Some checks failed
continuous-integration/drone/push Build is failing
1.75.0 works without it, 1.74.0 not.
Removed -DBOOST_LOG_DYN_LINK again.
2021-05-31 20:57:36 +02:00
1d02c3bd6d
Add workaround for old CMake←→Boost combinations.
Some checks failed
continuous-integration/drone/push Build is failing
2021-05-31 20:15:54 +02:00
77d013c12a
Change config file path.
Some checks reported errors
continuous-integration/drone/push Build was killed
Existing old config file is copied over.
2021-05-31 19:37:11 +02:00
b966be3021
Log suppressed errors to log file. 2021-05-31 19:27:36 +02:00
18f8600174
Change log file directory. 2021-05-31 19:26:19 +02:00
11572d5b29
Use logger for warnings end errors. 2021-05-31 19:12:07 +02:00
ac5b31f2d5
Add logger. 2021-05-31 18:50:41 +02:00
cf583c6d7f
Don't compile sources twice.
Not sure why it would compile them twice if they are set to PUBLIC, but okay. 🤷
2021-05-31 17:24:08 +02:00
78ada56226
Make input files required.
It will be difficult to parse EPUB files from stdin and the usefulness is
questionable.
2021-05-31 15:31:41 +02:00
11a8989370
CMake: Make GLOB work with new files (most of the time).
All checks were successful
continuous-integration/drone/push Build is passing
Caveats: <https://cmake.org/cmake/help/latest/command/file.html#filesystem>
2021-05-31 11:06:29 +02:00
76ed0c9dbf
Un-escape named and numbered entities in documents before searching.
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-30 23:32:35 +02:00
8a9be5d45b
Add helpers::unescape_html() &amp; tests. 2021-05-30 23:32:30 +02:00
7ddfe32e30
Move is_whitespace() and urldecode() to helpers. 2021-05-30 21:52:52 +02:00
94564fa914
Strip whitespace from headlines. 2021-05-30 21:16:24 +02:00
22cae4c3cd
Output metadata italic, chapters underlined. 2021-05-30 19:03:59 +02:00
fe23fcf04b
Rename prefix to metadata in print_matches(). 2021-05-30 18:09:31 +02:00
03138c1dbf
Remove unnecessary include. 2021-05-30 18:07:13 +02:00
e7633fe134
Rename prefix to before and suffix to after.
All checks were successful
continuous-integration/drone/push Build is passing
2021-05-30 14:47:18 +02:00
6255d665af
Replace tabs with a space in search::cleanup(). 2021-05-30 14:37:05 +02:00
d7ad180721
Use iterators in search::context() and don't return extra whitespace
Should be easier to understand now.
2021-05-30 13:45:56 +02:00
790e60a055
Fix end-of-headline detection. 2021-05-29 23:00:16 +02:00
160ff20387
Revert "Fix pugixml target."
All checks were successful
continuous-integration/drone/push Build is passing
pugixml 1.8.1 (the version in Ubuntu bionic) does not have that target.

This reverts commit 2a3e3f87b5.
2021-05-29 22:10:21 +02:00
2a3e3f87b5
Fix pugixml target. 2021-05-29 21:37:40 +02:00
37e868b3f2
Remove <style> and <script> snippets.
Closes: #8
2021-05-29 18:52:03 +02:00
2d65961688
Output XML errors. 2021-05-29 18:42:29 +02:00
ba5716c585
Skip in-epub file if it is not found, except it's the container.
We skipped the whole EPUB before.
2021-05-29 18:20:23 +02:00
5bd1030ad8
Try opf: variants of XML tags if normal variants are not found. 2021-05-29 18:09:44 +02:00
03b367ee98
Don't print same file path twice in error message.
zip::exception always has  the filename in the message.
2021-05-29 17:37:41 +02:00
00e3edb9f2
Only search files in spine, in the right order.
The spine lists all content documents in their linear reading order. So we're
finally getting our results in the right order! 🎉

Since we skip the images and fonts, which usually make up the most bytes in an
EPUB file, the performance increase is immense. I measured 60-70% in a very
short test.

Closes: #1
2021-05-29 17:34:43 +02:00
c94d9de0db
Reformat error messages.
One line per error message.
2021-05-29 12:53:14 +02:00
4ff796a590
Make regular expressions static variables.
All checks were successful
continuous-integration/drone/push Build is passing
Fewer allocations → faster program. About 17% speed increase with 89 books on up
to 3 cores. Measured using the average of 4 runs.
Before: ~15,5 seconds
 After: ~12,8 seconds

Calls to allocation functions went down from 16.652.583 to 5.059.301.
2021-05-28 19:11:32 +02:00
4df7b36dfc
Print matches while still searching.
All checks were successful
continuous-integration/drone/push Build is passing
Previously we printed the matches at the end.
2021-05-28 17:18:34 +02:00
59759b5934
Put output stuff into own function in different file.
It got a little crowded in main(). 😊
2021-05-28 17:07:11 +02:00
308e2d271f
Skip rest of file if encoding of files in EPUB is broken.
Standard says UTF-8. I don't want to deal with weird Windows-encodings or
whatever this is.

Closes: #7
2021-05-28 13:57:51 +02:00
65b46ca846
Do not allow more threads than max_threads. 2021-05-28 11:48:38 +02:00
c3131e01f0
Add setting to suppress this-is-not-an-EPUB errors. 2021-05-27 21:48:35 +02:00
84f600196c
Add error code to zip::exception. 2021-05-27 21:39:01 +02:00
b96315f8bb
Don't add extra newlines before errors. 2021-05-27 21:03:42 +02:00
2b91a839cc
Add --raw and --context again.
Forgot to re-implement them when I overhauled the option parsing…
2021-05-27 21:01:07 +02:00
8d5565a72c
Don't write to matches_all simultaneously from different threads.
What did I do yesterday?!? 😬

Closes: #6
2021-05-27 20:42:20 +02:00
38bf9be948
Fix some more memory leaks. 2021-05-27 20:11:59 +02:00
b24ea9b71e
Fix memory leak. 🤦
All checks were successful
continuous-integration/drone/push Build is passing
That's why I don't write C. 😄

This seems to fix issue #6 in single-threaded mode but sometimes throws “double
free or corruption (out)” in multi-threaded mode.

Bug: #6
2021-05-27 20:05:02 +02:00
fbb87cac81
Remove a few unnecessary .data(), remove unnecessary include. 2021-05-27 19:08:53 +02:00
c50659a339
Chunk error string to make it better translatable. 2021-05-27 17:24:19 +02:00
e64591f204
Rework option parsing, change --no-filename.
Some checks failed
continuous-integration/drone/push Build is failing
Options are now better accessible, --no-filename accepts the values filesystem,
in-epub or all.
2021-05-27 17:20:00 +02:00
c376ce8466
Print the EPUB file name if more than 1 input file.
Change --no-filename to mean: Don't print the EPUB file name.
2021-05-27 14:46:23 +02:00