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

Re: [PATCH] Improve function dir.c:trim_trailing_spaces()

From
PBPasha Bolokhov <pasha.bolokhov@gmail.com>
Date
May 29, 2014, 21:34 UTC
Message-ID
<CAKpPgveDfNq+kxWCukULPqvn7H2XsfS8maC0ExzvHzFGiEAPbg@mail.gmail.com>
In-Reply-To
<20140529201334.GA17355@sigill.intra.peff.net>
On Thu, May 29, 2014 at 1:13 PM, Jeff King <peff@peff.net> wrote:
Show 16 quoted lines
> On Wed, May 28, 2014 at 04:45:57PM -0700, Pasha Bolokhov wrote:
>
>> Move backwards from the end of the string (more efficient for
>> lines which do not have trailing spaces or have just a couple).
>
> The original code reads the string from left to right. In theory, that
> means we could get away with not calling strlen() at all, over a
> right-to-left that must start with a call to strlen().
>
> That being said, I think we already have the length in the calling
> function, so you could probably avoid the strlen() altogether, which
> makes a right-to-left function more efficient.
>
> However, I doubt it makes that much of a difference in practice, so
> unless it's measurable, I would certainly go with the version that is
> more readable (and correct, of course).
    Sorry, just to recap, you would go with the existing version
(which needs correction), or with the one that is being suggested? (I
agree I can format the style a tiny bit better in the latter one)
     Tests should not be a big problem, although it's kind of clumsy
to test an internal function which does not really give any output
(you can only measure the outcome). Just again to stress, I have
tested both implementation extensively and the suggested new
implementation gives the correct answers for all your examples below
and all others. If I show this with explicit "t/" tests, will it
suffice then?
    Basically what I suggest is

-- either: improve the existing function such that it does correctly that "text \ " case, and also does not use 'strlen' since it anyway moves left to right

-- or: use the new suggested implementation (and just brush the formatting a bit), and perhaps borrow 'len' from the calling routine

And add tests in any case. What is the preference?
Show 19 quoted lines
>
>> Slightly more rare occurrences of 'text  \    ' with a backslash
>> in between spaces are handled correctly.
>
> Can you add a test for this?
>
> Also, if you are refactoring this function, I think it makes sense to
> check that:
>
>   "foo\\ "
>
> and
>
>   "foo\\\ "
>
> match "foo\" and "foo\ ", respectively (I think they do with your patch,
> but it is a tricky case that is not immediately obvious).
>
> -Peff
Previous: Jeff KingNext: Jeff King
Message 3 of 5 in “Improve function dir.c:trim_trailing_spaces()”
  1. Improve function dir.c:trim_trailing_spaces()Pasha Bolokhov, May 28, 2014
  2. Jeff KingMay 29, 2014
  3. Pasha BolokhovMay 29, 2014
  4. Jeff KingMay 30, 2014
  5. Junio C HamanoMay 30, 2014

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.