*[Bringing the discussion from the RexxLA list, as per Rony's suggestion]*

*Summary*

   - The discussion initiated in this RexxLA thread:
   https://groups.io/g/rexxla-members/topic/the_external_program_search/96286751
   ,
   - then moved to
   https://groups.io/g/rexxla-members/topic/getting_oorexx_docs_test/96398260

   - and finally to
   https://groups.io/g/rexxla-members/topic/next_steps_testing_patch/96697943


   - A good description of the problem can be found here:
   https://groups.io/g/rexxla-members/message/947
   - A preliminary test can be found here:
   https://groups.io/g/rexxla-members/message/954
   - Another, quite exhaustive, review can be found here:
   https://groups.io/g/rexxla-members/message/956

I've opened a bug report: https://sourceforge.net/p/oorexx/bugs/1865/ ;
Erich observed there some interesting details about the behaviour of the
SearchPath Windows API.

I submitted a patch for the docs, as a first draft to comment;
https://sourceforge.net/p/oorexx/patches/218/

*Present*

Yesterday I submitted a patch for CALL.testGroup:
https://sourceforge.net/p/oorexx/patches/219/ (will submit an updated
version, which addresses some problems, later).

Yesterday I also had the opportunity, after some stimulus by Rony, to try
my first compilation of the interpreter (under Ubuntu 22.04 --- wonderfully
easy, btw).

*Interesting news*

If in platform/unix/SysFileSystem.cpp we change

return name[0] == '~' || name[0] == '/' ||
      (name[0] == '.' && name[1] == '/') ||
      (name[0] == '.' && name[1] == '.' && name[2] == '/');


and instead write only

return name[0] == '~' || name[0] == '/';


(in SysFileSystem:hasDirectory), i.e., we eliminate the tests for the "./"
and "../" cases, then the new tests, test_search_order_4 and
test_search_order_5 will pass (they currently don't under 5.0.0).

Additionally, *the whole test suite passes.* Tests were made using

./testOORexx.rex -X native_API


I will upload the corresponding patch soon.

*Some comments more, and some questions*

   - I get some impression of disorder. Maybe I should have centralized all
   my submissions in a single place (i.e., in a RFE, for example, or in a bug
   report)? Currently, it's getting complicated to collect all the information
   (that's one of the reasons why I am writing that post). In the general
   case, what's the way to proceed? Should each of the different contributions
   cross-reference each other?
   - The patched Unix interpreter passes all the tests, but I don't know
   whether I've inadvertently introduced some subtle form of new bug.
   - Patching the Windows interpreter will be much more complicated, and
   I'm not certain that I possess the required skills to tackle the job. I
   could try to teach myself C++ (never programmed in C++ in all my life, I
   started with the DOS PL/I Optimizing Compiler, then learnt machine language
   and ASSEMBLER for DOS/360 [the "D" version: it had WXTRNs], and then Pascal
   and REXX for VM/SP -- which spoiled me completely :)) and try to program
   the required changes, but I'm afraid this would take me several weeks. The
   real problem, though, is not time (I don't believe we are in a hurry for a
   new release), but the quality of my hypothetical work. I've noticed that
   C++ does all kind of weird tricks with pointer arithmetic, and I'm afraid
   I'd end up by introducing a number of beginner-level bugs if I attempted to
   solve the problem by myself. Will try it, anyway, if this is what you
   advise.
   - What I can produce rapidly (say in one or two days) is a
   pseudocode version (i.e., a working Rexx program) of what has to be done in
   the Windows version. Fundamentally, the use of the SearchPath API has to
   be bypassed, and all checks have to be done "by hand" (like they are being
   done, already, in the Unix version).

  Josep Maria Blasco
_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to