Commit Graph

138 Commits

Author SHA1 Message Date
Frédéric Mangano
0067162ffb Support NUL delimiters with -z 2024-04-30 16:24:58 +09:00
Frédéric Mangano
49bb94841e Add option --set-vendor 2023-05-04 11:38:35 +09:00
Frédéric Mangano
dcb128f179 Add option --vendor 2023-05-04 11:33:16 +09:00
Frédéric Mangano
330fe5e9f2 Release 1.8.0 2023-03-07 10:39:13 +09:00
Frédéric Mangano
54136057d8 Remove the old UTF-8 conversion routines 2023-03-03 15:13:56 +09:00
Frédéric Mangano
1d13c258e4 Use std::u8string where appropriate 2023-03-03 15:13:44 +09:00
Frédéric Mangano
89dc000927 Rework the encoding converter to support std::u8string 2023-03-03 15:03:07 +09:00
Frédéric Mangano
befae72d2a Support reading the cover art from a stream 2023-03-02 16:21:25 +09:00
Frédéric Mangano
46cc78bfff Deduce the cover’s MIME type from its signature 2023-03-02 15:17:41 +09:00
Frédéric Mangano
558160d5c3 Add option --set-cover 2023-03-01 18:32:13 +09:00
Frédéric Mangano
74e42ee917 Introduce byte strings 2023-02-28 17:04:03 +09:00
Frédéric Mangano
92b320f9d9 Warn on multiple cover arts 2023-02-28 15:41:09 +09:00
Frédéric Mangano
ec68f5c0e9 Add option --output-cover 2023-02-27 12:22:28 +09:00
Frédéric Mangano
66fb3574a1 Implement embedded picture decoding 2023-02-27 12:22:28 +09:00
Frédéric Mangano
9652f50316 Allow std literals everywhere 2023-02-22 17:15:21 +09:00
Frédéric Mangano
a435a28e9f Implement base64 encoding and decoding 2023-02-22 17:15:21 +09:00
Frédéric Mangano
3b20617de4 Parse continuation lines in --set-all 2023-02-10 15:21:07 +09:00
Frédéric Mangano
6d6722fb24 Support multiline tags in non-UTF-8 environments
The \t to \t\n substitution assumed an ASCII-compatible environment and would not have worked under
UTF-16. It’s therefore safer to perform the operation before the encoding conversion.
2023-02-07 15:59:44 +09:00
Frédéric Mangano
7eea19633c Support multiple-page OpusTags packets 2023-02-02 15:05:37 +09:00
Frédéric Mangano
d88498e4fd Renumber the pages past the OpusTags packet
We will soon be able to process OpusTags packets spanning multiple pages, which would offset the
page number of all the succeeding pages. This change prepares the process loop for that feature.
2023-02-02 15:05:37 +09:00
Frédéric Mangano
953ae490d4 Fix the test suite on macOS 2023-01-27 15:53:15 +09: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
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
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
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
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
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
8252f94084 --set-all: Ignore comments starting with # 2020-10-11 18:06:39 +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
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
ea4d74d844 proper permissions setting on output files 2020-08-23 17:51:45 +02:00
Frédéric Mangano-Tarumi
c774c86286 rename liblibopustags to libot
It follows the name of the C++ namespace, and avoids confusion with the
opustags executable.
2019-01-26 17:07:53 -05:00
Frédéric Mangano-Tarumi
8ba3db8bbd t: safer argument casting for getopt 2019-01-12 16:09:18 -05:00
Frédéric Mangano-Tarumi
87bdd6fe22 t: cannot rely on iconv's //TRANSLIT
It's really system-dependant. As long as it doesn't break the regular
conversion it's fine. Managing transliteration is a nice to have but we
cannot expect it would work everywhere.

On systems that don't support it, iconv will trigger an EILSEQ.
2019-01-12 15:46:04 -05:00