svn commit: r364166 - head/usr.sbin/crunch/crunchgen

Jessica Clarke jrtc27 at freebsd.org
Thu Aug 13 15:37:50 UTC 2020


On 13 Aug 2020, at 16:33, Ian Lepore <ian at freebsd.org> wrote:
> On Wed, 2020-08-12 at 09:24 -0700, Rodney W. Grimes wrote:
>>> On 12 Aug 2020, at 17:10, Rodney W. Grimes <
>>> freebsd at gndrsh.dnsmgr.net> wrote:
>>>> 
>>>>> Author: arichardson
>>>>> Date: Wed Aug 12 15:49:06 2020
>>>>> New Revision: 364166
>>>>> URL: https://svnweb.freebsd.org/changeset/base/364166
>>>>> 
>>>>> Log:
>>>>> Fix crunchgen usage of mkstemp()
>>>>> 
>>>>> On Glibc systems mkstemp can only be used once with the same
>>>>> template
>>>>> string since it will be modified in-place and no longer
>>>>> contain any 'X' chars.
>>>>> It is fine to reuse the same file here but we need to be
>>>>> explicit and use
>>>>> open() instead of mkstemp() on the second use.
>>>>> 
>>>>> While touching this file also avoid a hardcoded /bin/pwd since
>>>>> that may not
>>>>> work when building on non-FreeBSD systems.
>>>> 
>>>> This may cause some grief, as now pwd may use a shell builtin
>>>> and often shell builtin's return a cwd that is not a true
>>>> full path, ie it may contain symlink compontents in the
>>>> path.
>>>> 
>>>> /bin/sh:
>>>> 
>>>> # cd /tmp/b
>>>> # /bin/pwd
>>>> /tmp/a
>>>> # pwd
>>>> /tmp/b
>>>> # ls -lag /tmp/?
>>>> lrwxr-xr-x  1 root  wheel  1 Aug 12 16:06 /tmp/b -> a
>>>> 
>>>> /tmp/a:
>>>> total 17
>>>> drwxr-xr-x   2 root  wheel    2 Aug 12 16:06 .
>>>> drwxrwxrwt  18 root  wheel  248 Aug 12 16:06 ..
>>> 
>>> There's the question of whether that really matters; both values
>>> are in
>>> some sense correct. But if you want to restore the old behaviour, I
>>> believe `env pwd` is the portable way to do so?
>> 
>> You have cut the context, but the code has a comment that
>> states it is doing this to remove symbolic links, so this
>> change infact undoes something that was being done intentionally.
>> 
>> I do believe also that a "env pwd" would do the right thing
>> as well.
>> 
> 
> Or just use "pwd -P" and avoid invoking multiple programs when the
> shell can do all the work.

Indeed, my suggestion was solving the wrong problem. r364174 added the
-P but also needlessly added env too; -P is part of POSIX so any
conforming pwd will support it, builtin or not.

Jess



More information about the svn-src-head mailing list