On Fri, Sep 21, 2018 at 01:48:25PM -0400, Taylor Blau wrote: > On Fri, Sep 21, 2018 at 09:39:14AM -0700, Junio C Hamano wrote: > > Taylor Blau <ttaylorr@xxxxxxxxxx> writes: > > > > > +extract_haves () { > > > + depacketize - | grep -o '^.* \.have' > > > > Not portable, isn't it? > > > > cf. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/grep.html > > Good catch. Definitely not portable, per the link that you shared above. > > Since 'depacketize()' will give us a "\0", we can pull it and anything > after it out with 'sed', instead. Any lines that don't contain a "\0" > only contain an OID and the literal, ".have", and are fine as-is. > > Something like this: > > extract_haves () { > depacketize - | grep '^.* \.have' | sed -e 's/\\0.*$//g' > } > > Harder to read--at least for me--but infinitely more portable. In fact, I think that we can go even further: since we don't need to catch the beginning '^.*' (without -o), we can instead: extract_haves () { depacketize - | grep '\.have' | sed -e 's/\\0.*$//g' } Thanks, Taylor