bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [PATCH] tests/test-xalloc-die.sh: Use $EXEEXT.


From: Jim Meyering
Subject: Re: [PATCH] tests/test-xalloc-die.sh: Use $EXEEXT.
Date: Thu, 14 Jan 2010 09:08:41 +0100

Jim Meyering wrote:
> Eric Blake wrote:
>> According to Jim Meyering on 1/13/2010 3:19 AM:
>>> I didn't account for that use case.
>>> I wonder if there is some way to write/use a command-not-found
>>> handler to automate the error-prone "add-$EXE-suffix" at run-time.
>>>
>>> If at all possible, I would like to avoid the invasive change
>>> of adding the $EXE suffix to every just-built-binary invocation
>>> in every test script.
...

I've found an even better way:

Think of a set-up function that (when $EXEEXT is nonempty)
iterates through the *.$EXEEXT executables in a specified directory...

create_exe_shim_functions ()
{
  case $EXEEXT in
    '') return 0 ;;
    .exe) ;;
    *) echo "$0: unexpected value of $EXEEXT" 1>&2; return 1 ;;
  esac

  for file in *.$EXEEXT dummy; do
    case $file in dummy) continue;; esac

    # Remove the .$EXEEXT suffix.
    base=${file%.$EXEEXT}

    # Ensure that "$base" is not tainted (no space, backtick, semicolon, etc.)
    case $base in
      *[^-a-zA-Z0-9_.+]*)
        echo "$0: ignoring suspicious name: $base" 1>&2; continue;;
    esac

    # Create a function named $base whose sole job is to invoke $base.$EXEEXT,
    # assuming its containing dir is already in PATH.
    eval '$base() { $file "$@"; }'
  done

  return 0
}

Now, run that function from each directory in PATH that might
contain .exe binaries.

Done.  ;-)
[untested]




reply via email to

[Prev in Thread] Current Thread [Next in Thread]