The Gnulib Assist project is a set of routines and header files needed to try to get GNULIB to build on OpenVMS / Ia64.
The filename conversions from Unix to OpenVMS format and OpenVMS to Unix format are now implemented.
Starting to implement wrappers for the OpenVMS CRTL routines that either return a filename or need a filename as a parameter.
Set up initial build procedures and Unit tests to test native OpenVMS test results.
Automated tests are running on commits.
Added in many of the missing header definitions and unit tests for the headers.
Many of the test results indicate that when calling a routine that creates a file, directory, or a symbolic link, that a check has to made for existing directories or files, symlinks with the same UNIX name.
This test needs to be done with lstat() or equivalent, so tests were added for fstat,lstat,stat().
And also decc$to_vms() to see if they have any issues.
* lstat() fails with directory names or symbolic links that have no punctuation in them such as "test_dir".
* lstat() fails with Unix directory names with a '.dir" in them, such as "test_dir.dir".
* decc$to_vms fails with directory names with a ".dir" in them.
* Everything fails with a Unix path starting with a non-printing character.
This is telling us that we need to try passing lstat() VMS format filenames to probe for ".dir" variants of the files.
To do this, we need:
* A vms_to_decc() routijne that works for the failing cases.
* A routine to save the values of decc$feature settings for POSIX_COMPLIANT_FILENAMES and FILENAME_UNIX_ONLY.
* VMS before 7.3-1 needs a routine to set the decc$feature values as user mode logical names.
* A routine to restore the values.
* An internal lstat() routine for routines to call to validate if a name exists.
A vms_crelnm() routine was added. It is both for VAX support, and eventually to make sure a GNV$GNU: root exists for child processes.
In order to create a working lstat()/stat() we need to see if converting the Unix path to OpenVMS format and passing the OpenVMS format path to the CRTL lstat()/stat() routine.
So need to add vms_feature_init() to set the CRTL mode, vms_feature_get(), vms_feature_set() to modify it.
Also need routines to save if CRTL is in "Unix Only" for filenames, change it to allow OpenVMS format files, and restore
it when it is not.
Added a number of bugfixes, and enhancements.
It took a while, but most of a replacement Unix format to OpenVMS format translation is implemented.
There are 6 ways that a Posix filename can be encoded on 64 bit VMS.
For this pass, deep directory support has not been implemented, We can test many of the major issues with out that support.
The trans.tbl encoding has not been implmented, and may not be because of currently low demand for the feature.
This does not fix any of the discovered issues, it just provides the infrastructure to support fixing them.
Current test results on Alpha and Integrity 8.4:
Current test results on VAX 7.3:
Added some of the routines needed for handling DID/FID filenames.
Fixed some minor bugs, many cosmetic.
Updated the documenation.
Reworked the tests to report expected failures for known bugs that this library or gnulib is trying to fix.
Current test results on Alpha and Integrity 8.4:
499 tests run.
202 tests failed!
108 tests expected to fail for known issues!
4 tests were skipped!
Current test results on VAX:
216 tests run.
65 tests failed!
74 tests expected to fail for known issues!
93 tests were skipped!
Added test for vms_realname routine.
Added vms_dir_to_did routine and test.
Added the DID support to the vms_unix_to_vms filename translation routine.
This effort is part of porting GNULIB to OpenVMS 8.4 on IA64.
Most GNU code uses GNULIB to compensate for differences in the C library.
Many of the changes to get GNULIB building have been checked in, but
some are still local.
This is the first run results:
The test-readtokens apparently hangs. Watched it consume no CPU at
least 1/2 hour before killing that test.
Any test that uses fork(), exec(), or system() is pretty much expected
to fail on OpenVMS at this point.
I am seeing clusters of failures in Unicode, I/O, and floating point tests.
Initial test results.