This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH setup 0/3] Setup replacement for incver_ifdep


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]