Commit Graph

256 Commits

Author SHA1 Message Date
Frédéric Mangano
ba435b26a4 Upgrade to C++20 2023-01-27 15:37:03 +09:00
Frédéric Mangano
712830e247 Mention in the README that opustags is tag-agnostic 2022-05-09 20:59:35 +02:00
Frédéric Mangano
a898ed4877 Finalize the migration for using exceptions 2021-01-17 15:54:23 +01:00
Frédéric Mangano
d453af2563 Migrate the system module to use exceptions 2021-01-17 15:43:16 +01:00
Frédéric Mangano
8a54361b8f Migrate the opus module to use exceptions 2021-01-17 15:07:56 +01:00
Frédéric Mangano
1c03c31e82 Migrate the ogg module to use exceptions 2021-01-17 14:58:50 +01:00
Frédéric Mangano
b8f2518ef5 Move the page counting logic in the Ogg reader 2021-01-17 14:41:36 +01:00
Frédéric Mangano
6758ae23ff Migrate the cli module to use exeptions 2021-01-17 12:55:30 +01:00
Frédéric Mangano
937cdc37a7 Exit with 2 on CLI arguments error 2021-01-17 12:36:22 +01:00
Frédéric Mangano
51c7f29c1a Make the top-level functions deal with exceptions 2021-01-17 12:32:38 +01:00
Frédéric Mangano
ea00b8fd80 Update the CMake version requirement to 3.11
This is required for FindIconv.
2021-01-08 19:05:31 +01:00
Frédéric Mangano
2d5db09bda Release 1.6.0 2021-01-01 11:41:03 +01:00
Frédéric Mangano
3e0b3fa56e Make encoding errors fatal
With --raw there is a workaround.

The tolerant approach was cool and nice until you want to edit something
non-interactively and get the warning telling you you might have lost
data after the file was written. Failing fast is most likely the better
option here.
2020-12-27 10:55:25 +01:00
Frédéric Mangano
3e7b42062a Discard incompatible comments entirely
//IGNORE is not portable either. Now that we have --raw it’s less an
issue though.
2020-12-27 10:55:20 +01:00
Frédéric Mangano
4cae6c44ee Introduce --raw for disabling transcoding 2020-12-26 16:51:36 +01:00
Frédéric Mangano
6db7f07bd5 Factor CLI argument transcoding 2020-12-26 13:00:20 +01:00
Frédéric Mangano
fd5fa3cd5f Make ot::encoding_converter use string views 2020-12-26 12:42:37 +01:00
Frédéric Mangano
c43704a0a7 Use //IGNORE instead of //TRANSLIT when transcoding
//TRANSLIT is not a well supported, and in most cases there’s not much
transliteration can help with when the encoding is limiting. Besides,
it sounds reasonable to assume most people use UTF-8 nowadays.
2020-12-26 12:30:44 +01:00
Frédéric Mangano
f98208c1a1 Support the various stat structures across systems 2020-11-25 20:07:23 +01:00
Frédéric Mangano
64fc6f8f6d Include config.h globally 2020-11-25 20:05:46 +01:00
Frédéric Mangano
1d03da324c Release 1.5.1 2020-11-21 11:05:56 +01:00
Frédéric Mangano
30b7f44ead Include endian.h or sys/endian.h depending on the platform 2020-11-14 20:27:08 +01:00
Frédéric Mangano
b8c8be453f Include headers for mkstemps
Linux requires <stdlib.h>, but FreeBSD requires <unistd.h>.
2020-11-14 18:18:42 +01:00
Frédéric Mangano
4a1b8705cc Release 1.5.0 2020-11-08 10:32:46 +01:00
Frédéric Mangano
7c8396ca45 run_editor: Pass the editor command through the shell
wordexp doesn’t work on OpenBSD, and escaping the path ourselves then
calling system() is actually easier than using wordexp.
2020-11-01 11:57:48 +01:00
Frédéric Mangano
639d46ed0f Introduce ot::shell_escape 2020-11-01 10:41:24 +01:00
Frédéric Mangano
d54bada7e6 Open handles with O_CLOEXEC
opustags’s only use of a sub-process is for spawning the EDITOR, and we
don’t want it to access our file handles.
2020-10-31 18:44:46 +01:00
Frédéric Mangano
57a4c0d5a0 Flush the writer before exec’ing
In the unlikely event the child process fails without exec’ing, we don’t
want both the child process and parent process to flush the OpusHead
header.

Thanks @omar-polo for reporting this!
2020-10-31 18:44:46 +01:00
Frédéric Mangano
d071b6cabd Fix error reporting when EDITOR fails 2020-10-31 18:10:33 +01:00
Frédéric Mangano
d8c36a3d3f Forbid mixing --edit with non-interactive edition options 2020-10-31 12:15:01 +01:00
Frédéric Mangano
ba2236facb Cancel --edit when the editor closes without saving 2020-10-31 12:11:26 +01:00
Frédéric Mangano
b3b092d241 Expand EDITOR/VISUAL with wordexp 2020-10-25 11:09:18 +01:00
Frédéric Mangano
8f0f29c056 Support VISUAL with --edit 2020-10-24 12:00:43 +02:00
Frédéric Mangano-Tarumi
e4ca6ca6ef Introduce the --edit option 2020-10-12 07:55:27 +02:00
Frédéric Mangano-Tarumi
df03cdf951 Introduce ot::execute_process 2020-10-11 18:06:40 +02:00
Frédéric Mangano-Tarumi
8252f94084 --set-all: Ignore comments starting with # 2020-10-11 18:06:39 +02:00
Frédéric Mangano-Tarumi
a1dcc8c47e Fix print_comments when output is not stdout 2020-10-11 17:43:04 +02:00
Frédéric Mangano-Tarumi
7206604f85 Make read_comments work on std::list
For consistency with ot::opus_tags.
2020-10-11 17:43:04 +02:00
Frédéric Mangano-Tarumi
6da5545b30 Flatten option compatibility checking
The more options we have the more nested it gets. It was getting
complicated.
2020-10-11 17:40:52 +02:00
Frédéric Mangano-Tarumi
537094fd53 use CMake’s FindIconv to detect iconv portably 2020-10-10 15:20:19 +02:00
Frédéric Mangano-Tarumi
be9740fe05 Explicitely include <optional>
It should have been included since we use std::optional, and not
including it breaks the build on OpenBSD.
2020-10-10 15:10:59 +02:00
Frédéric Mangano-Tarumi
a22c81e727 release 1.4.0 2020-10-04 09:34:13 +02:00
Frédéric Mangano-Tarumi
9715f0242f Define _GNU_SOURCE for BSD compability 2020-09-27 13:57:44 +02:00
Frédéric Mangano-Tarumi
b369aea8d4 Fix signedness warnings in t/cli.cc 2020-09-26 13:13:15 +02:00
Reuben Thomas
84e238a4a9
Add support for multiple input files with --in-place
Co-authored-by: Frédéric Mangano-Tarumi <fmang@mg0.fr>
2020-09-26 13:12:15 +02:00
Reuben Thomas
73a54d7ab7 Don't treat empty output filename specially (fix #27)
Instead, make opt.path_out a std::optional<std::string>.
2020-09-20 16:32:27 +02:00
Reuben Thomas
ef15e7ad13
With --set-all, read comments from stdin before processing tags (#29)
With --set-all, read comments from stdin before processing tags
2020-09-19 11:02:43 +02:00
Frédéric Mangano-Tarumi
5ea2db2d6d upgrade to C++17 2020-08-31 21:25:03 +02:00
Frédéric Mangano-Tarumi
6f7ac1f13b review the code comments
In particular, delete the obsolete TODOs.
2020-08-24 21:51:23 +02:00
Frédéric Mangano-Tarumi
ea4d74d844 proper permissions setting on output files 2020-08-23 17:51:45 +02:00