From patchwork Wed Apr 9 12:46:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Trofimov X-Patchwork-Id: 41495 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id E055627BC4B; Wed, 9 Apr 2025 13:47:38 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 0996227BC49 for ; Wed, 9 Apr 2025 13:47:38 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Upr-0005yD-52; Wed, 09 Apr 2025 08:47:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u2Upk-0005vT-9x for guix-patches@gnu.org; Wed, 09 Apr 2025 08:47:13 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u2Uph-0004a7-LP; Wed, 09 Apr 2025 08:47:11 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:Date:From:To:In-Reply-To:References:Subject; bh=oBly8/ybtx0vOTH8DSTkoRFYmSxWC/vxVFPkOmU9JUk=; b=t5hK39z1KMHqjuIb77sKh2SwiCDq8zPkTQt+Tdm/fqzxPb0ZrrQiclAwZrVqaXiXf91EU54olWunMvoildgnnUpsLppWSKcwraGdDO3sPoaYItiAA4OJD0hk7pt0bZ4ZaBrGKoBhgmKXN4xquatKsxKXPNVrt3mY9Vc5zbpQtho6I27j8W0wRVBusHQHnzbF+HcKDt2X1AizalGGulF+L7GqROqODSlTXnUfAaJtLzaTF93s2og1B3ky7a+eLJKP2aR3jgcw1hX4LFzibenlUBhN/CtcnjhHHQCCPWWjPcRztLqbnwgMLGs2rtbTjEjtVVxneOWxcTf0Rb1uYCAwVQ==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1u2Upa-0003pG-BT; Wed, 09 Apr 2025 08:47:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77387] [PATCH v2 1/2] man-db: Parse man macro arguments better. References: In-Reply-To: Resent-From: Sergey Trofimov Original-Sender: "Debbugs-submit" Resent-CC: sarg@sarg.org.ru, ludo@gnu.org, guix@cbaines.net, dev@jpoiret.xyz, othacehe@gnu.org, zimon.toutoune@gmail.com, me@tobias.gr, guix-patches@gnu.org Resent-Date: Wed, 09 Apr 2025 12:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77387 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77387@debbugs.gnu.org Cc: Sergey Trofimov , Sergey Trofimov , Ludovic =?utf-8?q?Court=C3=A8s?= , Christopher Baines , Josselin Poiret , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice X-Debbugs-Original-Xcc: Sergey Trofimov , Ludovic =?utf-8?q?Court=C3=A8s?= , Christopher Baines , Josselin Poiret , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice Received: via spool by 77387-submit@debbugs.gnu.org id=B77387.174420281814692 (code B ref 77387); Wed, 09 Apr 2025 12:47:02 +0000 Received: (at 77387) by debbugs.gnu.org; 9 Apr 2025 12:46:58 +0000 Received: from localhost ([127.0.0.1]:38223 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u2UpV-0003on-AB for submit@debbugs.gnu.org; Wed, 09 Apr 2025 08:46:57 -0400 Received: from mail-ed1-x52d.google.com ([2a00:1450:4864:20::52d]:54593) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1u2UpS-0003oQ-22 for 77387@debbugs.gnu.org; Wed, 09 Apr 2025 08:46:55 -0400 Received: by mail-ed1-x52d.google.com with SMTP id 4fb4d7f45d1cf-5efe8d9eb12so9908364a12.1 for <77387@debbugs.gnu.org>; Wed, 09 Apr 2025 05:46:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sarg.org.ru; s=google; t=1744202807; x=1744807607; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=oBly8/ybtx0vOTH8DSTkoRFYmSxWC/vxVFPkOmU9JUk=; b=J9nhG90jN914UKkGIVcBP/1tH9l9tZ5BaweCNUTcn4ESn5614LPtHJUIR93TmG2j8J cFfj3U64fBUEheibD8s7ntZHxPjAlhffuELAII70d+WvCBqk0wfdpvn4p7w0WOe8TReH 6rt35AUiRWOCKAj6QgrpOVodbPBVZlSKkNYuEl8MnMZFQ0LvCGm3HsPMA0be03PaHFsh hkVnVOQF+frRhAfp6HFudBIY60BhEcI7W9mJ1KyO3pvWLFtstt/t3CxcZdjPxhb/lVTq Wwy6I5OFMNjbYnpgUE6Iy4eGxs/BOn0+uycyEwFh6Th4yvCKlfovxLQdSCkFTlhWw24t zU+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744202807; x=1744807607; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=oBly8/ybtx0vOTH8DSTkoRFYmSxWC/vxVFPkOmU9JUk=; b=FZTLqiXZqtow+za8gJRyyIy1VASG8XiKpoLy/9eRtSfVbBfK9k8zQIIPsC6kxWBace My3YqNGnx9dWpFU0eCK9+DOEuWdwut/XUblv70/lb83W8hY+RRA8Z6HyEunfIjVIuMQv TOmLIxlOjIx1bQ4QnRXBeyt9YsoEQ/9wvwCXllF+kCzfIb4OJ9PBycRsvd8FAUARHHo/ eeZoH+8y+QSjDzMBlWQJ+ydEk15Y2/Jppn3+I37EXjLaZpJmmpF/o1BFOofKJ3hufWMs SzFIXr9H6xkbgxna1cJ8IdPCBfyZt02EeEf63agJE2hIAO92bDprbI+b/zl6dNijzUSm MG6Q== X-Gm-Message-State: AOJu0Yz/ZGA1oeBXDKWF4K93wTRM73iiEQfZ3pyJkZonJaAYmEXYnyJs W+3a/Jbe4gSoGdgwf/BUlnA0vpH7mRYS9+Og8LCrgoE2ZV68/fzaOfcT1sxWds9yHsJ+kxvgESC CSjA= X-Gm-Gg: ASbGncuNseZknHcUMjX+1ajXyC25k/7HWZJRLc3e+KiEDSpxSYIQp1u1DVDt+xFBj+K AKWobEZzARC/vZHMe+al5JKjrqHty1WQ55DNeH0z9O5/HYTywBk9qKvHp10RBv8YhOZlUIBn7HE fmXPwg+kwLnlgwisiOUI/jmBGawB/NHlqURGfcV+NJfi5KLW4QsHncTMATJLhpuZ8Vcpk5U0v5C AV8Muut8/DQT6ec85Svo3fU6akGHj5tv3ipDbX8cxlvDaqfEcu5l2RZDN8FixmI0LTUx4ZZUDyS HJgPr5HoDHSYfTsQTU7ojuNX1mNmvctPZvLe/NBD+N8vCEF2 X-Google-Smtp-Source: AGHT+IFpD8u96UD8JU2yZppn8BNtTniP+gQ95XU/N92kuPDvbBloe3QGdHn1S7io9Ta2lfpB7JeS5w== X-Received: by 2002:a17:906:e87:b0:ac1:fb27:d3a2 with SMTP id a640c23a62f3a-aca9d5cedebmr207689566b.5.1744202806332; Wed, 09 Apr 2025 05:46:46 -0700 (PDT) Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-acaa1c0126asm92676766b.78.2025.04.09.05.46.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 05:46:45 -0700 (PDT) Date: Wed, 9 Apr 2025 14:46:40 +0200 Message-ID: X-Mailer: git-send-email 2.49.0 MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Sergey Trofimov X-ACL-Warn: , Sergey Trofimov via Guix-patches X-Patchwork-Original-From: Sergey Trofimov via Guix-patches via From: Sergey Trofimov Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/man-db.scm (man-macro-tokenize): New procedure to parse man macros. (man-page->entry): Parse macro line using man-macro-tokenize. Change-Id: Iea0ffbc65290757df746138e0a6174646b5a3eb8 --- guix/man-db.scm | 55 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 9 deletions(-) base-commit: 621d09a185b106364fe7636923ab39c8bca35141 -- 2.49.0 diff --git a/guix/man-db.scm b/guix/man-db.scm index bba90ed473..1259658f52 100644 --- a/guix/man-db.scm +++ b/guix/man-db.scm @@ -161,16 +161,51 @@ (define (read-synopsis port) (line (loop (cons line lines)))))) +(define (man-macro-tokenize input) + "Split INPUT string, a man macro invocation, into a list containing the macro's +name followed by its arguments." + (let loop ((pos 0) + (tokens '()) + (characters '()) + (in-string? #f)) + (if (>= pos (string-length input)) + ;; End of input + (reverse (if (null? characters) + tokens + (cons (list->string (reverse characters)) tokens))) + (let ((c (string-ref input pos))) + (cond + ;; Inside a string + (in-string? + (if (char=? c #\") + (if (and (< (+ pos 1) (string-length input)) + (char=? (string-ref input (+ pos 1)) #\")) + ;; Double quote inside string + (loop (+ pos 2) tokens (cons #\" characters) #t) + ;; End of string + (loop (+ pos 1) (cons (list->string (reverse characters)) tokens) '() #f)) + ;; Regular character in string + (loop (+ pos 1) tokens (cons c characters) #t))) + + ;; Whitespace outside string + ((char-whitespace? c) + (if (null? characters) + (loop (+ pos 1) tokens '() #f) + (loop (+ pos 1) (cons (list->string (reverse characters)) tokens) '() #f))) + + ;; Start of string + ((char=? c #\") + (if (null? characters) + (loop (+ pos 1) tokens '() #t) + (loop pos (cons (list->string (reverse characters)) tokens) '() #f))) + + ;; Symbol character + (else + (loop (+ pos 1) tokens (cons c characters) #f))))))) + (define* (man-page->entry file #:optional (resolve identity)) "Parse FILE, a gzip or zstd compressed man page, and return a for it." - (define (string->number* str) - (if (and (string-prefix? "\"" str) - (> (string-length str) 1) - (string-suffix? "\"" str)) - (string->number (string-drop (string-drop-right str 1) 1)) - (string->number str))) - (define call-with-input-port* (cond ((gzip-compressed? file) call-with-gzip-input-port) @@ -189,8 +224,10 @@ (define* (man-page->entry file #:optional (resolve identity)) (if (eof-object? line) (mandb-entry file name (or section 0) (or synopsis "") kind) - (match (string-tokenize line) - ((".TH" name (= string->number* section) _ ...) + ;; man 7 groff groff_mdoc groff_man + ;; look for metadata in macro invocations (lines starting with .) + (match (and (string-prefix? "." line) (man-macro-tokenize line)) + ((".TH" name (= string->number section) _ ...) (loop name section synopsis kind)) ((".SH" (or "NAME" "\"NAME\"")) (loop name section (read-synopsis port) kind)) From patchwork Wed Apr 9 12:46:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Sergey Trofimov X-Patchwork-Id: 41496 Return-Path: X-Original-To: patchwork@mira.cbaines.net Delivered-To: patchwork@mira.cbaines.net Received: by mira.cbaines.net (Postfix, from userid 113) id D0D0E27BC4B; Wed, 9 Apr 2025 13:48:19 +0100 (BST) X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on mira.cbaines.net X-Spam-Level: X-Spam-Status: No, score=-7.4 required=5.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,MAILING_LIST_MULTI,RCVD_IN_DNSWL_BLOCKED,RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_CERTIFIED,RCVD_IN_VALIDITY_RPBL,RCVD_IN_VALIDITY_SAFE, SPF_HELO_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.6 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) by mira.cbaines.net (Postfix) with ESMTPS id 54CDC27BC49 for ; Wed, 9 Apr 2025 13:48:19 +0100 (BST) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1u2Uqe-00065w-DN; Wed, 09 Apr 2025 08:48:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1u2Uqc-00065l-28 for guix-patches@gnu.org; Wed, 09 Apr 2025 08:48:06 -0400 Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1u2Uqb-0004fe-D5; Wed, 09 Apr 2025 08:48:05 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=MIME-Version:References:In-Reply-To:Date:From:To:Subject; bh=ucLOSm14qKdOSQif27H7Y9oQ4cdaGa8rKhIfks6CXtI=; b=nUK4DqT3+SJkyIACvbjw/b3S/MDOzs8NuL8cv9u3jFxTVQ8eT03vgf2FthpRxpIA8o43EMRmFCEzZy/zm/nn6rokfz53sWYYELPm3me14G2FGq5BasPmb3/geXkxOvyp+R+jVcQuoj66NvLsQT6n5HTupz4fqxEjhefYGPXb9u8CJ30kG4sEVvXUJaKe2GtgUKDX7eIPDAC5rE43feM+SO/iUbXLte9EStrOf8Wc6Vfs0uvinh5ARIDXeq2+aq/XNU52XF+7NGR6Du+sAFZvrttrowIaVWgeX+s3M6BP3qXLgSMBp4KLzvu9vk0vSzvzJZKqh1Rle8aWKacvc+oErw==; Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1u2UqY-0003ri-1p; Wed, 09 Apr 2025 08:48:02 -0400 X-Loop: help-debbugs@gnu.org Subject: [bug#77387] [PATCH v2 2/2] man-db: Support mdoc-formatted man pages. Resent-From: Sergey Trofimov Original-Sender: "Debbugs-submit" Resent-CC: sarg@sarg.org.ru, ludo@gnu.org, guix@cbaines.net, dev@jpoiret.xyz, othacehe@gnu.org, zimon.toutoune@gmail.com, me@tobias.gr, guix-patches@gnu.org Resent-Date: Wed, 09 Apr 2025 12:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 77387 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: 77387@debbugs.gnu.org Cc: Sergey Trofimov , Sergey Trofimov , Ludovic =?utf-8?q?Court=C3=A8s?= , Christopher Baines , Josselin Poiret , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice X-Debbugs-Original-Xcc: Sergey Trofimov , Ludovic =?utf-8?q?Court=C3=A8s?= , Christopher Baines , Josselin Poiret , Mathieu Othacehe , Simon Tournier , Tobias Geerinckx-Rice Received: via spool by 77387-submit@debbugs.gnu.org id=B77387.174420282214720 (code B ref 77387); Wed, 09 Apr 2025 12:48:02 +0000 Received: (at 77387) by debbugs.gnu.org; 9 Apr 2025 12:47:02 +0000 Received: from localhost ([127.0.0.1]:38226 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1u2Upa-0003pF-4A for submit@debbugs.gnu.org; Wed, 09 Apr 2025 08:47:02 -0400 Received: from mail-ed1-x530.google.com ([2a00:1450:4864:20::530]:54446) by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.84_2) (envelope-from ) id 1u2UpV-0003oU-9p for 77387@debbugs.gnu.org; Wed, 09 Apr 2025 08:46:57 -0400 Received: by mail-ed1-x530.google.com with SMTP id 4fb4d7f45d1cf-5eb92df4fcbso11467490a12.0 for <77387@debbugs.gnu.org>; Wed, 09 Apr 2025 05:46:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sarg.org.ru; s=google; t=1744202811; x=1744807611; darn=debbugs.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ucLOSm14qKdOSQif27H7Y9oQ4cdaGa8rKhIfks6CXtI=; b=sZnMT8OWxxS6o7kruGOBVx9oh7tIyuWOicMM8yRsX+TWEVP+hM1iiiZ/oIQTlUVheb 45DHHaw+TRGEFG73p3A66fDJzBhyH+aK6AAND1t9ZkYYg6/xFyrc8Rj1B5tgrJRPQnPy K+cO1HH8zVtZ+Rhe0CYCMDmd6jvmrZCgLgmknNYwrZyEk6huL7yEvfFZ3btBLvrFe1wD HXkUjmS/QvKww4KeZnlneyhqPUQHj9jexbQp/ERWhPDNhaqQlVt0r4TbtXUHZCie23mw YuLrR4NmNiNLley/n7Y7TGDHJLOIqYoXETSDvI6Cr0qJz6sSdL0kWxvSWHb1Z9LFOpE0 +X0A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744202811; x=1744807611; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=ucLOSm14qKdOSQif27H7Y9oQ4cdaGa8rKhIfks6CXtI=; b=tAnH/f43ViXY+izL+2nzpOav+cj15YvHT7xRn1q33j36gMDXVn1T37ZkwmepfJVmlH At99WGJXDYGKga+X3A0Ri+bRnC9g5Ox9ugaxomi3NArc6BbKsg/fFGysadtXAm6uFGrO B6Gc31SPqWbvc7/mMUffLyphDKSUpgXGdLkQIv3gkAQhJrkQAOQYf3HZrvYAmPD4vuct Pb2ShHo9NFHD9knaV/gAQ+JWEougiAhMAB1f2Za1Wuatq7CNnGVD8P/wzJpHJYMoZJwQ 8Vl0JeavAi+UIyOZC4PV40EduIh0jzDefV8QsrY0ffzbpOsbhybdRMxA0VdsBO0CYdLN UGqg== X-Gm-Message-State: AOJu0YySlocZZiifz//f7b0hG7eb21qXz6PtFcEqt8gCGZq4mDWdjC0S LmHxwNVOA06je27NEQJOoRWZ/JMTPqUbvKar9FJJQbk+hDoTLwMVMzW4pUcj367eXiakZGBZXm7 J+zI= X-Gm-Gg: ASbGnctFtt5OSUeywR0q7dxLgbLDY9fjYiEJSRCeCHniQeo5l3iJMfr4lo0E6aEp3GY rXhw+xWvcSK+x13c9TzzNNlAJdI97ET0gP8cHeut7NvOBUU63mSYyvgTbfVRYKDMG9CRgc5+9u9 XVz1/CgIl+py89PIeIeBgLuhx8FVIOlqfu7zsemCn3oP6i3cbzbUi5gZbGP17zJJkLPye/FJBzk zURFqhE7TMMkL58mR+L8OvNH/8wwVHZZI455pLbrBZac5YpYEqDOsob41rMJ2uiWVQmoglfUt1o GkAwVmFYv7e5FjLE8/I+lvNVSxd0ec9h8RUB0gVjfN0KFUkg X-Google-Smtp-Source: AGHT+IFOcntlBj4xBVUTRo5xqPBvmzH7gj96AOyI2A+8nLDPbH3Tx1L6zs9kK5J0ip2fnC4BSaVkgA== X-Received: by 2002:a05:6402:1941:b0:5f0:b245:a15 with SMTP id 4fb4d7f45d1cf-5f2f86a3573mr1895032a12.33.1744202809851; Wed, 09 Apr 2025 05:46:49 -0700 (PDT) Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c]) by smtp.gmail.com with ESMTPSA id 4fb4d7f45d1cf-5f2fbc2d6a4sm773171a12.40.2025.04.09.05.46.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 09 Apr 2025 05:46:49 -0700 (PDT) Date: Wed, 9 Apr 2025 14:46:41 +0200 Message-ID: X-Mailer: git-send-email 2.49.0 In-Reply-To: References: MIME-Version: 1.0 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-to: Sergey Trofimov X-ACL-Warn: , Sergey Trofimov via Guix-patches X-Patchwork-Original-From: Sergey Trofimov via Guix-patches via From: Sergey Trofimov Errors-To: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org Sender: guix-patches-bounces+patchwork=mira.cbaines.net@gnu.org X-getmail-retrieved-from-mailbox: Patches * guix/man-db.scm (man-page->entry): Extract man name and section from .Dt macro. Change-Id: I02dc99d73dceecdb077315805025efad9a650e91 --- guix/man-db.scm | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/guix/man-db.scm b/guix/man-db.scm index 1259658f52..59723fb336 100644 --- a/guix/man-db.scm +++ b/guix/man-db.scm @@ -227,10 +227,13 @@ (define* (man-page->entry file #:optional (resolve identity)) ;; man 7 groff groff_mdoc groff_man ;; look for metadata in macro invocations (lines starting with .) (match (and (string-prefix? "." line) (man-macro-tokenize line)) - ((".TH" name (= string->number section) _ ...) + ;; "Title Header" or "Document title" + (((or ".TH" ".Dt") name (= string->number section) _ ...) (loop name section synopsis kind)) + ;; "Section Header" ((".SH" (or "NAME" "\"NAME\"")) (loop name section (read-synopsis port) kind)) + ;; include source ((".so" link) (match (and=> (resolve link) (cut man-page->entry <> resolve))