|
|
On 3/27/24 19:28, Kenneth wrote:
> Just out of curiosity: Where do these codes show up? Are they 'accessible' to a
> typical (i.e. naive!) computer user in Windows?
Most any place a compute working environment / locale has called a
executable program, it's the normal to return, 'return codes'. In my
Ubuntu Linux environment, the calling, work locale is my terminal where
I type 'povray ...' to call the POV-Ray executable program.
I can look at the return code by looking at a special environment
variable '?' which holds the return code of the command / program called
/ run. The '$' prefix extracts the current integer value.
Supposing the file boom.pov contains a single line: #error "Boom",
yuqk boom.pov
echo $?
returns something like:
...
=== [Parsing...] ==================================================
File 'boom.pov' line 2:
Parse Error:
Parse halted by #error directive: Boom
Fatal error in parser: Cannot parse input.
Render failed
pokorny:tmp$ echo $?
1
I don't know the equivalent to 'echo $?' in a window's command terminal,
but I'm sure there is one.
In testing, I'm using the new +wt0 trick and the return code value to
create bash testing scripts like:
#!/bin/bash
#----------------------------------------------
# Herein running series of POV-Ray (yuqk) commands with good flag usage
# looking for any of them to fail.
#----------------------------------------------
export YUQK_PARSE_ONLY="yuqkA -d -p +wt0"
#---
if $YUQK_PARSE_ONLY version_only.pov >/dev/null 2>&1; then
echo "Pass case: version_only.pov"
else
RC=$?
echo "Pass case: version_only.pov FAIL rc=$RC"
exit $RC
fi
... 179 more tests of good flag usage follow
Bill P.
---
I was curious so played some more... It gets convoluted, please feel
free to ignore the rest.
This also works in my yuqk fork, though I doubt whether it will work for
official POV-Ray releases. Pretending the following is all on one line:
yuqk boom.pov fatal_error_command="echo \"Scene: <%s>
fatal_error_command. RC: <$?>\""
It uses the fatal_error_command facility of POV-Ray itself. The output
looks like:
==== [Parsing...] ==================================================
File 'boom.pov' line 2:
Parse Error:
Parse halted by #error directive: Boom
Fatal error in parser: Cannot parse input.
Scene: <boom> fatal_error_command. RC: <0>
Render failed
However! The return code (RC) reported by the 'fatal command' is not for
the current running POV-Ray executable, but for the command previously
run from the terminal, which is currently running the POV-Ray executable.
The following pile of a command shows how return code values exist in
two locale environments here. The initial terminal and a second one the
fatal error command sets up. Again imagine it all on one line:
ls;yuqk boom.pov fatal_error_command="yuqk boom.pov;RC=$?;echo \"boom 2
RC=$RC\";echo \"Scene: <%s> fatal_error_command. RC: <$RC> and <$?> for
initial 'ls'\"";
The output is:
...
File 'boom.pov' line 2:
Parse Error:
Parse halted by #error directive: Boom
Fatal error in parser: Cannot parse input.
Render failed
boom 2 RC=1
Scene: <boom> fatal_error_command. RC: <1> and <0> for initial 'ls'
Render failed
Yepper. The fatal error command is running yuqk with boom.pov a second
time just to capture the eventual return code - which the first running
version of yuqk has not yet set itself... :-)
Post a reply to this message
|
|