From: Jeff King Date: Mon, 10 Jul 2017 00:06:38 GMT Subject: Re: [PATCH] sha1_file: add slash once in for_each_file_in_obj_subdir() Message-ID: <20170710000638.p7foedomfmdakyww@sigill.intra.peff.net> In-Reply-To: On Sun, Jul 09, 2017 at 09:41:51AM -0700, Junio C Hamano wrote: > > On the plus side, this moves an invariant out of the loop. On the minus > > side, it has to introduce an extra variable for "length we add on to" > > versus "dir length to pass to the subdir_cb". That's not rocket science, > > but it does slightly complicate things (though I note we already have > > "origlen", so this is bumping us from 2 to 3 length variables, not 1 to > > 2). > > > > So I dunno. It's fine with me if we take it, and fine if we leave it. > > Unlike origlen, base vs dir lengths are not strictly needed; we > prepare the base including '/', and we know we always have just one > '/' at the end, so anybody that uses dirlen to truncate it back to > the original before passing it down can truncate to (baselen-1), no? > > In other words, something like this (not an incremental but a > replacement) to keep calling "baselen" the length of the leading > constant part we append to? Yeah, I think that is correct. And you could even drop origlen by replacing it with "baselen - 3" at the end. But somehow doing the computation on the fly actually seems more complicated to me (from the perspective of a reader who is trying to make sure all is correct). -Peff