Current-Users archive

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

/bin/sh $LINENO functions, and option names

Some of you might have noticed that I have committed the changes to
/bin/sh to enable the LINENO variable to work properly.

Part of that is an option to control whether LINENO counts from 1 in
every function (we we have historically - in all the 3 (closing on 4) years
since LINENO has worked at all...), and in the FreeBSD shell (from where
our previous implantation came), or continues counting lines from the
scriot in which the definition occurs (stdin counts as a "script" for
this purpose in our shell, but not in all) the way most other shells do.

The (very little) text in POSIX is not clear (to say the least) on this

So, we now have an option, which gets set (or unset) before a function is
defined, and controls which behaviour is adopted for that function.
(The function can also contain code to choose, and even switch, if it
desires, but that means adding non-portable code to it.)

When I first proposed this, I had invented some totally absurd gibberish
for the option name, and asked for suggestions for a better choice.

Exactly one suggestion was forthcoming, from <>, which was
lineno_fn_relative and so, given the lack of alternatives, that is what
I picked.

Now that the code has been committed, there as been (off-list) another
suggestion, "local[-]linenno" (which would be locallineno or local-lineno,
or I presume local_lineno would be OK as well.)

Since this is very new, and I doubt anyone has had time to embed the option
name in any scripts yet, we still have the opportunity to change it, if it
is done quickly...

So opinions, or more suggestions, welcome - but only in the next few days,
after that one will get picked, and presuming that the LINENO code has not
caused any more problems, I will request that it get pulled into netbsd-8
After that (after the request is made) there will be no more cosmetic

Note that the option also has a one char (flag) name, 'L', so "set -L"
is the same as "set -o lineno_fn_relative" (and of course, to disable,
with + instead of -).   The default for this option is "on" (set -L)
for compatibility with last week's NetBSD code.  That means if you want
to run a script that expects LINENO to behave like it does in other shells
(bash ksh93, etc) then "sh +L script" will do it.   Since 'L' for "LINENO"
is so obvious, I do not plan on changing that one...


Home | Main Index | Thread Index | Old Index