[PATCH setup 0/3] Setup replacement for incver_ifdep

Ken Brown kbrown@cornell.edu
Fri Jan 29 14:53:00 GMT 2016


On 1/29/2016 9:22 AM, Jon Turney wrote:
> On 28/01/2016 20:22, Eric Blake wrote:
>> On 01/28/2016 01:17 PM, Ken Brown wrote:
>>>>>     install-info $f /usr/share/info/dir ||
>>>>>     install-info --entry="* $$f ($f): $$f" $$f /usr/share/info/dir
>>>>>
>>>>> First, what do those double dollar signs mean?
>>>>
>>>> If this is from a Makefile snippet, it says that $f is a make variable,
>>>> while $$ turns into a literal $f for the shell that make invokes
>>>
>>> It's not a Makefile snippet; it's a snippet from a bash shell
>>> script.  Here's more context:
>>>
>>>    for f in /usr/share/info/*; do
>>>        case "$f" in
>>>            *\**)
>>>                ;;
>>>            */dir|*/dir.info*)
>>>                ;;
>>>            *-[0123456789]*)
>>>                ;;
>>>            *)
>>>                install-info $f /usr/share/info/dir ||
>>>                install-info --entry="* $$f ($f): $$f" $$f
>>> /usr/share/info/dir
>>>                ;;
>>>        esac
>>>    done
>>>
>>> It looks to me like all those double dollar signs will just get
>>> expanded to the PID of the bash process, so that the second
>>> install-info command is nonsense.  But maybe I'm missing something.
>>
>> Oooh, scary. Yeah, it looks like utter nonsense, as that would indeed
>> give the PID of bash followed by a literal f, but who wants to look up
>> info of '1234f'?  I wonder if someone writing the script copied
>> incorrectly from a Makefile?
>
> Crazy.  I didn't add this part, so I guess it's been there for a long time.
>
>>> Second, why is the second line needed, i.e., under what circumstances
>>> would it be expected to succeed after the first install-info command
>>> failed?
>>
>> Sadly, I don't know install-info enough to answer that one.
>
> I think the first install-info command would fail if the .info file is
> missing a START-INFO-DIR-ENTRY/END-INFO-DIR-ENTRY block, in which case
> install-info should fail with a 'install-info: warning: no info dir
> entry in `xxx.info''
>
> Since such a .info file is apparently valid (although I don't think we
> have any instances of such), I guess the nonsense after the || should be
> fixed to use '$f' correctly.

I have a few instances of those files on my system:

install-info: warning: no info dir entry in 
`/usr/share/info/automake-history.info.gz'
install-info: warning: no info dir entry in 
`/usr/share/info/automake-history1.12.info.gz'
install-info: warning: no info dir entry in 
`/usr/share/info/automake-history1.13.info.gz'
install-info: warning: no info dir entry in 
`/usr/share/info/texdraw.info.gz'

But I'm not convinced that we need to worry about them.  It could be 
that they're intended to be cited from other info files but not to be 
listed in the top level directory.  I would say that if an info file 
lacks a START-INFO-DIR-ENTRY/END-INFO-DIR-ENTRY block, we should assume 
that its author didn't want it listed in the directory.

Ken



More information about the Cygwin-apps mailing list