On 10/21/2025 3:38 AM, Rony G. Flatscher wrote:
On 21.10.2025 00:18, dominic wise wrote:
I’m not going to lie – the changes to command line processing for
REXX.EXE on Windows make me somewhat nervous given the number of
processes I’ve written over the years that are Rexx programs called
in different scenarios including from batch files. I have found
subtle oddities from time to time but have been able to work around
them. If there are any changes in behaviour to command-line
processing I fear that things may stop working due to these changes
Does anyone recall the history of this code and why this difference
exists between Unix(-like) and Windows?
I do not recall the history, it was before my time 🙂. But, in thinking
about it, I suspect it may be related to the Windows support for
file/path names containing blanks. The shell program, CMD.EXE, does
some not-so-simple things with the command line when it contains
double-quotes. In some cases they are removed and in other cases they
aren't 🙁.
I can see that GetCommandLine and custom parsing is absolutely
required for REXXHIDE.EXE since this is not a console program so has
the WinMain entry point and no argc/argv pair; likewise for
OODIALOG.EXE. Was it included in REXX.EXE for consistency of code
(or behaviour between the REXX/REXXHIDE/OODIALOG triad) or for some
other reason ?
Currently I did not touch/change rexxhide/rexxpaws.
What is the level of confidence that there are not going to be
regressions, even subtle ones ?
None, that was the reason why I asked.
Not having received any feedback I thought it is worth a try as it
also would simplify things (being a big fan of the KISS principle) and
see how the tests do in the hands of Rexx users using this version of
rexx.exe.
:)
Seeing Jean Louis' and now your postings make me think to let
common\platform\windows\ArgumentParser.h in place.
Furthermore, the question then would be to incorporate Jean Louis' WIP
into the loader which would mean that Rexx would start to do code page
translations, which might have also an impact to your programs (this
also would affect ooDialog for which there is a Unicode version by
Jean Louis; AFAIK the current used version of ooDialog got changed
quite a bit since the Unicode version, such that I fear that there
would be a lot of work necessary to get the currently distributed
version of ooDialog to full Unicode support, but I may be wrong)? What
would be the thoughts for this?
Does the automated test suite have extensive coverage for diverse
command line tests ?
Not that I know of.
Speaking as a concerned *heavy* user of mixed batch / Rexx command
processing 😊
Thank you (seriously!) for speaking out!
One principle that is important for ooRexx, I believe, is to keep the
language backwardly compatible as much as possible (that is the reason
why 30 or more years old Rexx programs still run unchanged on ooRexx).
Even if this means that one needs to continue to carry around
something that may look like kludge to some, but is not seen by users.
So, may I ask you to check out this version for incompatibilites.
Also, if you find any, could you maybe create test units such that we
can test for these automatically for all future versions of ooRexx? At
this point it is not difficult (just a little cumbersome) to return to
using ArgumentParser.h for the Windows version. Again, ooRexx should
remain backwardly compatible as much as possible, so this is well
invested time.
Some early thoughts (before I have had time to actually try them) for
tests: double-quotes around the program name (e.g. rexx "my pgm.rex") w/
and w/o arguments; rexx "c:\program files\oorexx\rexxtry.rex"; rexx -e
"say hi!";
other tests with quoted filenames as arguments. These are obviously
Windows tests. Hopefully, I will have time later to test these tests
(!) later and post the results.
---rony
P.S.: Will wait a few days to see further feedback and test results.
In the meantime I will try to complete the documentation (rexxref).
On Mon, 20 Oct 2025, 21:21 Rony G. Flatscher,
<[email protected]> wrote:
Bonsoir Jean Louis,
thank you very much for sharing these very interesting pointers
and these valuable insights with respect to codepage/Unicode
handling in Windows and how to allow to use UTF-8 properly on
Windows!
This also brings up the desire to get full Unicode support into
ooRexx for supporting all the non-English languages there are in
the world!
---rony
P.S.: Ad turning a command line into C-like arrays and vice versa:
* commandline: arguments enquoted in double quotes, even if
they contain whitespace, constitute a single argument (which
needs to have the enclosing double quotes removed, as they
are not part of the argument value itself),
* C-like array: creating a Rexx command line would blank
concatenate all the arguments; if an argument includes
whitespace it needs to be enquoted in double quotes for the
command line.
On 20.10.2025 17:41, Jean Louis Faucher wrote:
On 10/20/2025 8:08 AM, Rony G. Flatscher wrote:
Would there be anything lost function-wise if I were
to change Windows' rexx.cpp to match the Unix'
rexx.cpp and forgo GetCommandLine() and
ArgumentParser.h altogether?
I can't answer to your question but it's an opportunity to
share an abandoned WIP.
Abandonned because:
* We recommend enabling UTF-8 beta support in Windows
* Correctly handling console codepage when getting
arguments could introduce regressions
A few weeks ago, I had a look at the management of arguments
under Windows because of that:
CLI arguments under windows
<https://github.com/jlfaucher/executor/blob/73aae6adefc65601a85fb1b8ac8224818a273ef3/sandbox/jlf/_notes.txt#L1886-L1910>
I wrote a test program args-windows.c
<https://github.com/jlfaucher/executor/blob/master/sandbox/jlf/internals/notes/args-windows.c>
to
explore 3 cases:
// 1: similar to rexx
// 2: wmain (new)
// 3: similar to rexxhide (no console)
The selection of the test case is made like that:
#define MAIN 2
Easy to build:
cl args-windows.c Shell32.lib User32.lib
The output shows that it's possible to have a correct support
of UTF-8 for the test cases 1 and 2.
*chcp 65001*
*rexx -e "say 'Père Noël **🎅**'"*
P�re No�l ??
*args-windows.exe -e "say 'Père Noël **🎅**'"*
*Test case 1 and 2:*
0 : args-windows.exe
61 72 67 73 2d 77 69 6e 64 6f 77 73 2e 65 78 65
1 : -e
2d 65
2 : say 'Père Noël 🎅'
73 61 79 20 27 50 c3 a8 72 65 20 4e 6f c3 ab 6c 20 f0 9f
8e 85 27
*Test case 3:*
The UTF-8 bytes are not displayed correctly by MessageBox
because I use the "A" version.
If the "W" version was used, and the UTF-8 was converted to
UTF-16 then the display would be correct (well, not sure for
the emoji).
Tested with a modified RxMessageBox that takes an optional
code page.
Must be tested with a file, not from the CLI, because of the
arguments conversion problem.
*file.rex* (encoded UTF-8)
*call RxMessageBox 'Père Noël **🎅**', 'Title', /*button*/,
/*icon*/, /*other*/, 65001*
(end of file)
*rexx file.rex*
Don't know why the emoji is like that.
Maybe a font problem, not worth investigating.
Patch not proposed because adding a code page to RxMessageBox
seems like an endless workaround (already added to clipboard
methods).
If 65001 is not provided then it's the current implementation
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel
--
Gil Barmwater
_______________________________________________
Oorexx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/oorexx-devel