POV-Ray : Newsgroups : povray.beta-test : v3.8 beta 2 unix / linux ini / flag parsing messages. Server Time
2 May 2024 16:27:37 EDT (-0400)
  v3.8 beta 2 unix / linux ini / flag parsing messages. (Message 1 to 1 of 1)  
From: William F Pokorny
Subject: v3.8 beta 2 unix / linux ini / flag parsing messages.
Date: 7 Feb 2024 09:07:46
Message: <65c38eb2$1@news.povray.org>
In official releases of POV-Ray since v3.7, where we get ini or flag 
parsing errors, the output looks something like:

Problem with option setting
<install dir>/bin/povray try
Failed to parse command-line option


For some years yuqk has done better in that it spits out more detail - 
though I have no idea what fix or change over time made that so!

That said, while the yuqk output had more useful information about the 
actual problem, it contained duplicate messages and some of those 
messages were mangled in a way indicating a string handling (or thread 
safety?) issue.

I've traced the duplication and string mangling to:

class vfeProcessRenderOptions : public ProcessRenderOptions // (*)

if vfe/vfe.h. More specifically to these message related methods:

virtual void ParseError(const char *, ...) override;
virtual void ParseErrorAt(ITextStream *, const char *, ...) override;
virtual void WriteError(const char *, ...) override;

All three methods contain the following three lines:

     m_Session->AppendStatusMessage(str);
     m_Session->AppendErrorMessage(str, file->name(), file->line(), 0);
     m_Session->SetFailed();

Comment the first one to fix the duplicate messages to the unix / linux 
terminal. Basically, the status and error messages are both ending up as 
outputs to the terminal with strange ordering - where, probably, in 
windows they do not. Eliminating the duplicates appears to have fixed 
the message mangling too where parts and pieces getting blended.

// Causes mangled duplicate messages to unix terminal
//  m_Session->AppendStatusMessage(str);
     m_Session->AppendErrorMessage(str, file->name(), file->line(), 0);
     m_Session->SetFailed();

(*) - Yep, there is some oddness in vfeProcessRenderOptions over-ridding 
complete, unix compatible, methods in the ProcessRenderOptions class for 
methods less workable. Not dug inot why the situation is as it is. There 
is likely a some cleaner solution, but for now I'm taking what I can get 
quickly.

Aside: Attempts at cleaner output using '\n' in the strings passed to 
the vfeProcessRenderOptions continue to cause problems - so the output 
below not as 'pretty' as it could be.

For same error as what tripped the short message above, yuqk now kicks out:

Possible unquoted string with spaces in INI file. Use " or ' to quote.
Cannot open INI file 'txt'.
Cannot continue to process INI file: 'boom.ini' due to a parse error in 
line 3.
Cannot continue to process INI file: 'try' due to a parse error in line 7.


Problem with option setting
<install dir>/bin/povray try
Failed to parse command-line option

Bill P.


Post a reply to this message

Copyright 2003-2023 Persistence of Vision Raytracer Pty. Ltd.