GNU bug report logs - #77387
[PATCH 0/2] man-db: Better parsing of man macros.

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: guix-patches; Reported by: Sergey Trofimov <sarg@HIDDEN>; Keywords: patch; dated Sun, 30 Mar 2025 14:27:02 UTC; Maintainer for guix-patches is guix-patches@HIDDEN.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 9 Apr 2025 13:00:07 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 09 09:00:07 2025
Received: from localhost ([127.0.0.1]:38267 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u2V2E-0004Up-Kj
	for submit <at> debbugs.gnu.org; Wed, 09 Apr 2025 09:00:07 -0400
Received: from mail-ej1-x636.google.com ([2a00:1450:4864:20::636]:53409)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <sarg@HIDDEN>) id 1u2V2B-0004Ri-SP
 for 77387 <at> debbugs.gnu.org; Wed, 09 Apr 2025 09:00:05 -0400
Received: by mail-ej1-x636.google.com with SMTP id
 a640c23a62f3a-ac2963dc379so194805466b.2
 for <77387 <at> debbugs.gnu.org>; Wed, 09 Apr 2025 06:00:03 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=sarg.org.ru; s=google; t=1744203598; x=1744808398; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:user-agent
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=QvcuQ2DRyo0TmylsQeHtNTrTxtIFql2NoHQagYAUvyY=;
 b=nAdaqCC1AVV1tt5H/4cBOBDUg4q4bVofVdmJt9Fy4X+uQNkuCdbZU2AQQ4hkUQPu1/
 CW/swA/BRzGmO/MDQ0lIXYSYnCMHp/EeBmGDBNE/lusiR9mpN/irNYTvvl0UzCUMVGLn
 m/CT3rObREZ1lgMk7s4u8/i9UR3G4VGy9iRlam+NvfTX+CC23yGf528oQ9l/JmAnDam0
 bqQh4tcM9+nCt+prhWAh2XXAGOo8rJ1lDdakKtTXszBCd/9SOkiqAMhpgg/gakAbnCxc
 ihxMlw2L3werzMH0ViqEzvXF/K/9jccYGzynnlqmnZEYBN6/Jvjqjq+A4HlG25/Gy+j/
 TNKQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1744203598; x=1744808398;
 h=content-transfer-encoding:mime-version:message-id:date:user-agent
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=QvcuQ2DRyo0TmylsQeHtNTrTxtIFql2NoHQagYAUvyY=;
 b=CCdrvCljQxx6jMB1RL7XAPrbS/FoMCImGtGS5NajNAMXjCNJPyLcBYIbxKG9jtt6Oj
 XWZfelliZgb3u6Dj0JcALc3Oig8DpYNXQ5oDYY/o+mn6iVX10iEbP1cvkaabGFePDL89
 HauyPNNbBDxaksm6DJqyg8QmCdF31D/MB0HiBqeWnj3bozv/R9QuyK0APuYd+tHMxbTf
 r2h6QZI2/T7JSKPfInCNwuabaXfO/moNaiq49UX/I4RxI4rGWFpSM1OfLcU/SP5IFJ70
 uD37Yl8FToOp1eIj+IyT52WgNlm3psXl4IIWPg3GRWI+3mMYlvr8jMw1gnBj8g2iB+d9
 3Luw==
X-Forwarded-Encrypted: i=1;
 AJvYcCU3yG87b9mgNkQflBHI+XZG3AieGP0+aJLLHZazf1vvmfB5gC5BI5bn/0DtY0ep6+JlITOk1w==@debbugs.gnu.org
X-Gm-Message-State: AOJu0Yy38ilAFEJrjuV/0Eud1VPCIlKGQc0e5xiRANNGnxsnapXEScr5
 1FpV8XvIR1IpvNNI+jdE/RdT8YWsIH3xYQREijMpqiclmVl5iVGAYBboPTl3fdw=
X-Gm-Gg: ASbGnctOMhKWfgZNDqIipQTPd7MAvqdWFP3N84R8tY3KWAyZz2isnb8jwsMPGyQ/cjT
 jqumdIi3QY8/bQTscTzqURaDfLHNbc1ANd/BsALKzRPh954vkV5a98P0Y9em9kA+CDlOey5nvyI
 /jqrfI/SfQv5eIXX//YlQpwLmF5t3FutxmUBbrdJd2NTNj0bL+T46rzi9FtMPWlrwu0igClHOec
 6gwKsx0ExhOUgCQXDb7DtuA8hnqlKZnSfyeEaVrTAWwG40+GEvPg5egE+8Qq+pcbuVdJjT3bsWC
 yoX4xF8eFT5ctwyvftItfZn4kiUT7hNiby0lAg==
X-Google-Smtp-Source: AGHT+IH9QIh6IwSNHX1ArmVa94Pv7SoTkCdEdJGXliq4xseSjs1UvCH+Wrq0+j6jlzCX0CQoO05BWQ==
X-Received: by 2002:a17:907:3ea2:b0:ac6:fc40:c996 with SMTP id
 a640c23a62f3a-aca9d6183b5mr230261266b.23.1744203597277; 
 Wed, 09 Apr 2025 05:59:57 -0700 (PDT)
Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-acaa1cb4070sm94092166b.102.2025.04.09.05.59.56
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Wed, 09 Apr 2025 05:59:56 -0700 (PDT)
From: Sergey Trofimov <sarg@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#77387] [PATCH 1/2] man-db: Parse man macro arguments better.
In-Reply-To: <87ikne4ric.fsf@HIDDEN> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?=
 =?utf-8?Q?s?= message of "Tue, 08 Apr 2025 17:11:55 +0200")
References: <cover.1743343624.git.sarg@HIDDEN>
 <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743343624.git.sarg@HIDDEN>
 <87r02cdr08.fsf@HIDDEN> <87h637ekj9.fsf@HIDDEN>
 <87ikne4ric.fsf@HIDDEN>
User-Agent: mu4e 1.12.9; emacs 30.0.92
Date: Wed, 09 Apr 2025 14:59:55 +0200
Message-ID: <87h62xh4ms.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77387
Cc: Josselin Poiret <dev@HIDDEN>, 77387 <at> debbugs.gnu.org,
 Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>,
 Tobias Geerinckx-Rice <me@HIDDEN>, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi,

Ludovic Courtès <ludo@HIDDEN> writes:
>>>> +             (in-string? #f))
>>>> +    (if (>= pos (string-length input))
>>>> +        ;; End of input
>>>> +        (unless in-string?
>>>> +          (reverse (if (null? current)
>>>> +                       tokens
>>>> +                       (cons (list->string (reverse current)) tokens))))
>>>
>>> So this procedure can return *unspecified*, right?  Sounds fishy.
>>>
>> Why is it fishy? Is it unconventional? Such return value is handled
>> correctly by the calling code (`match`).
>
> It’s unconventional; usually, procedures are monomorphic and in this
> case, the expectation is that it always returns a list of tokens.
>
> I would either return the empty list in the ‘in-string?’ case or throw
> an exception (because that means we failed to parse the thing).
>
> Does that make sense?

I wouldn't throw an exception as this would break the derivation
building an consequently profile switch. I've removed the offending
`unless` altogether. `man` itself seem to be forgiving for such syntax
violations.




Information forwarded to guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 9 Apr 2025 12:47:02 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 09 08:47:02 2025
Received: from localhost ([127.0.0.1]:38226 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u2Upa-0003pF-4A
	for submit <at> 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 <sarg@HIDDEN>) id 1u2UpV-0003oU-9p
 for 77387 <at> 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 <at> 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)
From: Sergey Trofimov <sarg@HIDDEN>
To: 77387 <at> debbugs.gnu.org
Subject: [PATCH v2 2/2] man-db: Support mdoc-formatted man pages.
Date: Wed,  9 Apr 2025 14:46:41 +0200
Message-ID: <df4d607fdf72164e9507a085c6cde892ecd8f5f4.1744202723.git.sarg@HIDDEN>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <a0040cd0faf8501a35b71848b33d83dc45d6659b.1744202723.git.sarg@HIDDEN>
References: <a0040cd0faf8501a35b71848b33d83dc45d6659b.1744202723.git.sarg@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Sergey Trofimov <sarg@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77387
Cc: Sergey Trofimov <sarg@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* 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))
-- 
2.49.0





Information forwarded to sarg@HIDDEN, ludo@HIDDEN, guix@HIDDEN, dev@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 9 Apr 2025 12:46:58 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Wed Apr 09 08:46:58 2025
Received: from localhost ([127.0.0.1]:38223 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u2UpV-0003on-AB
	for submit <at> 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 <sarg@HIDDEN>) id 1u2UpS-0003oQ-22
 for 77387 <at> 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 <at> 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)
From: Sergey Trofimov <sarg@HIDDEN>
To: 77387 <at> debbugs.gnu.org
Subject: [PATCH v2 1/2] man-db: Parse man macro arguments better.
Date: Wed,  9 Apr 2025 14:46:40 +0200
Message-ID: <a0040cd0faf8501a35b71848b33d83dc45d6659b.1744202723.git.sarg@HIDDEN>
X-Mailer: git-send-email 2.49.0
MIME-Version: 1.0
X-Debbugs-Cc: Sergey Trofimov <sarg@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77387
Cc: Sergey Trofimov <sarg@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* 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(-)

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 <mandb-entry>
 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))

base-commit: 621d09a185b106364fe7636923ab39c8bca35141
--
2.49.0





Information forwarded to sarg@HIDDEN, ludo@HIDDEN, guix@HIDDEN, dev@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 8 Apr 2025 15:30:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 08 11:30:48 2025
Received: from localhost ([127.0.0.1]:34782 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u2AuV-0008UJ-8N
	for submit <at> debbugs.gnu.org; Tue, 08 Apr 2025 11:30:47 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:35648)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1u2AuS-0008Ta-Tg
 for 77387 <at> debbugs.gnu.org; Tue, 08 Apr 2025 11:30:45 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1u2AuM-0002B9-1K; Tue, 08 Apr 2025 11:30:38 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To:
 From; bh=ymbHgPg+YChB9K95Ehsax65vEypB1Uz+EQWNr0hvTRk=; b=E8v+6khzx13jcjiz6Wjk
 JI9/a4xL85sJrSdK+w9oOtK32RHcBPQ+tIKNKpVaGU/A6VgfWBooRNjO8a7jWxgNOdN303za1vZSv
 IpnL9PJxBOOx+Van2lCJsLdgxiw0SbcM6c0c9K2xuORcdl/zLgVyqcB207SOKIJENPvGl4jK1JYvP
 8+7OJpwpY+Drf8brMN7k0ToH8FCSufCTnelvH7Cdg9gky2tIYo4EwcRKMOj04ITa4GiXC5zu2+/2O
 uGF441+mwKjBRvWzy2js68ar9tEsdFX0T0UsJBS9HHnpYGcedJWC32qvYRzy+DwSOTUdtfMpBZfKs
 BsQec3e5paJRBA==;
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Sergey Trofimov <sarg@HIDDEN>
Subject: Re: [bug#77387] [PATCH 1/2] man-db: Parse man macro arguments better.
In-Reply-To: <87h637ekj9.fsf@HIDDEN> (Sergey Trofimov's message of "Tue, 
 01 Apr 2025 21:42:02 +0200")
References: <cover.1743343624.git.sarg@HIDDEN>
 <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743343624.git.sarg@HIDDEN>
 <87r02cdr08.fsf@HIDDEN> <87h637ekj9.fsf@HIDDEN>
Date: Tue, 08 Apr 2025 17:11:55 +0200
Message-ID: <87ikne4ric.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77387
Cc: Josselin Poiret <dev@HIDDEN>, 77387 <at> debbugs.gnu.org,
 Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>,
 Tobias Geerinckx-Rice <me@HIDDEN>, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi,

Sergey Trofimov <sarg@HIDDEN> skribis:

> Ludovic Court=C3=A8s <ludo@HIDDEN> writes:
>
>>> +             (in-string? #f))
>>> +    (if (>=3D pos (string-length input))
>>> +        ;; End of input
>>> +        (unless in-string?
>>> +          (reverse (if (null? current)
>>> +                       tokens
>>> +                       (cons (list->string (reverse current)) tokens))=
))
>>
>> So this procedure can return *unspecified*, right?  Sounds fishy.
>>
> Why is it fishy? Is it unconventional? Such return value is handled
> correctly by the calling code (`match`).

It=E2=80=99s unconventional; usually, procedures are monomorphic and in this
case, the expectation is that it always returns a list of tokens.

I would either return the empty list in the =E2=80=98in-string?=E2=80=99 ca=
se or throw
an exception (because that means we failed to parse the thing).

Does that make sense?

Thanks,
Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 1 Apr 2025 19:42:12 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 01 15:42:12 2025
Received: from localhost ([127.0.0.1]:51437 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tzhUy-0004hn-5l
	for submit <at> debbugs.gnu.org; Tue, 01 Apr 2025 15:42:12 -0400
Received: from mail-ej1-x62a.google.com ([2a00:1450:4864:20::62a]:54769)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <sarg@HIDDEN>) id 1tzhUw-0004gn-4M
 for 77387 <at> debbugs.gnu.org; Tue, 01 Apr 2025 15:42:10 -0400
Received: by mail-ej1-x62a.google.com with SMTP id
 a640c23a62f3a-ac6ed4ab410so942899066b.1
 for <77387 <at> debbugs.gnu.org>; Tue, 01 Apr 2025 12:42:10 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=sarg.org.ru; s=google; t=1743536524; x=1744141324; darn=debbugs.gnu.org;
 h=content-transfer-encoding:mime-version:message-id:date:user-agent
 :references:in-reply-to:subject:cc:to:from:from:to:cc:subject:date
 :message-id:reply-to;
 bh=IhMum3XPUKVPoAeYgvCpdMIzqcTUC2qwx0tMYQAoPXs=;
 b=RA0LTmzVCjA/Jf6QyGa0TyQSR/m5RMR3fGdD6hM5i+EJvyc84OlKEGlCznnlqmgeJZ
 Erse02qgn0YGcbO6JkCuVyKCTxbVmx0NoXwikbpN7iqrx47EfY/9F46VRNyiij4u2EJd
 8FJHcN+S7dCTm/IFfwGl9LdSpJikPBVZt23g37K4U276IGEjCU/YygnwIKM0Hdg4ubzt
 GXSJVCfOaZpBqQsRwrsUrzEMZNHu/62yXxEEPYTrNkNV3dczhCI5U9/AdJR66T1OXHyQ
 nC0wDYhTsj9H5wVzukCGQPBXkvXcGw5rhGF87wO1hKcG/4cb0+QLraof9Tr6nVNhzUMG
 gIwA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743536524; x=1744141324;
 h=content-transfer-encoding:mime-version:message-id:date:user-agent
 :references:in-reply-to:subject:cc:to:from:x-gm-message-state:from
 :to:cc:subject:date:message-id:reply-to;
 bh=IhMum3XPUKVPoAeYgvCpdMIzqcTUC2qwx0tMYQAoPXs=;
 b=l827uG7SVwrIMgh0l22t3PrEJ/sZpG0MPMpLeE0sKg7/+E3GRtchqhABfymlMn/VaB
 /yHVU4tZqJMgFG2c/7dRe/M5kCLaE9LTTzixieLr+xzW6P/Yy7qmHBChJS+GmukpSNDe
 D+1uht1CVJDoq5VZwLu84pD4GuCRDzU0Cll2UV/ZNuaP7rdXPFj+RU/GL2rH2DsngGWw
 XR+gT2Y0WfhhploejUdZM8D6f7EuzfzsgTwt3rh1utATjSxKS3uSeuV+85x19R6IoHok
 mXG1+3S5uQrUrXTQdVqPOEsAzplzjW8/iG+8JGSqfo2zWLY4ctXyOniQ8qLmyLWR9spR
 5R8g==
X-Gm-Message-State: AOJu0Yx3QATp6uyEvM7otcNwRMOIIE4rtJBsyvbP+9oWFblucxg+/U+V
 xsHTD47UUFDGyIiWFRZnk7WmewmSfttZ1RdROsEld88/kK5cdi8RlSXux9emOshESKAqd647FiA
 CQBTa7Q==
X-Gm-Gg: ASbGncuDYgO7hJV7R4SA43/lFVGvYRkY77It92v8nLD6PyfwAM2x4sWfPgkk0iuBraz
 9l8ozLPwXGWXk760XA199vPd44Dbc6V7USkI/snc3vObWm9j10tOdx0HIYaf8OLDA/o3dzeAOFO
 MFGKZvyivqwKZKIQxH212chS8YuECV5JQdaGmyou2COv0sr817LpwbYSvpYnU4korjGpp9aHGCQ
 8FXSR+gaQ7fZOyiGSbmfpxcRji3ssQ9XG+GzNTU92P0x/obm0sh7Mx1oE+z6fCvILW3q/XYsuQH
 +yKYKSPJt8wQF+TThUcHKp4DaMbd7JRvJXREXNc/Dw==
X-Google-Smtp-Source: AGHT+IG7gREhNZYypzpyB+ZoT0O77jnVQrPqfIlTjkGCVhDaSD1Ly+ffV6Rvqt9gIkjtqNotn5CuHQ==
X-Received: by 2002:a17:906:cec7:b0:ac7:391a:e157 with SMTP id
 a640c23a62f3a-ac7391ae294mr1151823666b.58.1743536523944; 
 Tue, 01 Apr 2025 12:42:03 -0700 (PDT)
Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ac719220358sm801473066b.36.2025.04.01.12.42.03
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Apr 2025 12:42:03 -0700 (PDT)
From: Sergey Trofimov <sarg@HIDDEN>
To: Ludovic =?utf-8?Q?Court=C3=A8s?= <ludo@HIDDEN>
Subject: Re: [bug#77387] [PATCH 1/2] man-db: Parse man macro arguments better.
In-Reply-To: <87r02cdr08.fsf@HIDDEN> ("Ludovic =?utf-8?Q?Court=C3=A8s=22'?=
 =?utf-8?Q?s?= message of "Tue, 01 Apr 2025 14:07:35 +0200")
References: <cover.1743343624.git.sarg@HIDDEN>
 <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743343624.git.sarg@HIDDEN>
 <87r02cdr08.fsf@HIDDEN>
User-Agent: mu4e 1.12.9; emacs 30.0.92
Date: Tue, 01 Apr 2025 21:42:02 +0200
Message-ID: <87h637ekj9.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77387
Cc: Josselin Poiret <dev@HIDDEN>, 77387 <at> debbugs.gnu.org,
 Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>,
 Tobias Geerinckx-Rice <me@HIDDEN>, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Hi Ludovic,

I've sent an amended series.

Ludovic Courtès <ludo@HIDDEN> writes:

>> +             (in-string? #f))
>> +    (if (>= pos (string-length input))
>> +        ;; End of input
>> +        (unless in-string?
>> +          (reverse (if (null? current)
>> +                       tokens
>> +                       (cons (list->string (reverse current)) tokens))))
>
> So this procedure can return *unspecified*, right?  Sounds fishy.
>
Why is it fishy? Is it unconventional? Such return value is handled
correctly by the calling code (`match`).




Information forwarded to guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 1 Apr 2025 19:32:28 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 01 15:32:28 2025
Received: from localhost ([127.0.0.1]:51389 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tzhLX-0003Oq-Sn
	for submit <at> debbugs.gnu.org; Tue, 01 Apr 2025 15:32:28 -0400
Received: from mail-ej1-x62f.google.com ([2a00:1450:4864:20::62f]:60621)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <sarg@HIDDEN>) id 1tzhLV-0003Nc-Fb
 for 77387 <at> debbugs.gnu.org; Tue, 01 Apr 2025 15:32:25 -0400
Received: by mail-ej1-x62f.google.com with SMTP id
 a640c23a62f3a-ac28e66c0e1so892010866b.0
 for <77387 <at> debbugs.gnu.org>; Tue, 01 Apr 2025 12:32:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=sarg.org.ru; s=google; t=1743535939; x=1744140739; 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=9N5M1Capkss/5bpF6QdtNcZTD5SLCSMNQoltOh7SGcI=;
 b=KnyyEi+jeqvMoJ0fzcLHgXFOqEaIKHnwzkVObyn4S7Wt1RmsbEAdiuDMAhF21rXcXG
 W16cCO5X8DGevXQPafAhx+MC4bUcVmrshaKB+Dz//q3E17jBiqUJxwVfDz65Nxow3MKN
 sK+MIjmIcg2DhMKUdzC8FEAg0855oJlOAhouYfXeypnk001x8jPhwZcwgK9Ma1FO4qOA
 +Bm+ORO3uTSsZQLYfmMGvu5dvlOw+yMS7q9wgwKzdjtaJIAffs1VmSecSzofn6bfXzYX
 xE/D3mUSrOItdj5obFQGgL9WrJAM3YOoJeygC6N5ywlSEmay9k3+sgFesQ44OydujCRQ
 8xlg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743535939; x=1744140739;
 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=9N5M1Capkss/5bpF6QdtNcZTD5SLCSMNQoltOh7SGcI=;
 b=h/ohToiMigkW0FNJ0TBiRpSYMT490sKkWmz8qFr5zCQDWL0SFhJyForZdIP6bCH+D3
 ASKI18G3sv1GS8FsOgHOEuwMgTLuNe8WB9wt0TRwqsu1h7XNqq9IlNpFeySiFZeGMpOh
 s3O9p9a8V+fH2rKZR+mMDJfrTzz81D1il0LMJ2zLGn08mf/pl56WAwbiqrG5EhfBJq80
 +lmbZV/aFZHHzYW27JMmyDIgmj7Ap33TPKcVr+ycrVAWupii1acXaAaKztUiFVM24IWB
 U6dWJLGpX+AvKcpRM3msxxTeEWVg0oexTovUEUrzcwDiIOq/p7zPIpBbZVEySDydwszy
 i+rg==
X-Gm-Message-State: AOJu0YwO1tuTpHGzlUr2NFcTGdKxhF+tH30JRNKnUQEC3bgZpkNezTFQ
 C7bFlLVRLh7qeYv2eO6x2m8T6RY9MEPOUNksUmr4tFJivpxJeeqYAVtLsHIHxfLJGsXYENGfhtO
 KirY=
X-Gm-Gg: ASbGnctfFS0KCAyzFnNsa90mLHxc8fa+Mt4a+iYe185US4tOH9DtOoruLKTRLLO5kAH
 6Gi5tyiwaajew9be3p/ZaYINhc12bDKv43oY+iq74W6c7yIZqBIShhse0CRbrpzC/YTfwUaQD6Z
 t+f4sPrYXZm+PxXBwfRgH3+ev34hPaH3l5QabEPaiP8Kwq+FjhiOKGIZPbht2eYex+C53HpduF6
 LiWOqai0y7r5VqV+hoc5diwuJcqva9iSF9R5TGb8xmPCv13NGgj2t5nk3rH18a9GkbDU7Zx4dpT
 gG2KiZS1xDENCZSBeAQipmLE6M3iPdu1WhrqMH1Pdw==
X-Google-Smtp-Source: AGHT+IFAn7WfTVeqFMdZ0c3YRrFl+WXuGg+SHOGfIkMD5hI+a76Pxx8NZzUkc/bU5BSmCC0PKM3B2A==
X-Received: by 2002:a17:907:97c9:b0:ac6:e42b:7556 with SMTP id
 a640c23a62f3a-ac7389e6743mr1398638466b.11.1743535938917; 
 Tue, 01 Apr 2025 12:32:18 -0700 (PDT)
Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ac71922c0c5sm805005666b.9.2025.04.01.12.32.18
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Apr 2025 12:32:18 -0700 (PDT)
From: Sergey Trofimov <sarg@HIDDEN>
To: 77387 <at> debbugs.gnu.org
Subject: [PATCH v1 2/2] man-db: Support mdoc-formatted man pages.
Date: Tue,  1 Apr 2025 21:32:00 +0200
Message-ID: <b861158e0e55b40d58b24ebfec2b80bb2591645b.1743535900.git.sarg@HIDDEN>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <109f10a155f45adf26420b11787153cf96bbdc8b.1743535900.git.sarg@HIDDEN>
References: <109f10a155f45adf26420b11787153cf96bbdc8b.1743535900.git.sarg@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Sergey Trofimov <sarg@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77387
Cc: Sergey Trofimov <sarg@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* 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 94231264f0..7601580c40 100644
--- a/guix/man-db.scm
+++ b/guix/man-db.scm
@@ -228,10 +228,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))
-- 
2.49.0





Information forwarded to sarg@HIDDEN, ludo@HIDDEN, guix@HIDDEN, dev@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 1 Apr 2025 19:32:27 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 01 15:32:26 2025
Received: from localhost ([127.0.0.1]:51387 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tzhLW-0003OU-42
	for submit <at> debbugs.gnu.org; Tue, 01 Apr 2025 15:32:26 -0400
Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]:50442)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <sarg@HIDDEN>) id 1tzhLT-0003NM-Lq
 for 77387 <at> debbugs.gnu.org; Tue, 01 Apr 2025 15:32:25 -0400
Received: by mail-ej1-x634.google.com with SMTP id
 a640c23a62f3a-ac339f53df9so1047733566b.1
 for <77387 <at> debbugs.gnu.org>; Tue, 01 Apr 2025 12:32:23 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=sarg.org.ru; s=google; t=1743535937; x=1744140737; 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=84B+HaKIkCtXiSnzduMypItwc6yngjgrkSnqfB23XGQ=;
 b=idEBLc69R1J5wDfKuHB8QGeYXmUQTAj7f52mEf6d7BOYweOurbhnpWaWyCp+z5NTXw
 /BHdZdLdofoZ+95Tvto9ShrlbRoyj0iYzLZjOgZb1VxDeGfE/AHKnR3wNao9HOT3IAYZ
 CyAZZWNQ0HzRmDBSkbQvgl2L69FS5aLKIwpuxNxX8vSGdeXzKXkmdchlFNsVM8NMQMUR
 UJn+rmjJiuPQDH94QFxcMqvnqoV0pgtDiAtPkuH2ZZyMDukNjHfkNm0BOCyXYrUBYGfk
 1DGcvFPPfXYFfm3j1FyGZ3g48iYY7t/WmBwyhLMQbkry4JEXan59iI3mBIZMaJbg+gYf
 Yfyw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743535937; x=1744140737;
 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=84B+HaKIkCtXiSnzduMypItwc6yngjgrkSnqfB23XGQ=;
 b=l8bH10go+CfBw5vWMCyfXOKUuKXAgUMtv1IENRWEIwj0gvPNZR1rzDc/kXDkVi5OZG
 yU7cB6aUxj0nGcJDZYDSOUQkdkdh1TopQmJG3n5I2ux74fpmrnBQvRZRBJCcQZl1FKXn
 ZxpfGHXHwye4CV0wXC2uIWo9AvgdaVYBS0WqeRmTdRnJTfj42IHTBlKMRfYKeU6Z/j/0
 Eejck9XN58K2oPICXS/q4g0IKV1dt4atePDukInQT5MjDmjwYuqG+O2jXnfdT2RtflJo
 av1sFOAoMDyL0dzA7HnyzKblUpjmRL8PkVFFwIyjZTiRQ4vJ+YhbecV3rFhEml/fBj4t
 KKzA==
X-Gm-Message-State: AOJu0Yygs0BgoCbSrZeKptLElUYusodn92ER+JYF9Lrbp5dVHpYJPFXN
 SSwyKKhUKWUar6pqeEaE4EXyOWtosUJuFEk24OhPI+x3wCyb3GkuKp5ZUmBWAWHM8dUEZyWvNok
 JYJk=
X-Gm-Gg: ASbGncs5tHW9jK8qi+5y9KhcXaV2F8wlbx9DSF05mDr1Oh2MlncEynyx8OK7Mc2fcq1
 lm0HgmV+syVCDggVnymbUEBnnVTr7vN/gndJkN+q0CBzzHacQ4Fd7vbNhe2waARw+1qswyVXrXK
 w62nZUl6qCRPtEe0PFZTKArrScNPnsbeUUHW7jvvTqwZsWal6U59TNkRC93vhgCtCZdAGJhGMDD
 6kVrvErj2xVosd6u8DfaB2dp7PO4XvRHjsZXoVqQL+8BciJfZlYhrxEjLCqSvITC7stIX18jEBX
 yD8cz1ecd4DKCZMGYvJ9Zfuo4HU4/DTXhOW8Yo2jLQ==
X-Google-Smtp-Source: AGHT+IEqMwPmDSPU8HHmcL9LMU/JzTkgRFHo1CXTSWqQ+/F26XMBvTzUwqO+Dh0vu2TtBaKWgT/JyA==
X-Received: by 2002:a17:906:c144:b0:ac1:def4:ce20 with SMTP id
 a640c23a62f3a-ac7389e6c75mr1343218166b.18.1743535936743; 
 Tue, 01 Apr 2025 12:32:16 -0700 (PDT)
Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ac71967fcf4sm796746366b.129.2025.04.01.12.32.15
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Tue, 01 Apr 2025 12:32:16 -0700 (PDT)
From: Sergey Trofimov <sarg@HIDDEN>
To: 77387 <at> debbugs.gnu.org
Subject: [PATCH v1 1/2] man-db: Parse man macro arguments better.
Date: Tue,  1 Apr 2025 21:31:59 +0200
Message-ID: <109f10a155f45adf26420b11787153cf96bbdc8b.1743535900.git.sarg@HIDDEN>
X-Mailer: git-send-email 2.49.0
MIME-Version: 1.0
X-Debbugs-Cc: Sergey Trofimov <sarg@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77387
Cc: Sergey Trofimov <sarg@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* 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 | 56 +++++++++++++++++++++++++++++++++++++++++--------
 1 file changed, 47 insertions(+), 9 deletions(-)

diff --git a/guix/man-db.scm b/guix/man-db.scm
index bba90ed473..94231264f0 100644
--- a/guix/man-db.scm
+++ b/guix/man-db.scm
@@ -161,16 +161,52 @@ (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
+        (unless in-string?
+          (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 <mandb-entry>
 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 +225,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))

base-commit: 5735c278e16517d9be5e26235fe68dea9bae3527
prerequisite-patch-id: f9cc903b8048c8c6fde576fbf38ab110263020e3
prerequisite-patch-id: 220ddf11addf3a6c7ab3b349077bca6849241556
prerequisite-patch-id: fc7d254c8dc198bc2f083e1c8aea18960c73b165
prerequisite-patch-id: b6d30068ce4971d4d8e67517229916df4e76c529
-- 
2.49.0





Information forwarded to sarg@HIDDEN, ludo@HIDDEN, guix@HIDDEN, dev@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 1 Apr 2025 12:08:48 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 01 08:08:47 2025
Received: from localhost ([127.0.0.1]:46855 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tzaQA-0007Zx-VV
	for submit <at> debbugs.gnu.org; Tue, 01 Apr 2025 08:08:47 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:45998)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1tzaQ8-0007YU-5K
 for 77387 <at> debbugs.gnu.org; Tue, 01 Apr 2025 08:08:44 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1tzaQ1-0007Ac-NA; Tue, 01 Apr 2025 08:08:37 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To:
 From; bh=c4ZJ/WQJhBLo5uQFJnexOX9sIuoXsmMT9ivg6+k4gPo=; b=jixOHmAIzf33tMIQrfIr
 6YvaNIdYCnZrtGiJIcN0qW2nJ9Ex8r78ucpp78oCLAihlM/yIeAiqTPEHn5nBUuuGd2LGtV67MXLl
 8LyEBJZ59VMbHgLrq0Zmw8FMyoVZj+rSEiuTJoMYDUd2o2KW6bSjKJHJv+mf2JbaIxDRixkzuAjVg
 QY9+L8HRgHejyN/hWsEfm55DX/jcbPqP8gPnV8MsTKju6fSLtXSAsFaHp9QfDwzBBluz8B7c3vzcM
 +3CSc9uOf2iHSY56cyP5ttJpxShnKgj6MlXDEatcX+syPRp/ii2Mg+bjuLF2+MDxwKMvtj4x/36r5
 98JHXrSPXMsMmA==;
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Sergey Trofimov <sarg@HIDDEN>
Subject: Re: [bug#77387] [PATCH 2/2] man-db: Support mdoc-formatted man pages.
In-Reply-To: <43b006e62f2034b3acdd611e72029c9664922618.1743349817.git.sarg@HIDDEN>
 (Sergey Trofimov's message of "Sun, 30 Mar 2025 16:32:55 +0200")
References: <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743349817.git.sarg@HIDDEN>
 <43b006e62f2034b3acdd611e72029c9664922618.1743349817.git.sarg@HIDDEN>
Date: Tue, 01 Apr 2025 14:08:31 +0200
Message-ID: <87msd0dqyo.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77387
Cc: Josselin Poiret <dev@HIDDEN>, 77387 <at> debbugs.gnu.org,
 Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>,
 Tobias Geerinckx-Rice <me@HIDDEN>, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Sergey Trofimov <sarg@HIDDEN> skribis:

> * guix/man-db.scm (man-page->entry): Extract man name and section from
> .Dt macro.
>
> Change-Id: I02dc99d73dceecdb077315805025efad9a650e91

[...]

>                    (match (if (string-prefix? "." line) (man-macro-tokeni=
ze line) #f)
> -                    ((".TH" name (=3D string->number section) _ ...)
> +                    (((or ".TH" ".Dt") name (=3D string->number section)=
 _ ...)

Likewise, please add a short comment above the clause explaining that
=E2=80=98.Dt=E2=80=99 is produced by =E2=80=98mandoc=E2=80=99 (did I get th=
at right?).

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 1 Apr 2025 12:08:13 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Apr 01 08:08:12 2025
Received: from localhost ([127.0.0.1]:46850 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tzaPc-0007Tv-2O
	for submit <at> debbugs.gnu.org; Tue, 01 Apr 2025 08:08:12 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:58648)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <ludo@HIDDEN>) id 1tzaPa-0007Ss-40
 for 77387 <at> debbugs.gnu.org; Tue, 01 Apr 2025 08:08:10 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <ludo@HIDDEN>)
 id 1tzaPQ-000739-BT; Tue, 01 Apr 2025 08:08:00 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-Version:Date:References:In-Reply-To:Subject:To:
 From; bh=9ew0dvI46yQTSjiysMx/VlPtOnfXcAWbqBSoRiLa43I=; b=r89ZkvXjRo/OCWKK+OQJ
 vjqxGt15UpDXCBcH55PAkUQItqNA5ALZpyhAabpb/0vMAQCS0AzysnkkzU7rgYjbXK8KF32qFzT3u
 FjDgtE07zDhRTuhZAJKaQTfqzHp4BLKshtwLR/GfyRpXlklKdPKaNQgX5gYY0a4yqsv+PuPT7i/1b
 JKvHR/gFkUxO1rGsDAErB91B8yq6PLS7KVfkv7lj1SHkCMgR9kXMc9aaxsNoxsGEz/W6ohAzxc2hs
 DC2PNA5E4wTLQsg22E6PKqmMJoCnNnqpf9P0z01ttsQ1f24W7tlj+pj9UsqWWJaC9TjX8kPR36Xk/
 mt1SAdhwxsKo4g==;
From: =?utf-8?Q?Ludovic_Court=C3=A8s?= <ludo@HIDDEN>
To: Sergey Trofimov <sarg@HIDDEN>
Subject: Re: [bug#77387] [PATCH 1/2] man-db: Parse man macro arguments better.
In-Reply-To: <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743343624.git.sarg@HIDDEN>
 (Sergey Trofimov's message of "Sun, 30 Mar 2025 16:32:54 +0200")
References: <cover.1743343624.git.sarg@HIDDEN>
 <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743343624.git.sarg@HIDDEN>
Date: Tue, 01 Apr 2025 14:07:35 +0200
Message-ID: <87r02cdr08.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Score: -2.3 (--)
X-Debbugs-Envelope-To: 77387
Cc: Josselin Poiret <dev@HIDDEN>, 77387 <at> debbugs.gnu.org,
 Simon Tournier <zimon.toutoune@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>,
 Tobias Geerinckx-Rice <me@HIDDEN>, Christopher Baines <guix@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hi!

Glad you fixed this problem. :-)

Sergey Trofimov <sarg@HIDDEN> skribis:

> * 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

[...]

> +(define (man-macro-tokenize input)

Could you add a docstring explaining what it takes and what it returns?

> +  (let loop ((pos 0)
> +             (tokens '())
> +             (current '())

Maybe s/current/characters/ ?

> +             (in-string? #f))
> +    (if (>=3D pos (string-length input))
> +        ;; End of input
> +        (unless in-string?
> +          (reverse (if (null? current)
> +                       tokens
> +                       (cons (list->string (reverse current)) tokens))))

So this procedure can return *unspecified*, right?  Sounds fishy.

> @@ -189,8 +223,8 @@ (define* (man-page->entry file #:optional (resolve id=
entity))
>                (if (eof-object? line)
>                    (mandb-entry file name (or section 0) (or synopsis "")
>                                 kind)
> -                  (match (string-tokenize line)
> -                    ((".TH" name (=3D string->number* section) _ ...)
> +                  (match (if (string-prefix? "." line) (man-macro-tokeni=
ze line) #f)
> +                    ((".TH" name (=3D string->number section) _ ...)

Please add a comment above =E2=80=98match=E2=80=99 explaining what=E2=80=99=
s happening (why we
call =E2=80=98man-macro-tokenize=E2=80=99 etc.).

Also: (and (string-prefix? "." line) (man-macro-tokenize line))

Ludo=E2=80=99.




Information forwarded to guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 30 Mar 2025 15:50:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 30 11:50:37 2025
Received: from localhost ([127.0.0.1]:37821 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tyuvl-0007O8-2o
	for submit <at> debbugs.gnu.org; Sun, 30 Mar 2025 11:50:37 -0400
Received: from mail-ej1-x629.google.com ([2a00:1450:4864:20::629]:50646)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <sarg@HIDDEN>) id 1tyuvi-0007Ni-RB
 for 77387 <at> debbugs.gnu.org; Sun, 30 Mar 2025 11:50:35 -0400
Received: by mail-ej1-x629.google.com with SMTP id
 a640c23a62f3a-ac339f53df9so674377066b.1
 for <77387 <at> debbugs.gnu.org>; Sun, 30 Mar 2025 08:50:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=sarg.org.ru; s=google; t=1743349828; x=1743954628; 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=+v61YczsJiy0hyAaMtUpc1cPgjb+r21CvSHSPhJsarw=;
 b=cAAVIsqmUtQs8iNK9R3tgx3BagcAB9twET1rXhrYXK+brlPzWCTn2LQMoIu2ulI/0M
 vOa0mhynTONTcUImZ6YQeettcdx5c2iYeme+a3QCiOYDTyKE5MQbimd/x2mcwSOE03Az
 R2Yk/V11TpxNMK7m8Y4tfs3Z1zKOUBszUqfomEGHkDg2qd5GlP+oA9hSMPY/hlnbAdJx
 0K381TS/Kr5csLauq5a8Qibtls62OSKg0vDh+mQRZ0cL56weZxN/f2vA0+cNfMowLOmt
 dsaMAdnCdHHPr4zcq4gOXWv8zhbZbNcYLE0PGRTaepVeKiKOSYbtlj5ZbIv64yFzSIEV
 ik9g==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743349828; x=1743954628;
 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=+v61YczsJiy0hyAaMtUpc1cPgjb+r21CvSHSPhJsarw=;
 b=j9YCuz8AliNHO7vD0f11iKlbYjrw41C4wkRSjq0BtLupzL4MEOE13lYO9g43t0yLUI
 QRAWdu+hKHqxEzcwSMDvHKvBi8HAe7rDxxAsz0YgxXA+jIG1Suq+l4iR39zmOahY7nkn
 +AjD33OVVT8+PeYAqmx8HN5AXdRVaDmg4Mjb62vtc2alyMLf5BbeF3sKQwosSN5+SbOU
 a+i6GfHSoAu62pVPuBtGK/v1FTYVS01I8weTB3TyqzJDcMTN+U0tWTyD1YWMtTII5BKn
 KOrIFLo4BMX2dzTtZFpQEhsxE5v9xBepd6uBGZY144412oBwvtOBb+H94YD71P2EKA7S
 B2dA==
X-Gm-Message-State: AOJu0Yxmp1EmxcOSHYjv2aL+STOE/5HvTX/Y+1fPeLJQouLI76ywg9rz
 0WexUyVRhwGYwCp5vkdqaNVC8DFTlO1CVt7KjseIwCjAXzgO1agbcZlucH0U6xmL5aY8d+j2/Jc
 aBEw=
X-Gm-Gg: ASbGncs7qcMIuHYDSkWgkm+DEZuaL+VpNTZgtmHbF2thQRNO05/tMcV/OhHxuhJVrxS
 haIwrvvUJQA6phsPOdvdaM9l87qcPdOdaaXQ5mHFJ3i3W811hXEdjX/0Oq/6lEb2UQKR8kOfpsh
 YWqgXI5LuQdNCbzRtNFwJYJej0Sd1oh3u/86kLRWhvyGWheWJWKKfn2rvVTYg8wXCUUFDriojLy
 QbTQ0fSOPqEQlU1f71KIgC+MYoBDFZkDuhcH+9jAPzFd73VK6d+wYXZjxJFAlqF2QWXtnS9uw9x
 XxjR9vVAeFDV5/M7xGTCZJQH5WpkaqexqWyGeqMqvg==
X-Google-Smtp-Source: AGHT+IEwY8isAsHwZNFvlpcPk+BjZlptC5xsEBDAlvvrRV+sMl9YBAWnRXVLKLXwavH7VXYo793qGA==
X-Received: by 2002:a17:907:d14:b0:ac3:9587:f2ac with SMTP id
 a640c23a62f3a-ac738a8db2bmr559568866b.33.1743349827462; 
 Sun, 30 Mar 2025 08:50:27 -0700 (PDT)
Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c])
 by smtp.gmail.com with ESMTPSA id
 a640c23a62f3a-ac71922ba02sm500642166b.10.2025.03.30.08.50.26
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 30 Mar 2025 08:50:27 -0700 (PDT)
From: Sergey Trofimov <sarg@HIDDEN>
To: 77387 <at> debbugs.gnu.org
Subject: [PATCH 2/2] man-db: Support mdoc-formatted man pages.
Date: Sun, 30 Mar 2025 16:32:55 +0200
Message-ID: <43b006e62f2034b3acdd611e72029c9664922618.1743349817.git.sarg@HIDDEN>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743349817.git.sarg@HIDDEN>
References: <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743349817.git.sarg@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77387
Cc: Sergey Trofimov <sarg@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* guix/man-db.scm (man-page->entry): Extract man name and section from
.Dt macro.

Change-Id: I02dc99d73dceecdb077315805025efad9a650e91
---
 guix/man-db.scm | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/guix/man-db.scm b/guix/man-db.scm
index 44c01ac298..44668a3ebf 100644
--- a/guix/man-db.scm
+++ b/guix/man-db.scm
@@ -224,7 +224,7 @@ (define* (man-page->entry file #:optional (resolve identity))
                   (mandb-entry file name (or section 0) (or synopsis "")
                                kind)
                   (match (if (string-prefix? "." line) (man-macro-tokenize line) #f)
-                    ((".TH" name (= string->number section) _ ...)
+                    (((or ".TH" ".Dt") name (= string->number section) _ ...)
                      (loop name section synopsis kind))
                     ((".SH" (or "NAME" "\"NAME\""))
                      (loop name section (read-synopsis port) kind))
-- 
2.49.0





Information forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at 77387 <at> debbugs.gnu.org:


Received: (at 77387) by debbugs.gnu.org; 30 Mar 2025 15:50:37 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 30 11:50:36 2025
Received: from localhost ([127.0.0.1]:37819 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tyuvk-0007O1-E8
	for submit <at> debbugs.gnu.org; Sun, 30 Mar 2025 11:50:36 -0400
Received: from mail-ej1-x630.google.com ([2a00:1450:4864:20::630]:56421)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.84_2) (envelope-from <sarg@HIDDEN>) id 1tyuvh-0007Ng-BW
 for 77387 <at> debbugs.gnu.org; Sun, 30 Mar 2025 11:50:34 -0400
Received: by mail-ej1-x630.google.com with SMTP id
 a640c23a62f3a-ac2bdea5a38so612505366b.0
 for <77387 <at> debbugs.gnu.org>; Sun, 30 Mar 2025 08:50:33 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=sarg.org.ru; s=google; t=1743349826; x=1743954626; 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=t96MmNdEdMDhyCwll8S1Y4AAwglQBlqeJl7Mq5jnfOE=;
 b=sIBKmVhJzVJHLVkS4hLla2lnst4nwt54e6oD6H54s70IexaMu3xomoDtFsoJ5ocFT8
 xf/dFwyhNMbq2P2GEoQWdYehP27ZoPgacIBEgAvPTlsiQiw2t3RctXmQBnmlvXBC4Kc5
 YorHYHR1+7mP6CpHu8tlDdBcifOw0BsoFLK116PF8Nbg5TecmUogg3JvHb9C+GN3ag/m
 /VFyoZDRxZPaInlOtEORaEoG5sMXjNdGV1GjF16V1t1CP9YOC+ZNF7GkxiGVEXjDQD8k
 L+0XGcHoSCdloZxUGUo3weohoSOwB3d55M+1l2vlDLbrg5upSokKgoMOr6fjmyxghvL0
 AorA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743349826; x=1743954626;
 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=t96MmNdEdMDhyCwll8S1Y4AAwglQBlqeJl7Mq5jnfOE=;
 b=k7jmT/6AM3f/uBx92JwaEGNA/fW1RaiAEkVUJc5ND5pJnuuXkUEThEQPBdi47r61tt
 vDhIxddJsGut7cv9umLL1vx9m8rGJ/GghmvD/Kfl01M/Nry2lQ50Orj1moeEqFvu281y
 t5bVXy1cFFGyWyk2h86ATlbGhihf5YpdHLw97WQJmVJhH6utLta0jbuBGUz9KPPUaCE5
 JT692A+Ve/teA6pg68pfYDY7yU3wJFCCyr/0pdEA7erYKv2MNdHY7IBGwLBYspi55ixb
 u4qjGfattc9hCw5EfIknvisSLf/KTyzu8yGtXC98ykaLqZB0eFeCSG3BmXZGKz+ORJM8
 16Vg==
X-Gm-Message-State: AOJu0YyqZru8yuQAY5IrcaAyoOwNXvhVF+xjnJ5dL6K1bzInb6UoDImr
 xcPHOaA2spw+iQtcxtbIsSE8pxwGH4ARO1/CLxnn59JypfvNMu0LdwwP5XiJDsm3muKK1EVKV7W
 pwB0=
X-Gm-Gg: ASbGnctaoOlN4yetAkIL6NpfbVfpVDUksEZp/oBkTYMdRNCJQFEbRvZfLvnuDOVzrws
 zq5fZzjeXpp6JlmExiiGY22eXLvzPD6C3fpWhgOty+y7hAwXiJMP/9h52azuY9aQbh4kK+cWosp
 xE3CVZsG2uKex7URCsZOUPPopPmUKKRr8oDqmxKLvHNnl6W3ITeq3e1F087zApMGWR13Mn72F1s
 cBI5/yHVwssPMYGZeWFA8dbOaXpVarjo1TvV3MJa187vBQYrGREntEt9l8iA8CR0U9CgWE0kLzm
 675eX//TGrz2L/5qiU9abc7cPU+zIh9bdVbI7bMlFQ==
X-Google-Smtp-Source: AGHT+IHvNbYf7df6BsEix2t5VBrZtoNQSXlrk0ifDr2L6MfeUhdYaosxNMsV/iYXTIcWFlf/9KMaZA==
X-Received: by 2002:a17:907:948b:b0:abf:6db5:c9a9 with SMTP id
 a640c23a62f3a-ac738bbe871mr479144566b.39.1743349825836; 
 Sun, 30 Mar 2025 08:50:25 -0700 (PDT)
Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5edc16d4f4bsm4419215a12.30.2025.03.30.08.50.25
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 30 Mar 2025 08:50:25 -0700 (PDT)
From: Sergey Trofimov <sarg@HIDDEN>
To: 77387 <at> debbugs.gnu.org
Subject: [PATCH 1/2] man-db: Parse man macro arguments better.
Date: Sun, 30 Mar 2025 16:32:54 +0200
Message-ID: <7068d5eb173f3d0c7cb69ae9592cb61b2dd84281.1743343624.git.sarg@HIDDEN>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <cover.1743343624.git.sarg@HIDDEN>
References: <cover.1743343624.git.sarg@HIDDEN>
MIME-Version: 1.0
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: 77387
Cc: Sergey Trofimov <sarg@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

* 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 | 52 ++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 43 insertions(+), 9 deletions(-)

diff --git a/guix/man-db.scm b/guix/man-db.scm
index bba90ed473..44c01ac298 100644
--- a/guix/man-db.scm
+++ b/guix/man-db.scm
@@ -161,16 +161,50 @@ (define (read-synopsis port)
       (line
        (loop (cons line lines))))))
 
+(define (man-macro-tokenize input)
+  (let loop ((pos 0)
+             (tokens '())
+             (current '())
+             (in-string? #f))
+    (if (>= pos (string-length input))
+        ;; End of input
+        (unless in-string?
+          (reverse (if (null? current)
+                       tokens
+                       (cons (list->string (reverse current)) 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 #\" current) #t)
+                    ;; End of string
+                    (loop (+ pos 1) (cons (list->string (reverse current)) tokens) '() #f))
+                ;; Regular character in string
+                (loop (+ pos 1) tokens (cons c current) #t)))
+
+           ;; Whitespace outside string
+           ((char-whitespace? c)
+            (if (null? current)
+                (loop (+ pos 1) tokens '() #f)
+                (loop (+ pos 1) (cons (list->string (reverse current)) tokens) '() #f)))
+
+           ;; Start of string
+           ((char=? c #\")
+            (if (null? current)
+                (loop (+ pos 1) tokens '() #t)
+                (loop pos (cons (list->string (reverse current)) tokens) '() #f)))
+
+           ;; Symbol character
+           (else
+            (loop (+ pos 1) tokens (cons c current) #f)))))))
+
 (define* (man-page->entry file #:optional (resolve identity))
   "Parse FILE, a gzip or zstd compressed man page, and return a <mandb-entry>
 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 +223,8 @@ (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) _ ...)
+                  (match (if (string-prefix? "." line) (man-macro-tokenize line) #f)
+                    ((".TH" name (= string->number section) _ ...)
                      (loop name section synopsis kind))
                     ((".SH" (or "NAME" "\"NAME\""))
                      (loop name section (read-synopsis port) kind))
-- 
2.49.0





Information forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 30 Mar 2025 14:26:31 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Mar 30 10:26:31 2025
Received: from localhost ([127.0.0.1]:37659 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1tytcM-0003Np-Mb
	for submit <at> debbugs.gnu.org; Sun, 30 Mar 2025 10:26:31 -0400
Received: from lists.gnu.org ([2001:470:142::17]:55086)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <sarg@HIDDEN>) id 1tytcJ-0003ND-Le
 for submit <at> debbugs.gnu.org; Sun, 30 Mar 2025 10:26:28 -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 <sarg@HIDDEN>) id 1tytbq-0005aH-D1
 for guix-patches@HIDDEN; Sun, 30 Mar 2025 10:25:58 -0400
Received: from mail-ed1-x531.google.com ([2a00:1450:4864:20::531])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <sarg@HIDDEN>) id 1tytbo-0006nb-DE
 for guix-patches@HIDDEN; Sun, 30 Mar 2025 10:25:58 -0400
Received: by mail-ed1-x531.google.com with SMTP id
 4fb4d7f45d1cf-5e5e63162a0so2051086a12.3
 for <guix-patches@HIDDEN>; Sun, 30 Mar 2025 07:25:53 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=sarg.org.ru; s=google; t=1743344751; x=1743949551; darn=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=lqTqnWUoFSHwpuGES5pQSahBA12+x1BLK5szO+pAQwM=;
 b=eA33w2oyRj3QC/RrZukHahFegWK1ANNq13DQk6SkTP9K/9Mp6dpIt/DbyxbmjluYpq
 dbeG6XR1TNcY0MgWyzPpnQloZJ+F1Ow9SVKTdbngxP2KnYgFyYaeBIuNfC5MxyLEBDiv
 /4Pwbo9l6J0TQ5449TMka5kVJx3tK6dDeDi+A7OcxxcdyinoOJ9pmhF+42bn/SEKz/Aa
 1xRSLiC531bWJ99GnyGSHN0XH2Z0dS2vcv3mtqvjsmGm6n0csgY0AQdo1gkF+2dwSr3d
 LQRWzsPu3L+/K76B6wzsT8A5VjSAtQEGB0C4FdnZ3dE5oUq/4cGDPLpKPIhInzsw5AaU
 NWfQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1743344751; x=1743949551;
 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=lqTqnWUoFSHwpuGES5pQSahBA12+x1BLK5szO+pAQwM=;
 b=HSP9dX3yXHKzse0MkVlzjwkJ6GvW+K06EsEE22l3ZKeUek02XXBXVnqHXe+szhFsHo
 oTZFQYiMl5WYKGKli3wm9h7w/oUJKXTxSKZ1yE7jVGUjO2VgOIOY6sLj6s9xGBdBJ1qy
 UEVzf2d3Ts/qaXjG16hGdlRy1CbOAoMDSx1umwpz2vpsY3G4sHqLQKA7F6BqXVcZQx8T
 ZZ9eREx/9auhpAGJJOjXzrrnC+bPw8TwaeH21c+tqkMu+W9wg+iCXYYVHEGY13eCmYXv
 9faBMo0zObGk8cPG0e7j6qtPuQK2/F7jvv7FO0WYrck52PAZ+YfhzlrhmYM9G8Rju0Iy
 kNkA==
X-Gm-Message-State: AOJu0Yw+kTk71gwYuHLO1ZcOpk1+GkvyJOHzT5Lz7wTNqbnTyY4qo0tI
 3jhnCvOB+sco90mlwRz4TauLV1j7u6nip9K4cKGau8x+YynnxLk3U+NaKxuGuFDHwRzD81F1yZJ
 6rX4=
X-Gm-Gg: ASbGnctNMEGys/2vM4bhS1YGeKN7s73g3O0uDdYpN2cZDL1CP/l7yY1RtSdocunBqxs
 /RBCb2GI/fkArI3xy40UMhRSqJH+qB9lCE0RjEsV/sTndi2BPi1EoN78SvOeoF9+Of7et3Rdfpe
 m9zV21da/9zmPmapAvD0biwcohh1hcM/ywcw2zipYqApdMEYRfkVlSURfHDfBrj2Fvf30NeloZ+
 UcjPAD+wW6kITw1OW2QdhJ7z15K9s3yn2xfVF8ZexLFIubnkEssxuBmawWZVJx+6h7NcsEAhIMy
 2apfGRBVy60PCBGo9FQr8wsMWGMvdRakPhOwJEfimQ==
X-Google-Smtp-Source: AGHT+IHtj9PU0I8V2K2+oBV1G/hM9eO77M5kNvH+svq9TnE71sHR/QqJeJ/Oja+Jwb5fx4Gg2Gda1A==
X-Received: by 2002:a05:6402:51c6:b0:5e4:cd5c:50f6 with SMTP id
 4fb4d7f45d1cf-5edfd157900mr4971295a12.18.1743344751412; 
 Sun, 30 Mar 2025 07:25:51 -0700 (PDT)
Received: from localhost ([2a02:2454:a095:5600:a64e:31ff:fe38:fd6c])
 by smtp.gmail.com with ESMTPSA id
 4fb4d7f45d1cf-5edc16d4752sm4349139a12.27.2025.03.30.07.25.49
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Sun, 30 Mar 2025 07:25:50 -0700 (PDT)
From: Sergey Trofimov <sarg@HIDDEN>
To: guix-patches@HIDDEN
Subject: [PATCH 0/2] man-db: Better parsing of man macros.
Date: Sun, 30 Mar 2025 16:25:46 +0200
Message-ID: <cover.1743343624.git.sarg@HIDDEN>
X-Mailer: git-send-email 2.49.0
MIME-Version: 1.0
X-Debbugs-Cc: Christopher Baines <guix@HIDDEN>, Josselin Poiret <dev@HIDDEN>, Ludovic Courtès <ludo@HIDDEN>, Mathieu Othacehe <othacehe@HIDDEN>, Simon Tournier <zimon.toutoune@HIDDEN>, Tobias Geerinckx-Rice <me@HIDDEN>
Content-Transfer-Encoding: 8bit
Received-SPF: pass client-ip=2a00:1450:4864:20::531;
 envelope-from=sarg@HIDDEN; helo=mail-ed1-x531.google.com
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-Debbugs-Envelope-To: submit
Cc: Sergey Trofimov <sarg@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)

Hey guix, I've noticed that quite a lot man pages are reported to belong to a wrong section by `man -k`:

--8<---------------cut here---------------start------------->8---
$ man -k "" | grep "(0)"
...
ssh-pkcs11-helper (0) - (unknown subject)
ssh-sk-helper (0)    - (unknown subject)
ssh_config (0)       - (unknown subject)
sshd (0)             - (unknown subject)
sshd_config (0)      - (unknown subject)
sudo (0)             - (unknown subject)
sudo.conf (0)        - (unknown subject)
tc-cgroup (0)        - control group based traffic control filter
tc-connmark (0)      - (unknown subject)
...
--8<---------------cut here---------------end--------------->8---

A side-effect of it is that `M-x man` doesn't list such pages in auto-completion. I've attempted to fix that, see the following patch.

With the patch `man -k` and `M-x man` work properly:

--8<---------------cut here---------------start------------->8---
$ man -k sudo
cvtsudoers (1)       - (unknown subject)
sudo (8)             - (unknown subject)
sudo.conf (5)        - (unknown subject)
sudo_logsrv.proto (5) - (unknown subject)
sudo_logsrvd (8)     - (unknown subject)
...
--8<---------------cut here---------------end--------------->8---


Note, that synopsis extraction also needs improvement, however it turns out to
be more complicated as proper formatting requires cleaning up / expanding macros.

Sergey Trofimov (2):
  man-db: Parse man macro arguments better.
  man-db: Support mdoc-formatted man pages.

 guix/man-db.scm | 52 ++++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 43 insertions(+), 9 deletions(-)


base-commit: 2ed28b5c24c599b2f9bc60dfc93151cf489ca477
-- 
2.49.0





Acknowledgement sent to Sergey Trofimov <sarg@HIDDEN>:
New bug report received and forwarded. Copy sent to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN. Full text available.
Report forwarded to guix@HIDDEN, dev@HIDDEN, ludo@HIDDEN, othacehe@HIDDEN, zimon.toutoune@HIDDEN, me@HIDDEN, guix-patches@HIDDEN:
bug#77387; Package guix-patches. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Wed, 9 Apr 2025 13:15:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.