git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] gpg-interface: trim only CR characters that precede LF

From
Junio C Hamano <gitster@pobox.com>
Date
Oct 16, 2025, 18:52 UTC
Message-ID
<xmqq4iry4r3e.fsf@gitster.g>
In-Reply-To
<20251016184420.78268-1-okhuomonajayi54@gmail.com>
Okhuomon Ajayi <okhuomonajayi54@gmail.com> writes:
Show 5 quoted lines
>  /*
> - * Strip CR from the line endings, in case we are on Windows.
> - * NEEDSWORK: make it trim only CRs before LFs and rename
> + * Trim CR characters only when they appear before LF (\r\n) line endings.
> + * This avoids removing legitimate lone CRs from teh content.
"teh" -> "the".  I know, I myself often make teh same typo.
>   */
> -static void remove_cr_after(struct strbuf *buffer, size_t offset)
> +static void trim_cr_before_lf(struct strbuf *buffer, size_t offset)
In other words, this normalizes crlf to lf line ending.
Show 7 quoted lines
>  {
>  	size_t i, j;
>  
>  	for (i = j = offset; i < buffer->len; i++) {
> -		if (buffer->buf[i] != '\r') {
> +	     /* skip CR only if it comes right before LF */
> +		if (buffer->buf[i] == '\r' && i + 1 < buffer->len && buffer->buf[i+1] == '\n')

Are two different mixture of tabs and spaces used in the above two lines? I think they wanted to begin at the same column.

Also, the second line is overly long that it does not even fit on my 92-column wide terminal (yes, 80 is the limit, but this will let a line in the patches quoted a few times to still fit, as long as the patch honors the 80-column limit).

> +		    continue;
Show 5 quoted lines
>  			if (i != j)
>  				buffer->buf[j] = buffer->buf[i];
>  			j++;
> -		}
> +		
Do we need a blank line here?  I dunno.
Show 12 quoted lines
>  	}
>  	strbuf_setlen(buffer, j);
>  }
> @@ -1023,8 +1026,10 @@ static int sign_buffer_gpg(struct strbuf *buffer, struct strbuf *signature,
>  	}
>  	strbuf_release(&gpg_status);
>  
> -	/* Strip CR from the line endings, in case we are on Windows. */
> -	remove_cr_after(signature, bottom);
> +	/* Trim carriage returns (CR) only when they appear before line feeds (LF),.
> +	*  mainly for handling Windows-style line endings
> + 	*/
	/* Convert CRLF to LF, in case we are on Windows */
Show 14 quoted lines
> +	trim_cr_before_lf(signature, bottom);
>  
>  	return 0;
>  }
> @@ -1110,8 +1115,10 @@ static int sign_buffer_ssh(struct strbuf *buffer, struct strbuf *signature,
>  			ssh_signature_filename.buf);
>  		goto out;
>  	}
> -	/* Strip CR from the line endings, in case we are on Windows. */
> -	remove_cr_after(signature, bottom);
> +	/* Trim carriage returns (CR) only when they appear before line feeds (LF),
> +	*  mainly for handling Windows-style line endings.
> +	*/
> +	trim_cr_before_lf(signature, bottom);
Ditto.
>  
>  out:
>  	if (key_file)
Previous: Okhuomon AjayiNext: Okhuomon Ajayi
Message 2 of 6 in “gpg-interface: trim only CR characters that precede LF”
  1. gpg-interface: trim only CR characters that precede LFOkhuomon Ajayi, Oct 16, 2025
  2. Junio C HamanoOct 16, 2025
  3. Okhuomon AjayiOct 16, 2025
  4. Junio C HamanoOct 16, 2025
  5. Kristoffer HaugsbakkOct 16, 2025
  6. Okhuomon AjayiOct 16, 2025

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.