Re: git: accfb4cc9346 - main - genoffset.sh: stop using a temporary file

From: Matthew Seaman <matthew_at_FreeBSD.org>
Date: Thu, 16 Nov 2023 16:47:22 UTC
On 16/11/2023 16:23, Warner Losh wrote:
> On Thu, Nov 16, 2023 at 9:07 AM Jessica Clarke <jrtc27@freebsd.org> wrote:
> 
>> On 16 Nov 2023, at 15:07, Jonathan T. Looney <jtl@FreeBSD.org> wrote:

>>>      printf '\t"struct "#s"_lite field "#f" not at offset "#o)\n'
>>> -    cat "$temp/asserts"
>>> +    echo -e "${asserts}\c"
>>
>> This isn’t POSIX, and isn’t supported by macOS’s sh, so breaks the
>> build there. Please fix or revert promptly.
>>
> 
> echo "${asserts}"
> 
> is semantically the same for C. A stray newline doesn't matter in this
> context. It's not worth the effort to remove it.
> 
> Sadly, echo -n doesn't work (it's not posix, and posix defines it
> specifically as implementation defined). `echo "fred\c"' works on macos,
> but not FreeBSD's shell echo built-in (but somehow does for /bin/echo).
> macos doesn't implement -e at all (it's also not posix). FreeBSD's shell
> echo build-in is not posix compliant. So, to be portable, just echo it, and
> cope with the extra newline.
> 
> That's what I'd do :)
> 

Why not just use printf(1) like in the preceeding line of code?

    printf "%s" "${asserts}"

will avoid adding any extra newline characters to the output.

	Matthew