This is the mail archive of the cygwin@cygwin.com 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: Question about ash and getopts


In message <3FF09D6C.7F12C5AC@dessent.net>, Brian Dessent writes:
>Peter Seebach wrote:
>> But, most importantly, it's in POSIX.  I can see no reason for /bin/sh to not
>> be at least reasonably close to a POSIX shell, when the code is already
>> written.

>I was looking at the POSIX specs, and while getopts is listed as a
>required utility[1], and it is listed in the table "regular built-in
>utilities"[2] it is not in the table "special built-in utilities."[3] 
>So, it looks like the command must be present but it does not
>necessarily have to be built into the shell.

Except that I don't think it can be implemented externally, because there's
no obvious way for it to set $OPTIND.

>> The "ash maintainer" is either me or Corinna.  FWIW, I don't plan on
>> changing this.  I want ash to be small and fast when running configure
>> scripts.  I've stripped ash down to support only the minimal set of
>> functionality found in older versions of UNIX.  I use the /bin/sh on
>> Digital UNIX 3.2 as a reference.

>> If you want more functionality, use bash.

>> FYI, getopts can also be a separate program although we don't supply it
>> with cygwin, currently.

That's the one I remember.  The problem is that configure scripts, however
common, are not the only kind of shell scripts out there, and getopts is a
very, very, important utility to have access to when writing portable scripts.

It's certainly very unfriendly to programmers, who may well want to write
portable scripts.  Having exactly one target where /bin/sh doesn't have
getopts is pretty awful.  "use bash" doesn't work portably - not everyone
ships with a /bin/bash, either.  :)

>So, it looks like cgf is the one you need to convince.  Perhaps show the
>running time differences of a long configure script with and without a
>getopts-enabled ash.  I have no idea what the differences may be, if
>any.

Intuition suggests there wouldn't be any measurable difference; there's no
mechanism for an unused feature to affect performance unless it's very
large.

-s

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/


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