From 8aa4c82b81600cccd3d89baf3d489f0b7ef046ea Mon Sep 17 00:00:00 2001 From: "C. McEnroe" Date: Sun, 13 Jun 2021 13:56:59 -0400 Subject: Add thr:in-reply-to elements to Atom entries --- atom.c | 38 ++++++++++++++++++++++++-------------- bubger.1 | 9 +++++++++ 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/atom.c b/atom.c index b49a2b7..782b265 100644 --- a/atom.c +++ b/atom.c @@ -34,17 +34,17 @@ #include "archive.h" -static char *atomID(const struct Envelope *envelope) { +static char *atomID(const char *messageID) { struct Variable vars[] = { - { "messageID", envelope->messageID }, + { "messageID", messageID }, {0}, }; return templateString("mid:[messageID]", vars, escapeURL); } -static char *atomEntryURL(const struct Envelope *envelope) { +static char *atomEntryURL(const char *messageID) { struct Variable vars[] = { - { "messageID", envelope->messageID }, + { "messageID", messageID }, { "type", "mbox" }, {0}, }; @@ -68,14 +68,18 @@ static int atomAuthor(FILE *file, struct Address addr) { } int atomEntryOpen(FILE *file, const struct Envelope *envelope) { - char *id = atomID(envelope); - char *url = atomEntryURL(envelope); + char *id = atomID(envelope->messageID); + char *url = atomEntryURL(envelope->messageID); + char *ref = (envelope->inReplyTo ? atomID(envelope->inReplyTo) : NULL); const char *template = Q( [id] [title] [updated] + [+ref] + + [-] ); struct Variable vars[] = { { "id", id }, @@ -83,6 +87,7 @@ int atomEntryOpen(FILE *file, const struct Envelope *envelope) { { "updated", iso8601(envelope->time).s }, { "base", baseURL }, { "url", url }, + { "ref", ref }, {0}, }; int error = 0 @@ -90,6 +95,7 @@ int atomEntryOpen(FILE *file, const struct Envelope *envelope) { || atomAuthor(file, envelope->from); free(id); free(url); + free(ref); return error; } @@ -112,9 +118,9 @@ int atomEntryClose(FILE *file) { return templateRender(file, Q(), NULL, NULL); } -static char *atomThreadURL(const struct Envelope *envelope, const char *type) { +static char *atomThreadURL(const char *messageID, const char *type) { struct Variable vars[] = { - { "messageID", envelope->messageID }, + { "messageID", messageID }, { "type", type }, {0}, }; @@ -124,12 +130,14 @@ static char *atomThreadURL(const struct Envelope *envelope, const char *type) { #define XML_DECL "" int atomThreadOpen(FILE *file, const struct Envelope *envelope) { - char *id = atomID(envelope); - char *atom = atomThreadURL(envelope, "atom"); - char *html = atomThreadURL(envelope, "html"); - char *mbox = atomThreadURL(envelope, "mbox"); + char *id = atomID(envelope->messageID); + char *atom = atomThreadURL(envelope->messageID, "atom"); + char *html = atomThreadURL(envelope->messageID, "html"); + char *mbox = atomThreadURL(envelope->messageID, "mbox"); const char *template = XML_DECL Q( - + bubger [id] [title] @@ -176,7 +184,9 @@ int atomIndexOpen(FILE *file, const char *name) { char *atom = atomIndexURL(name, "atom"); char *html = atomIndexURL(name, "html"); const char *template = XML_DECL Q( - + bubger [base][atom] [+name][name] - [-][title] diff --git a/bubger.1 b/bubger.1 index 0e5d7fe..4edfd36 100644 --- a/bubger.1 +++ b/bubger.1 @@ -338,6 +338,15 @@ bubger TO "list+bubger@causal.agency" .%U https://tools.ietf.org/html/rfc4287 .%D December 2005 .Re +.It +.Rs +.%A J. Snell +.%T Atom Threading Extensions +.%I IETF +.%R RFC 4685 +.%U https://tools.ietf.org/html/rfc4685 +.%D September 2006 +.Re .El . .Sh AUTHORS -- cgit 1.4.1 2019-04-03Add Space OperaJune McEnroe 2019-03-22Add An Unkindness of GhostsJune McEnroe 2019-03-14Highlight line continuations in line commentsJune McEnroe 2019-03-14Add The Long Way to a Small Angry PlanetJune McEnroe 2019-03-10Add Bleachers Tiny Desk ConcertJune McEnroe 2019-02-28Add Station ElevenJune McEnroe 2019-02-27Use getsubopt(3) to parse -o options in hiJune McEnroe 2019-02-27Add type and ulimit shell keywordsJune McEnroe 2019-02-27Fix make target pattern whitespace in hiJune McEnroe 2019-02-27Delete extraneous <pre> in html.shJune McEnroe 2019-02-24Use setopt in upJune McEnroe 2019-02-24Add setoptJune McEnroe 2019-02-20Match make targets as TagJune McEnroe 2019-02-20Use $PWD in html.sh to pass absolute path to manJune McEnroe 2019-02-20Factor out html.sh and produce html for all sourcesJune McEnroe Except for gfx-cocoa because I don't have an Objective-C highlighter. Also hypothetically the .h rule could match up headers with .3 manual pages if I cared to write them. 2019-02-20Add Dirk Gently's Holistic Detective AgencyJune McEnroe 2019-02-20Move /opt/pkg after /usr in PATHJune McEnroe Installing mandoc from pkgsrc also installs a man executable which is horribly broken. Keep using the system man. 2019-02-20Set man_hard_wrap in nvimJune McEnroe Vendoring man.vim until <https://github.com/neovim/neovim/pull/9633> is merged and appears in a release. 2019-02-18Use hi -o anchor in upJune McEnroe 2019-02-18Don't match nested parentheses in Tag for CJune McEnroe Fixes mistaken highlight of: pngWrite(file, (uint8_t []) { 0, 0, 0 }, 3); 2019-02-18Match whitespace between * [] {}June McEnroe 2019-02-18Fix function-like #define regexJune McEnroe A define like #define FOO (1) is not function-like. 2019-02-18Match Tag in RustJune McEnroe 2019-02-18Match sh functions as TagJune McEnroe 2019-02-18Match Sh and Ss as Tag in mdocJune McEnroe 2019-02-18Match statics and typedefs as TagJune McEnroe 2019-02-18Clean up htmlHeaderJune McEnroe 2019-02-18Remove hi line numberingJune McEnroe Tags are much better for referring to specific parts of a file and line numbering is better done by a post-processing tool such as cat -n or producing a two-column HTML <table>. 2019-02-18Add Tag class to hiJune McEnroe 2019-02-17Generate HTML with hi -n -f html -o anchorJune McEnroe Running hi twice to insert stuff between the head and the content is a bit of a hack but oh well. 2019-02-17Add hi -f html -o anchor for line number linksJune McEnroe 2019-02-17Simplify temp trap in upJune McEnroe 2019-02-17Add line numbers to hiJune McEnroe Renames previous -n option to -m to stay consistent with cat -n. Prefixing lines with line numbers affects where the first tab indent ends up relative to the text above it. Not sure if it's worth fixing somehow. 2019-02-17Always split spans after newlinesJune McEnroe Simplifies ANSI and IRC output code, and prepares for line numbered output. 2019-02-15Color format specifiers light cyan in vimJune McEnroe 2019-02-15Highlight Interp as yellowJune McEnroe 2019-02-15Highlight strings in sh command substitutionsJune McEnroe 2019-02-15Add nmap gpJune McEnroe 2019-02-14Avoid newline when copying URL to pasteboardJune McEnroe 2019-02-13Add forgotten "sixth" book of H2G2June McEnroe