diff options
author | Robin Jarry <robin@jarry.cc> | 2023-01-17 14:33:09 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2023-01-26 00:20:45 +0100 |
commit | 3191ee171c435a43912264b131340af66fea8112 (patch) | |
tree | 2a68c5c4a3b9975d102cb379171548e7a8937da5 /filters/vectors/wrap-flowed.expected | |
parent | a8b6693f7e7bdcc8b73c3fa0baa0ef5f51993dc7 (diff) | |
download | aerc-3191ee171c435a43912264b131340af66fea8112.tar.gz |
filters: rewrite wrap in c
This utility introduced in commit c9524d265793 ("filters: add wrap
utility written in go") allows to reflow text to view emails that have
very long lines without breaking quotes, lists and indentation.
For such a simple task, go produces a binary that is 2.0M bytes on disk.
After stripping debugging symbols, it can be reduced to 1.2M bytes. All
of this for 267 lines of source code. This is a bit ridiculous, provided
people may load this binary into memory multiple times per minute. This
tool is a small side-project that seems not suitable for golang.
Rewrite it in C. It now only depends on a POSIX libc to run. It is safe
to assume that there is one available on all *NIX systems in the world
of 2023. The resulting binary is now 27K bytes (15K after stripping).
To build it, a C compiler and libc headers are required. These should
most likely be available since they are dependencies of the go compiler
toolchain.
I have tested compilation (with clang-analyzer and gcc -fanalyzer) and
basic operation on FreeBSD, Fedora (glibc) and Alpine (musl libc). More
tests would probably be required on MacOSX and older Linux distros.
I also added test vectors to give some confidence that this works as
expected.
Update CI with aggressive gcc hardening flags and to run these tests
with valgrind --leak-check=full.
Command line options are unchanged:
usage: wrap [-h] [-w INT] [-r] [-l INT] [-f FILE]
Wrap text without messing up email quotes.
options:
-h show this help message
-w INT preferred wrap margin (default 80)
-r reflow all paragraphs even if no trailing space
-l INT minimum percentage of letters in a line to be considered
a paragaph
-f FILE read from filename (default stdin)
Signed-off-by: Robin Jarry <robin@jarry.cc>
Tested-by: Bence Ferdinandy <bence@ferdinandy.com>
Tested-by: Maxwell G <gotmax@e.email>
Diffstat (limited to 'filters/vectors/wrap-flowed.expected')
-rw-r--r-- | filters/vectors/wrap-flowed.expected | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/filters/vectors/wrap-flowed.expected b/filters/vectors/wrap-flowed.expected new file mode 100644 index 00000000..358b8109 --- /dev/null +++ b/filters/vectors/wrap-flowed.expected @@ -0,0 +1,94 @@ +Lorem ipsum dolor sit amet, vel id velit nonumy percipit, sed mutat partiendo +imperdiet ad, ad tritani deleniti duo? Vis id dicit inermis accumsan, ut +pertinax deterruisset his, at his quis appareat urbanitas. Pro falli invidunt +detraxit ex, vim cu graeci oblique contentiones, ea tale etiam aliquip eos. No +cum assum impetus verterem, tota feugait corpora ut vis. Sint harum eam cu, +magna doming quidam te est? Usu magna nihil antiopam et, eu latine ponderum +evertitur eos? At lucilius aliquando intellegebat mea, vis eros pertinax +similique ut. An mei deleniti + +forensibus. Iusto feugait maiestatis at nec, an est causae quaestio. Est ut +amet veritus, sea in tempor noluisse salutandi. Vis an omnis propriae, vix et +graece virtute, an integre sententiae his. Molestie tacimates id per, ex eum +etiam cetero? His cu altera constituam, eos ea inani dicant nonumy. Iudico +bonorum dissentiet eu quo. Usu ne purto essent qualisque, has alii soluta +adipisci ad, et fugit aeque omnesque mel. Fastidii facilisi inciderint usu cu, +ne iusto deterruisset his. Diceret expetendis reprimique id est, cu sit diam +tation accumsan, no per modus malorum. Pri scripta insolens sapientem an, +omnesque assueverit sea ea, eam paulo nemore argumentum te. Nam id atqui +incorrupte, cu eos quodsi ceteros. + +Vim ad sonet sadipscing, paulo epicuri mea ne. Mel an meliore denique omittam, +vidit insolens splendide no pri. Novum cetero quo ea, te his odio aperiri +hendrerit, at sonet mediocrem eam. Ea eam autem oporteat, est ut mucius +vituperatoribus. Soleat evertitur pri an? Cu vidit labore menandri nam, sit ex +paulo apeirian euripidis. Eos elit nominavi fabellas cu, has ne laoreet +torquatos! Accusam adolescens duo ut, legere periculis in qui, nibh euismod +epicurei vim id. Posse consul philosophia vis cu, ea brute delectus eum! +Debitis conclusionemque sed te, eam graeco equidem commune at. Eu duo laudem +animal, fugit scripserit ne eos. Ius delicata referrentur at? Vim id vidit +feugiat comprehensam? At error expetendis vel, vim habeo perfecto complectitur +ex. Ex vim possit persecuti! Unum referrentur instructior cu eum, alia legendos +incorrupte cu per, quo elitr veritus nominavi eu! + +> > Mei malis choro dolores ne, eu erat vocibus denique has? Sed ea ullum +> > deleniti, nam tritani aliquando complectitur ea! Mea no facer tempor +> > alienum, fugit laoreet gloriatur eos cu. Ne mollis ceteros eum, eos an +> > quodsi corpora. Modo ferri porro eu vis, putent dictas eloquentiam eos id. +> > Ei eum odio possim definiebas, eum noster doctus ea. Exerci nemore +> > gloriatur et vim! In torquatos sadipscing ius, ius ut debet dicant +> > senserit. Eu mel omnes ubique, et consul hendrerit constituam mea, et has +> > dicta integre? Cu eam suas libris? Nisl autem facilis duo ea, meis latine +> > intellegam quo an. Zril nonumes officiis te sed, pri harum luptatum +> > disputationi ex. Ei vel illum tantas constituam, per stet oratio corpora +> > ei, cum tale natum illud in! Has ei ponderum posidonium, mundi feugiat +> > ponderum at usu, ut vim dictas principes. +> > +> +> Tantas fuisset adversarium eos ei, quas dolorum albucius sea ne. Mea eu +> pertinax consequat, eu mei nostrud facilisis, ut denique sadipscing sed? Eu +> fugit elitr pericula per, nemore disputando his et. Ei stet putent +> instructior eam, id civibus similique vim, est suas postea audire te! Error +> cetero et sed. Eu quis animal pertinax mei, an nec omittam hendrerit? Ut +> melius utroque laboramus qui? + +Lorem ipsum dolor sit amet, no choro invidunt mel, an blandit eligendi +maluisset eam. Ne eam splendide omittantur. Eu vix ferri appareat sententiae, +eum falli menandri ne. Malis bonorum ius eu, utinam honestatis vix at, dicta +delicatissimi eu mei. Ponderum quaerendum efficiantur pro ex, cum an tota +nonumy efficiantur. + +- Ea insolens quaerendum mea. An pro viris quidam liberavisse, lorem facer + erroribus ad mel. At sea graece concludaturque, duo in impedit accumsan + consequat. Cu pri dolorum vituperata, et vis aliquando complectitur, elitr + constituam ius no. + +- No detraxit ocurreret sed. Mundi omnes solet qui no, nam ex viderer + constituto. Et quo scripta aliquam gloriatur. At audiam dolorem ius, malis + omnes sensibus sit ut, eum quod euripidis ad. At nec verear senserit, + diceret honestatis et vel, quis conceptam et nec. Eam probo option ea. + +- Ius summo dolore te, in quo choro tritani atomorum? Esse putant nec te? + Consul iuvaret debitis vix ei. Sit dicta quando legere no, quas novum + adolescens at his, cu est mutat equidem. Ea mea tation bonorum, mel + complectitur deterruisset id. Vim ut dicunt tamquam, et his illud invenire. + +- Mei at quas ceteros tibique? Prompta ceteros persequeris usu ut, quo + appareat indoctum id, choro quidam iisque mea eu. Ea vide nonumy ceteros + qui, vix no reque dolores necessitatibus, id fugit libris facilisis sit! Ne + ocurreret honestatis nam. Ex reque maluisset per, eam facer ludus dicam ad. + Eam modus impedit intellegat ei! Per no libris utamur nostrum, cu sed mollis + accusamus. + +- Nam at nibh meis singulis, augue aliquando liberavisse eos ea. Audire + facilis perpetua mel ea. Vel te oportere indoctum volutpat, omittam eligendi + patrioque per an. Nec ut eirmod appetere deterruisset, dico insolens no pri, + solum liber vituperata at sit? Sea id ipsum fugit viris. + + + +- Sea bonorum instructior consectetuer in. Eum ex impedit volutpat. Pro an + stet definiebas necessitatibus. Aperiam facilis his et! Ei vim labitur + petentium, illum contentiones duo in? Id sed sale scriptorem. Sed et tollit + albucius? + |