From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,MAILING_LIST_MULTI autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 26550 invoked from network); 8 Jun 2021 21:16:20 -0000 Received: from lists.zx2c4.com (165.227.139.114) by inbox.vuxu.org with ESMTPUTF8; 8 Jun 2021 21:16:20 -0000 Received: by lists.zx2c4.com (ZX2C4 Mail Server) with ESMTP id 1eb16ae0; Tue, 8 Jun 2021 21:16:03 +0000 (UTC) Return-Path: Received: from new3-smtp.messagingengine.com (new3-smtp.messagingengine.com [66.111.4.229]) by lists.zx2c4.com (ZX2C4 Mail Server) with ESMTPS id 604bcc08 (TLSv1.3:AEAD-AES256-GCM-SHA384:256:NO) for ; Tue, 8 Jun 2021 21:16:01 +0000 (UTC) Received: from compute3.internal (compute3.nyi.internal [10.202.2.43]) by mailnew.nyi.internal (Postfix) with ESMTP id D5C4258087A; Tue, 8 Jun 2021 17:06:59 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute3.internal (MEProxy); Tue, 08 Jun 2021 17:06:59 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=causal.agency; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; s=fm1; bh=YOqW44IjOnVq4GzZ5B5UsL8J1t OmdfWrCN2VcCfbGTc=; b=DicePUsju0sJPqNZbR6WrXXMn7/6w0maCoDmPJZI1m XRfX8yqm/fGkIQ4pc+2DL9S0ShxH+FLVCDRlYyz7eUW/JlWEirRQcOxlmdx59pll RFg0aG9X1R3/2F/8PfkarYqSX9FTNTsaPe0Iafp0Nd8KsE9sQc+FqPdKHNMt1yBG G30L22ZdZ3oYap/Iggx6/wZAut11PXXGW6fKIywLdTJl4mdZyvjBj9ekuZfnyL3l C5Q1DXLswOjeoSQc1oTW2jvlnN0QAjAH6MyJdX6i+g9XzpV6RO43woUoATMqccTS TD0t1e0leJjW4ZArb5FfUQPYdt3Y3Dfl7N+i2eCrolXA== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:date:from :message-id:mime-version:subject:to:x-me-proxy:x-me-proxy :x-me-sender:x-me-sender:x-sasl-enc; s=fm3; bh=YOqW44IjOnVq4GzZ5 B5UsL8J1tOmdfWrCN2VcCfbGTc=; b=Wg4hLwdX7DEg4Q4w2QflgRJEQt32f/7gD DLG88MUUq4vHsghAnQrwWwPVxyS4rF99jC+UTnmnXsbYazhSZKwR42z6nYjmq4Bh +ozorLyJJdTtXO28f8umAI6F7ePGFiF4V46n8IzTtHuxyFnn7vX5xErd27cAHVyR Kap74rRwK0sUyEdkxjaNWjzru8NtPlD0GZSfXYg9yTZCMyy1luBUS+S1L25enSqx VlzmbmACUXA1t9Li9lmvLcJRh5LZk7JQp0PZG7zrNrfPtcwwAri7/mi065xJUptd NTR4tbpc9G4ckT1wFJBfn5yWhhfnflHZhXMEKZjxfzHviHP/IEHEw== X-ME-Sender: X-ME-Received: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduledrfedtledgudegtdcutefuodetggdotefrod ftvfcurfhrohhfihhlvgemucfhrghsthforghilhdpqfgfvfdpuffrtefokffrpgfnqfgh necuuegrihhlohhuthemuceftddtnecuogevohgrshhtrghlqdfhgeduvddqtddvucdlud ehtddmnecujfgurhephffvufffkffoggfgsedtkeertdertddtnecuhfhrohhmpedfvedr ucfotgfgnhhrohgvfdcuoehjuhhnvgestggruhhsrghlrdgrghgvnhgthieqnecuggftrf grthhtvghrnhepudeiuddtfeeiieejtdffudefkedvkeevgeegvdefteffvefhudeiiefh keduuddvnecuffhomhgrihhnpeiffedrohhrghdpqhhrhidrshhhohifnecuvehluhhsth gvrhfuihiivgeptdenucfrrghrrghmpehmrghilhhfrhhomhepjhhunhgvsegtrghushgr lhdrrghgvghntgih X-ME-Proxy: Received: by mail.messagingengine.com (Postfix) with ESMTPA; Tue, 8 Jun 2021 17:06:59 -0400 (EDT) From: "C. McEnroe" To: cgit@lists.zx2c4.com Cc: "C. McEnroe" Subject: [PATCH] ui-atom: generate valid Atom feeds Date: Tue, 8 Jun 2021 17:06:54 -0400 Message-Id: <20210608210654.89771-1-june@causal.agency> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: cgit@lists.zx2c4.com X-Mailman-Version: 2.1.30rc1 Precedence: list List-Id: List for cgit developers and users List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: cgit-bounces@lists.zx2c4.com Sender: "CGit" Fixes several RFC 4287 violations: > 4.1.1. The "atom:feed" Element > o atom:feed elements MUST contain exactly one atom:id element. > o atom:feed elements SHOULD contain one atom:link element with a rel > attribute value of "self". This is the preferred URI for > retrieving Atom Feed Documents representing this Atom feed. > o atom:feed elements MUST contain exactly one atom:updated element. An atom:id element is generated from cgit_currentfullurl(), and an atom:link element with a rel attribute of "self" is generated with the same URL. An atom:updated element is generated from the date of the first commit in the revision walk. > 4.1.2. The "atom:entry" Element > o atom:entry elements MUST NOT contain more than one atom:content > element. The second atom:content element with the type of "xhtml" is removed. > 4.2.6. The "atom:id" Element > Its content MUST be an IRI, as defined by [RFC3987]. Note that the > definition of "IRI" excludes relative references. Though the IRI > might use a dereferencable scheme, Atom Processors MUST NOT assume it > can be dereferenced. The atom:id elements for commits now use URNs in the "sha1" or "sha256" namespaces. Although these are not registered URN namespaces, they see use in the wild, for instance as part of magnet URIs. Signed-off-by: C. McEnroe --- ui-atom.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/ui-atom.c b/ui-atom.c index 1056f36..8329e01 100644 --- a/ui-atom.c +++ b/ui-atom.c @@ -67,17 +67,12 @@ static void add_entry(struct commit *commit, const char *host) html("'/>\n"); free(pageurl); } - htmlf("%s\n", hex); + html(""); + html_txtf("urn:%s:%s", the_hash_algo->name, hex); + html("\n"); html("\n"); html_txt(info->msg); html("\n"); - html("\n"); - html("
\n"); - html("
\n");
-	html_txt(info->msg);
-	html("
\n"); - html("
\n"); - html("
\n"); html("\n"); cgit_free_commitinfo(info); } @@ -90,6 +85,7 @@ void cgit_print_atom(char *tip, const char *path, int max_count) struct commit *commit; struct rev_info rev; int argc = 2; + int first = 1; if (ctx.qry.show_all) argv[1] = "--all"; @@ -130,15 +126,28 @@ void cgit_print_atom(char *tip, const char *path, int max_count) html_txt(ctx.repo->desc); html("\n"); if (host) { + char *fullurl = cgit_currentfullurl(); char *repourl = cgit_repourl(ctx.repo->url); + html(""); + html_txtf("%s%s%s", cgit_httpscheme(), host, fullurl); + html("\n"); + html("\n"); html("\n"); + free(fullurl); free(repourl); } while ((commit = get_revision(&rev)) != NULL) { + if (first) { + html(""); + html_txt(show_date(commit->date, 0, + date_mode_from_type(DATE_ISO8601_STRICT))); + html("\n"); + first = 0; + } add_entry(commit, host); free_commit_buffer(the_repository->parsed_objects, commit); free_commit_list(commit->parents); -- 2.31.1