Re: [netmod] Last Call: <draft-ietf-netmod-artwork-folding-07.txt> (Handling Long Lines in Inclusions in Internet-Drafts and RFCs) to Best Current Practice

Erik Auerswald <> Fri, 02 August 2019 13:22 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id B0EA31200EF; Fri, 2 Aug 2019 06:22:27 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -4.198
X-Spam-Status: No, score=-4.198 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_NONE=0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id Yy749Exs2evt; Fri, 2 Aug 2019 06:22:24 -0700 (PDT)
Received: from ( [IPv6:2001:638:208:120::220]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id CCE1312008C; Fri, 2 Aug 2019 06:22:23 -0700 (PDT)
Received: from [] ( [] (may be forged)) (authenticated bits=0) by (8.14.4/8.14.4/Debian-8+deb8u2) with ESMTP id x72DM6ax037417 (version=TLSv1/SSLv3 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Fri, 2 Aug 2019 15:22:16 +0200
To: Paul Kyzivat <>, Kent Watsen <>
Cc: Ignas Bagdonas <>, "" <>,, IETF discussion list <>, "" <>
References: <> <> <> <>
From: Erik Auerswald <>
Message-ID: <>
Date: Fri, 02 Aug 2019 15:22:05 +0200
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.8.0
MIME-Version: 1.0
In-Reply-To: <>
Content-Type: text/plain; charset="windows-1252"; format="flowed"
Content-Language: en-GB
Content-Transfer-Encoding: 7bit
Archived-At: <>
Subject: Re: [netmod] Last Call: <draft-ietf-netmod-artwork-folding-07.txt> (Handling Long Lines in Inclusions in Internet-Drafts and RFCs) to Best Current Practice
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: NETMOD WG list <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Fri, 02 Aug 2019 13:22:28 -0000

Hi Paul,

I'll try to elaborate on my understanding of "forced folding" below:

On 02.08.19 02:08, Paul Kyzivat wrote:
> On 7/31/19 3:41 PM, Kent Watsen wrote:
>> [...]
>>> 2) Regarding forced folding in section 8.2.1: step 1 (Determine where 
>>> the fold will occur) could benefit from some elaboration regarding 
>>> lines that require forced folding. In particular, when an input line 
>>> flagged for forced folding ends in backslash, then it must indeed be 
>>> folded before the last character, while in all other cases it can be 
>>> folded at any position prior to the max line length. (While this is 
>>> obvious if you think about it, some might miss this.)

If the original text data contains the folding sequence, one line of
that text data ends in a backslash. If such a line is folded before
the backslash, the folded data still contains the folding sequence that
came from the original text data (in addition to the folding sequences
inserted by folding).

As I see it, forced folding would insert a new folding sequence inside
of the original folding sequence.

Example before folding:


Example after folding:

== NOTE: '\\' line wrapping per BCP XX (RFC XXXX) ==


A line that requires forced folding and that is already of maximum
length would be lengthened by forced folding, thus it would need to
be folded twice.

This, of course, shows that unfolding must not recursively try to
unfold an already unfolded part of a line again.

> [...]
> (Or do you want to allow the degenerate case where the line is folded at 
> the end, so the continuation contains nothing?)

I'd say that this degenerate case is required for forced folding to