Hi,

Replying to the new thread as requested.

About the global LINENO: having thought about it more, I don't think it makes sense to special-case trap actions. This is something that should be done for all evalstring() calls that are performed when an outer context has already set LINENO. In the busybox version of ash, there is only one other such case: the eval command. So please consider:

  #!/bin/busybox ash
  echo LINENO=$LINENO
  eval 'echo LINENO=$LINENO; set -o invalid'

This prints

  LINENO=2
  LINENO=1
  ./test.sh: set: line 1: illegal option -o invalid

That's not ideal. The line number 1 is defensible, but it's not line 1 of ./test.sh as gets printed. This would be better if it got printed either as line 1 of the eval string, or line 3 of the script (and LINENO updated to match).

In my experience, printing this as line 3 of the script is more useful. POSIX does not require any particular value in this case, so in my shell, I will update it to do just that. I'm finishing some testing and hope to push that later today. As with the earlier patch, if this would be useful for busybox, feel free to use it.

On 14/08/2021 17:14, Roberto A. Foglietta wrote:
Hi all,

 I will send the whole six patches developed in these days with the test suite in a tarball.

busybox-1.33.1-1of6-add-trap-ERR-to-ash.patch
busybox-1.33.1-2of6-trap-ERR-fix-global-LINENO.patch
busybox-1.33.1-3of6-set-E-error-trace-added.patch
busybox-1.33.1-4of6-global-FUNCNAME.patch
busybox-1.33.1-5of6-multiline-trap-LINENO-bugfix.patch
busybox-1.33.1-6of6-when-FUNCNAME-is-null-bugfix.patch

 The whole set enanches the shell script management in ash (compatible with bash)

  Best regards,
--
Roberto A. Foglietta
+39.349.33.30.697
_______________________________________________
busybox mailing list
busybox@busybox.net
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to