tastytea
580f08b823
Output info messages to stderr with --debug.
2021-06-01 13:52:41 +02:00
tastytea
28c0a5a797
Add --debug switch and enable debugging if it is on.
2021-06-01 13:41:54 +02:00
tastytea
b12f88003b
Fix text logging and debug logging.
2021-06-01 13:41:20 +02:00
tastytea
17b6017fe0
Rename init_debug() → enable_debug(), add documentation.
2021-06-01 13:36:34 +02:00
tastytea
12a1c47259
Make log_path a variable again.
...
We don't need log_dir() twice afterall.
2021-06-01 11:09:40 +02:00
tastytea
a8f2b7dfb6
Add equipment for debug logs.
2021-06-01 11:02:06 +02:00
tastytea
c35434e745
Simplify LOG macro.
...
continuous-integration/drone/push Build is passing
Details
We only have one logger, no need to specify it every time.
2021-05-31 22:43:30 +02:00
tastytea
4c1bae86ba
Add fatal errors.
...
Errors are fatal if the program has to stop immediately.
2021-05-31 22:29:35 +02:00
tastytea
1fee4f5afd
Fix file error reporting.
...
Not sure why exceptions don't have that info… 🤷
2021-05-31 22:22:04 +02:00
tastytea
80e2e9d05d
Re-add -DBOOST_LOG_DYN_LINK
...
continuous-integration/drone/push Build is passing
Details
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
tastytea
c30a8b40be
Older Boost version need log_setup in addition to log.
...
continuous-integration/drone/push Build is failing
Details
1.75.0 works without it, 1.74.0 not.
Removed -DBOOST_LOG_DYN_LINK again.
2021-05-31 20:57:36 +02:00
tastytea
1d02c3bd6d
Add workaround for old CMake←→Boost combinations.
continuous-integration/drone/push Build is failing
Details
2021-05-31 20:15:54 +02:00
tastytea
77d013c12a
Change config file path.
...
continuous-integration/drone/push Build was killed
Details
Existing old config file is copied over.
2021-05-31 19:37:11 +02:00
tastytea
b966be3021
Log suppressed errors to log file.
2021-05-31 19:27:36 +02:00
tastytea
18f8600174
Change log file directory.
2021-05-31 19:26:19 +02:00
tastytea
11572d5b29
Use logger for warnings end errors.
2021-05-31 19:12:07 +02:00
tastytea
ac5b31f2d5
Add logger.
2021-05-31 18:50:41 +02:00
tastytea
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
tastytea
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
tastytea
11a8989370
CMake: Make GLOB work with new files (most of the time).
...
continuous-integration/drone/push Build is passing
Details
Caveats: <https://cmake.org/cmake/help/latest/command/file.html#filesystem >
2021-05-31 11:06:29 +02:00
tastytea
76ed0c9dbf
Un-escape named and numbered entities in documents before searching.
continuous-integration/drone/push Build is passing
Details
2021-05-30 23:32:35 +02:00
tastytea
8a9be5d45b
Add helpers::unescape_html() & tests.
2021-05-30 23:32:30 +02:00
tastytea
7ddfe32e30
Move is_whitespace() and urldecode() to helpers.
2021-05-30 21:52:52 +02:00
tastytea
94564fa914
Strip whitespace from headlines.
2021-05-30 21:16:24 +02:00
tastytea
22cae4c3cd
Output metadata italic, chapters underlined.
2021-05-30 19:03:59 +02:00
tastytea
fe23fcf04b
Rename prefix to metadata in print_matches().
2021-05-30 18:09:31 +02:00
tastytea
03138c1dbf
Remove unnecessary include.
2021-05-30 18:07:13 +02:00
tastytea
e7633fe134
Rename prefix to before and suffix to after.
continuous-integration/drone/push Build is passing
Details
2021-05-30 14:47:18 +02:00
tastytea
6255d665af
Replace tabs with a space in search::cleanup().
2021-05-30 14:37:05 +02:00
tastytea
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
tastytea
790e60a055
Fix end-of-headline detection.
2021-05-29 23:00:16 +02:00
tastytea
160ff20387
Revert "Fix pugixml target."
...
continuous-integration/drone/push Build is passing
Details
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
tastytea
2a3e3f87b5
Fix pugixml target.
2021-05-29 21:37:40 +02:00
tastytea
37e868b3f2
Remove <style> and <script> snippets.
...
Closes: #8
2021-05-29 18:52:03 +02:00
tastytea
2d65961688
Output XML errors.
2021-05-29 18:42:29 +02:00
tastytea
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
tastytea
5bd1030ad8
Try opf: variants of XML tags if normal variants are not found.
2021-05-29 18:09:44 +02:00
tastytea
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
tastytea
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
tastytea
c94d9de0db
Reformat error messages.
...
One line per error message.
2021-05-29 12:53:14 +02:00
tastytea
4ff796a590
Make regular expressions static variables.
...
continuous-integration/drone/push Build is passing
Details
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
tastytea
4df7b36dfc
Print matches while still searching.
...
continuous-integration/drone/push Build is passing
Details
Previously we printed the matches at the end.
2021-05-28 17:18:34 +02:00
tastytea
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
tastytea
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
tastytea
65b46ca846
Do not allow more threads than max_threads.
2021-05-28 11:48:38 +02:00
tastytea
c3131e01f0
Add setting to suppress this-is-not-an-EPUB errors.
2021-05-27 21:48:35 +02:00
tastytea
84f600196c
Add error code to zip::exception.
2021-05-27 21:39:01 +02:00
tastytea
b96315f8bb
Don't add extra newlines before errors.
2021-05-27 21:03:42 +02:00
tastytea
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
tastytea
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
tastytea
38bf9be948
Fix some more memory leaks.
2021-05-27 20:11:59 +02:00
tastytea
b24ea9b71e
Fix memory leak. 🤦
...
continuous-integration/drone/push Build is passing
Details
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
tastytea
fbb87cac81
Remove a few unnecessary .data(), remove unnecessary include.
2021-05-27 19:08:53 +02:00
tastytea
c50659a339
Chunk error string to make it better translatable.
2021-05-27 17:24:19 +02:00
tastytea
e64591f204
Rework option parsing, change --no-filename.
...
continuous-integration/drone/push Build is failing
Details
Options are now better accessible, --no-filename accepts the values filesystem,
in-epub or all.
2021-05-27 17:20:00 +02:00
tastytea
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
tastytea
0c45e7ac98
Add --recursive and --dereference-recursive.
...
Closes: #5
2021-05-27 14:45:52 +02:00
tastytea
b764f5423c
Put input files into a std::vector<filesystem::path>.
...
We need that for supporting recursive directory search later.
#
# Previous commits:
# 29ae22c
Make regex const.
# 8ed72af
Update german translation.
# a3b0964
Remove old comment.
# d107ce5
Modify config file example.
2021-05-27 13:46:47 +02:00
tastytea
29ae22cc4a
Make regex const.
2021-05-27 09:46:59 +02:00
tastytea
a3b0964873
Remove old comment.
2021-05-26 20:20:21 +02:00
tastytea
7dcf6d599c
Remove debug statements.
2021-05-26 18:25:53 +02:00
tastytea
fe02b155f5
Import std::string into epubgrep::search namespace.
continuous-integration/drone/push Build is passing
Details
2021-05-26 18:02:27 +02:00
tastytea
fc0aa02bc9
Use threads if more than one input file is searched.
...
Use 75% of the available threads (rounded up).
Closes: #4
2021-05-26 17:50:52 +02:00
tastytea
694cb3bc44
Add --no-filename switch.
...
continuous-integration/drone/push Build is passing
Details
Suppresses the mentioning of file names on output.
2021-05-26 09:04:16 +02:00
tastytea
fd8db544bd
Add --nocolor switch.
...
Closes: #2
2021-05-25 11:52:13 +02:00
tastytea
b72d3f3420
Color matches bright magenta.
2021-05-25 11:00:05 +02:00
tastytea
d3c3062cc0
Add Termcolor dependency and bundle it in dist/.
2021-05-25 10:55:44 +02:00
tastytea
ce015954ea
Only initialize search::options once.
2021-05-25 10:02:34 +02:00
tastytea
4644c2afd4
Support CMake 3.12.
...
continuous-integration/drone/push Build is passing
Details
Ubuntu 20.04 has 3.16, so requiring 3.17 is a bit mean.
2021-05-25 07:38:07 +02:00
tastytea
be229d25d6
Don't demand required options if --help or --version is requested.
...
continuous-integration/drone/push Build is passing
Details
Bump version to 0.1.2.
2021-05-25 07:15:04 +02:00
tastytea
e1d29c5893
Don't replace stuff in search::cleanup_text() if nothing matched.
2021-05-24 20:02:27 +02:00
tastytea
09090a1c13
Fix bugs in search::context().
...
- Don't add context if words == 0
- Handle beginning / end of text correctly.
2021-05-24 19:57:15 +02:00
tastytea
1f25daed26
Add basic error handling to search.
2021-05-24 19:10:00 +02:00
tastytea
c790c4952c
Extract page numbers.
2021-05-24 18:56:43 +02:00
tastytea
bb4a4c719f
Wrap headlines in <H> and </H> during cleanup.
2021-05-24 18:08:40 +02:00
tastytea
8ab7d0f655
Extract headlines.
2021-05-24 17:27:30 +02:00
tastytea
8b21f4a8b9
Don't output empty fields.
2021-05-24 16:37:43 +02:00
tastytea
972ce1d0fe
Don't strip headlines.
2021-05-24 16:37:30 +02:00
tastytea
bb1a43ca92
Move cleanup_text(), document functions.
2021-05-24 16:23:07 +02:00
tastytea
84e2b387e5
Clean up text before searching.
2021-05-24 16:01:41 +02:00
tastytea
1979956f03
Add basic search functionality and context output.
2021-05-24 15:35:49 +02:00
tastytea
4e01032c6f
Put regex type and --grep in search::options.
2021-05-24 13:13:15 +02:00
tastytea
b2e70a6faa
Mark everything [[nodiscard]], fix some comments.
2021-05-24 13:00:03 +02:00
tastytea
9c769f664d
Clarify documentation: NUM → NUMBER.
2021-05-24 08:23:52 +02:00
tastytea
44ffeb07ec
Add calls to search::search() to main().
...
All that's missing now is the actual search functionality. 😊
2021-05-24 08:15:04 +02:00
tastytea
3222019c69
Add default value (0) to --context.
2021-05-24 08:14:29 +02:00
tastytea
1f82d9927a
Add skeleton for search::search().
...
- Type for matches
- Type for options.
2021-05-24 07:52:36 +02:00
tastytea
f388dd0511
Add --raw and --context switches.
2021-05-24 07:50:50 +02:00
tastytea
5ac7f92f1d
Add hint to man page.
2021-05-24 06:03:32 +02:00
tastytea
3ad4e49e3d
Don't dump zip files to stdout.
2021-05-24 05:46:12 +02:00
tastytea
2ab4705475
Make --regexp required, show help if it is not given.
2021-05-24 05:45:42 +02:00
tastytea
4b2fbecf93
Print all options at start.
continuous-integration/drone/push Build is passing
Details
2021-05-23 16:52:32 +02:00
tastytea
03e07dfc3e
Rework option parsing a bit.
...
- Add --basic-regexp
- Add --grep
- Remove --input-file
- Make it possible to have multiple --regexp
2021-05-23 16:23:07 +02:00
tastytea
e773d4b78a
Implement zip::read_file() – Read file in archive; add test.
...
Also added zip::open_file() and zip::close_file() to deduplicate code.
2021-05-23 08:56:58 +02:00
tastytea
6334b7051f
Newline before printing error messages.
2021-05-23 08:55:15 +02:00
tastytea
28c6c80def
Set C locale, treat EPUB file names as UTF-8.
...
EPUB file names MUST be UTF-8. ASCII is a subset of UTF-8.
2021-05-23 06:32:56 +02:00
tastytea
6c040fa951
Add first test.
...
continuous-integration/drone/push Build is failing
Details
- Compile everything in src/ except main.cpp into a static library
- Link the static library into tests
- Add test for zip::list()
2021-05-21 09:27:31 +02:00
tastytea
8c8a19b86b
Cosmetic changes.
2021-05-21 07:10:46 +02:00
tastytea
a941bcced3
Initialize the variables where they're needed.
2021-05-21 07:05:44 +02:00
tastytea
354583bcbd
Add short descriptions.
2021-05-21 06:54:01 +02:00