summaryrefslogtreecommitdiffstats
path: root/src/H5FDcore.c
Commit message (Collapse)AuthorAgeFilesLines
* Updated sec2, log, and core VFDs to use pread/pwrite whenDana Robinson2019-01-311-6/+22
| | | | available (can be controlled via a configure/CMake option)
* Merge branch 'develop' into vfd_init_cleanupDana Robinson2019-01-011-24/+124
|\
| * Clear driver properties before returning them to application.Quincey Koziol2018-12-191-24/+124
| | | | | | | | | | Move write_tracking and page_size properties to be inside the core VFD's driver properties.
* | Cleaned up and normalized VFD init calls.Dana Robinson2018-12-181-3/+3
|/
* Merge branch 'develop' into windows_openDana Robinson2017-05-311-3/+5
|\
| * Fixed HDFFV-10214:Dana Robinson2017-05-191-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | * Updated comments in the library to accurately reflect the semantics of the H5FD_FEAT_POSIX_COMPAT_HANDLE flag. * Removed the check for the POSIX compatible handle feature flag when determining if a VFD supports SWMR. Partial work for HDFFV-10197: * Added a new H5FD_FEAT_DEFAULT_VFD_COMPATIBLE feature flag that is set when a VFD creates output that is compatible with the default VFD. Will be used in the testing but might also be generally useful to users.
* | Rework of the POSIX file open permissions and macros to clean upDana Robinson2017-04-281-5/+5
| | | | | | | | | | | | HDopen() calls. Also fixed a minor const warning in the core VFD.
* | Changed the Windows POSIX open() file permissions to be correctDana Robinson2017-04-281-3/+3
|/ | | | according to MSDN. Partial fix for HDFFV-9630.
* Merge pull request #426 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:hdf5_1_10 to ↵Larry Knox2017-04-251-6/+4
| | | | | | | | | | hdf5_1_10 * commit '54957d37f5aa73912763dbb6e308555e863c43f4': Commit copyright header change for src/H5PLpkg.c which was added after running script to make changes. Add new files in release_docs to MANIFEST. Cimmit changes to Makefile.in(s) and H5PL.c that resulted from running autogen.sh. Merge pull request #407 in HDFFV/hdf5 from ~LRKNOX/hdf5_lrk:hdf5_1_10_1 to hdf5_1_10_1 Change copyright headers to replace url referring to file to be removed and replace it with new url for COPYING file.
* Bring over another batch (hopefully the last) of non-SWMR "normalization"Quincey Koziol2016-11-291-15/+28
| | | | changes from the revise_chunks branch.
* [svn-r30147] Removed #ifdef-guarded debug output from core VFD.Dana Robinson2016-07-061-72/+15
| | | | | Tested on: 64-bit Ubuntu Linux w/ gcc 5.3.1 Autotools serial w/ core and core_paged VFDs
* [svn-r30113] Description:Quincey Koziol2016-06-281-2/+2
| | | | | | | | Clean up warnings (from 2774 -> 1560, with my standard debug build) Tested on: MacOSX/64 10.11.5 (amazon) w/serial, parallel & production (h5committest forthcoming)
* [svn-r29978] Description:Quincey Koziol2016-05-301-8/+8
| | | | | | | | | | Bring r29914 from revise_chunks branch to trunk: Banished -Wformat= warnings from the library, tools, and tests. Tested on: MacOSX/64 10.11.5 (amazon) w/serial, parallel & production (h5committest forthcoming)
* [svn-r28972] Removed option to clear file buffers from autotools, CMake, and ↵Dana Robinson2016-01-261-4/+0
| | | | | | | | | | | | library. Buffers that will be written to disk will now always be cleared since not doing this has huge security implications. Tested on: 64-bit Ubuntu 15.10 (Linux 4.2.0, x86_64) gcc 5.2.1 serial autotools parallel autotools (MPICH 3.1.4) serial CMake
* [svn-r28626] Brought VFD-level file locking code over from revise_chunks.Dana Robinson2015-12-141-8/+82
| | | | | | | Tested on: Ubuntu 15.10 (Linux 4.2.0 x86_64) gcc 5.2.1 serial only (these changes have been in revise_chunks for a long time)
* [svn-r27811] Description:Quincey Koziol2015-09-161-8/+8
| | | | | | | | | | | Refactor property list code to "deep copy" properties in the correct way, retraining the rest of the library to copy & release things correctly. This cleans up another batch of memory leaks, etc. within the library. Tested on: MacOSX/64 10.10.5 (amazon) w/serial & parallel Linux/32 2.6.x (jam) w/serial & parallel (h5committest forthcoming)
* [svn-r27768] Description:Quincey Koziol2015-09-141-124/+119
| | | | | | | | | | | | | | | | | | | | | | Complete revamp of package initialization/shutdown mechanism in the library. Each package now has a single init/term routine. This new way should avoid packages being re-initialized during library shutdown and is also be _much_ more proactive about giving feedback for resource leaks internal to the library. Introduces a new "module" header file for packages in the library (e.g src/H5Fmodule.h) which sets up some necessary package configuration macros for the FUNC_ENTER/LEAVE macros. (The VFL drivers have their own slightly modified version of this header, src/H5FDdrvr_module.h) Also cleaned up a bunch of resources leaks all across the library and tests, along with addressing many warnings, as I encountered them. Tested on: MacOSX/64 10.10.5 (amazon) w/serial & parallel Linux/64 3.10.x (kituo) w/serial & parallel Linux/64 2.6.x (ostrich) w/serial
* [svn-r27572] Removed VMS-specific code from the library.Dana Robinson2015-08-241-22/+0
| | | | | | | | | The only remaining code consists of a few floating-point tests that rely on pre-generated and checked-in VMS files. These have been left alone, even though they will not be possible to recreate, since testing VMS float behavior is still important. Tested on: h5committest
* [svn-r27133] - Add a new attribute function characterstic for format:Mohamad Chaarawi2015-06-011-7/+7
| | | | | | | | * H5_ATTR_FORMAT(X,Y,Z) __attribute__((format(X, Y, Z))) - Rename UNUSED attribute characterstic to H5_ATTR_UNUSED. - Rename NORETURN attribute characterstic to H5_ATTR_NORETURN tested with h5committest.
* [svn-r27045] Renamed H5_ASSIGN_OVERFLOW() to H5_CHECKED_ASSIGN() and re-orderedDana Robinson2015-05-101-2/+2
| | | | | | the arguments to be in a more logical order. Tested on: h5committest
* [svn-r26002] move checks on reading/writing beyond file eoa outside of the ↵Mohamad Chaarawi2015-01-221-4/+0
| | | | | | file drivers and into a centralized place in H5FD_read/write. tested h5committest.
* [svn-r25929] Description:Quincey Koziol2014-12-291-3/+3
| | | | | | | | | | Clean up EOF code within library and add 'mem_type' parameter to 'get_eof' VFD callback, to avoid various ambiguous situations, particularly with the multi VFD. (Supports changes for 'avoid_truncate' feature also) Tested on: MacOSX/64 10.10.1 (amazon) w/serial & parallel h5committest forthcoming
* [svn-r25531] remove use of C99 PRI that failed on windows in dtypes.cMohamad Chaarawi2014-08-111-4/+9
| | | | fix bugs where hid_t were assumed to be 32 bit ints or herr_t.
* [svn-r25161] Removed some C++-style comments from H5FDcore.c.Dana Robinson2014-05-051-8/+0
| | | | | | | Tested on: 32-bit LE linux (jam) Tested with HDF5_DRIVER set to "core_paged".
* [svn-r25045] Fixed a few missing lines of code that were not merged when theDana Robinson2014-04-141-5/+15
| | | | | | | | | | | core VFD paging changes were brought over. Tested on: 32-bit LE linux (jam) 64-bit LE linux (koala) 64-bit BE linux (ostrich) All were tested with HDF5_DRIVER set to "core_paged".
* [svn-r24993] Purpose:Dana Robinson2014-04-091-37/+350
| | | | | | | | | | | | | | | Adds write tracking to the core VFD, which can be configured via the H5Pset/get_core_write_tracking() API call. When enabled and writing to the backing store is enabled, this feature will track writes and only write out the changed bytes on flush/close. Tested on: 32-bit LE linux (jam) w/ Fortran and C++ 64-bit BE linux (ostrich) 64-bit Darwin 12.5.0 (kite) All were tested using the core VFD w/ paging on (core_paged in the VFD list). Make check-vfd was also tested on jam.
* [svn-r23713] Description:Quincey Koziol2013-05-211-1/+1
| | | | | | | | | | Clean up warnings, switch library code to use Standard C/POSIX wrapper macros, remove internal calls to API routines, update checkapi and checkposix scripts. Tested on: Mac OSX/64 10.8.3 (amazon) w/C++ & FORTRAN Big-Endian Linux/64 (ostrich)
* [svn-r23219] Description:Quincey Koziol2013-02-021-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring reviewed changes from Coverity branch back to trunk (QK & JK): r20457: Coverity issue 691: return of H5duo could be negative. Fixed by using STDOUT_FILENO and redesign parse_command_line and main to cleanup file allocations. The output_file var is null when using stdout. In cleanup do not close output_file if NULL. r20510: Initialize ufid = -1 and predicate HDclose call on ufid != -1 r20511: Purpose: Fix coverity issue 1715 Description: Free "file" and nested data on failure in H5FD_core_open. r20512: Initialize ifid = -1 and predicate HDclose call on ifid != -1 r20514: Initialize h5fid = -1 and predicate HDclose call on h5fid != -1 r20516: Added else branch to the if (ret_value < 0) check. r20522: Addressed coverity issues 930-933, 850, 836, 835, 1307. All minor potential buffer overwrite bugs, or coverity errors. Fixed by replacing strcpy and sprintf with strncpy and snprintf. r20523: fixed coverity issues 68, 1120, 1116i r20524: Check H5Z_SZIP->encoder_present < 1 assuming 0 represents absence. r20601: Purpose: Fix coverity issues 1703-1705 Description: Modified the cleanup code in test_free in accum.c to reset allocated buffers to NULL after they are freed, and modified the error cleanup code to check if these buffers are NULL before freeing them. Also fixed some unrelated warnings in accum.c. r20602: Use HDsnprintf and HDstrncat r20603: Purpose: Fix coverity issues 808-809 Description: Modified test_core in vfd.c to check the returns from malloc, and keep track of whether points and check are allocated by setting them to NULL when they are not. Added code to free points and check on error if they are not NULL. Also fixed unrelated warnings in vfd.c. r20604: Use HDstrncpy. r20605: Use HDstrncpy and HDstrncat. r20606: Purpose: Fix coverity issue 807 Description: Modified long_compact in stab.c to keep track of whether objname is allocated by setting it to NULL when it is not. Added code to free objname on error if it is not NULL. r20607: Changed string function calls to use versions that specify the string length to fix coverity issues 832 and 839. Tested on: Mac OSX/64 10.8.2 (amazon) (Too minor to require h5committest)
* [svn-r23111] Purpose:Dana Robinson2012-12-191-295/+255
| | | | | | | | | | | | | | | | | | | Fixes for HDF5 1.8.10 p1 HDFFV-7975 Changed the max single I/O operation size on Darwin/Mac OS X. HDFFV-8124 and HDFFV-8158 Fixed a core VFD bug when large blocks of data are read. HDFFV-8246 Added more fields to the VFD read/write error messages. Tested on: 64-bit Windows 7, Visual Studio 2010, CMake 64-bit Mac OS X Snow Leopard (Fred), Fortran, C++ 64-bit BE Linux (Ostrich), Fortran, C++ 32-bit LE Linux (jam), Fortran, C++ (also parallel w/ Fortran)
* [svn-r22998] Description:Quincey Koziol2012-11-011-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Clean up warnings and bring changes from Coverity branch back to trunk: r20451: Fixed coverity 810 r20454: Purpose: Fix coverity issue 816 Description: Modified various file drivers to always check the return value from H5P_get_driver_info. r20455: Purpose: Cleanup fix for coverity issue 816 Description: Removed redundant check for "fa" in H5FD_core_open. Tested on: Mac OSX/64 10.8.2 (amazon) w/debug (Too minor to require h5committest)
* [svn-r22676] Changes needed to make the default free-list mapping from ↵Vailin Choi2012-08-131-1/+1
| | | | H5FD_FLMAP_SINGLE to H5FD_FLMAP_DICHOTOMY.
* [svn-r22657] Bug fix: previous commit has a mistake--it used the wrong type ↵Albert Cheng2012-08-091-1/+1
| | | | | | | | of return value of FAIL. The function type is a pointer. Fixed it by changing it to NULL. Tested: In remote machine ADA (aix).
* [svn-r22646] Description:Quincey Koziol2012-08-081-4/+6
| | | | | | | | | Changes resulting from Klocwork static analysis tool, from Mark Miller @ LLNL (miller86@llnl.gov). Tested on: Mac OS X/64 10.7.4 (amazon) w/debug, C++ & FORTRAN, using gcc 4.7.x (too minor to require h5committest)
* [svn-r22219] Description:Quincey Koziol2012-03-311-96/+197
| | | | | | | | Merge "file image" changes from feature branch back to trunk. Tested on: Mac OSX/64 10.7.3 (amazon) w/debug (h5committest upcoming)
* [svn-r22178] Fixed a bad merge where truncate was called twice in the core VFD.Dana Robinson2012-03-281-12/+2
| | | | | Minor change: tested on jam, koala, ostrich and 64-bit Windows 7 with the core VFD set.
* [svn-r22117] Fix for HDFFV-7916 (Windows/POSIX correctness issues in the ↵Dana Robinson2012-03-211-107/+164
| | | | | | | | | | | | | core VFD) and HDFFV-7603 (core VFD has trouble with 2GB+ files on Windows). Propagates the SEC2 driver fixes from HDF5 1.8.8 to the core VFD (mainly concerning the backing store). These fixes also conveniently fixed 7603 as well. Tested on: 64-bit Windows 7 jam koala ostrich
* [svn-r21919] Description:Quincey Koziol2012-02-091-31/+20
| | | | | | | | Refactor function name macros and simplify the FUNC_ENTER macros, to clear away the cruft and prepare for further cleanups. Tested on: Mac OSX/64 10.7.3 (amazon) w/debug, production & parallel
* [svn-r21366] JIRA HDFFV-2748 replace use of _WIN32 in source. Created new ↵Allen Byrne2011-09-061-8/+8
| | | | | | defines H5_HAVE_WIN32_API and H5_HAVE_VISUAL_STUDIO defines to use. These can be properly set during configurration. Tested: windows and local linux - reviewed internally
* [svn-r20658] Description:Quincey Koziol2011-04-281-5/+5
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring code contribution from John Biddiscombe into trunk, according to IP assignment #002 (on file). Checkin message from John is: This patch includes the changes necessary to compile a Virtual File Driver outside of the main hdf5 build and still have it link against the hdf5 core and work correctly at run-time. Certain MPI-IO related VFD checks were hard-coded in the hdf5 source and so it was not possible to extend the functionality to new drivers. Removed IS_H5FD_MPI macros and replaced with H5F_HAS_FEATURE calls with new keys, H5FD_FEAT_HAS_MPI and H5FD_FEAT_ALLOCATE_EARLY. Change H5FD cleanup (term_interface) so that file drivers call terminate when their class types are deleted instead of explicitly being called from the finalization code. Move the terminate call out of H5I and put it into the FD class_free call. Remove the now obsolete check of handles after cleaning types at termination time. Tested on: FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode FreeBSD/32 8.2 (loyalty) w/gcc4.6, w/C++ & FORTRAN, in debug mode FreeBSD/64 8.2 (freedom) w/gcc4.6, w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (koala) w/Intel compilers, w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, w/threadsafe, in production mode Linux/PPC 2.6 (heiwa) w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-ia64 2.6 (ember) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in debug mode
| * [svn-r20588] Description:Quincey Koziol2011-04-211-6/+5
| | | | | | | | | | | | | | | | | | Clean up code a bit, move new "terminate" VFD callback to new position in H5FD_class_t struct. Tested on: Mac OS X/32 10.6.7 (amazon) w/debug & production (h5committest not required on this branch)
| * [svn-r20587] Description:Quincey Koziol2011-04-211-0/+1
| | | | | | | | | | | | | | | | Initial commit of John Biddescomb's VFD & MPI tweaks. Tested on: None (yet) (h5committest not required for this branch)
* | [svn-r20646] Description:Quincey Koziol2011-04-261-1/+1
|/ | | | | | | | | | Small improvement to the core VFD's error reporting. Update FreeBSD information Tested on: FreeBSD/32 8.2 (loyalty) (too minor to require h5committest)
* [svn-r18650] Description:Quincey Koziol2010-04-271-1/+1
| | | | | | | | | | | | | | | | | | | Bring back various minor tweaks & cleanups from the revise_chunks branch. Tested on: FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (amani) w/Intel compilers, w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode
* [svn-r18395] Purpose: Fix links.c failureNeil Fortner2010-03-091-18/+107
| | | | | | | | | | | | | | | | Description: The core file driver previously matched files only based on the name used to open them, even when a backing store is used. This caused problems in the failing test when it traversed an external link to itself, and did not recognize that it was the same file. Similar tests in links.c were skipped when the core file driver was used. The failure was previously masked by inappropriate file flushes caused by external link traversal. Added code to the core file driver to keep track of low level file information of the backings store to allow for accurate recognition of duplicate files. Also re-enabled all links.c tests for the core file driver. Tested: Fedora (core and sec2 drivers; no time for full commit test, will monitor daily tests)
* [svn-r18031] Description:Quincey Koziol2009-12-171-1/+1
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bring r18030 from merge_metadata_journaling branch to trunk: Bring "brush clearing" changes (whitespace & style issues, mostly) from metadata_journaling branch to the "merging" branch, to converge the trunk and the metadata_journaling branch. Also, some other minor cleanups along the way. Tested on: FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode Mac OS X/32 10.6.2 (amazon) in debug mode Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode
* | [svn-r17971] Description:Quincey Koziol2009-12-071-38/+67
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allow the core VFD to properly support opening backing store files through symbolic links and have the external links in the file be treated in the same way as for the sec2 driver. Tested on: FreeBSD/32 6.3 (duty) in debug mode FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode Linux/32 2.6 (jam) w/PGI compilers, w/default API=1.8.x, w/C++ & FORTRAN, w/threadsafe, in debug mode Linux/64-amd64 2.6 (smirom) w/Intel compilers, w/default API=1.6.x, w/C++ & FORTRAN, in production mode Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in debug mode Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode Mac OS X/32 10.6.2 (amazon) in debug mode Mac OS X/32 10.6.2 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode
* | [svn-r17414] Description:Quincey Koziol2009-08-241-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Flush the core VFD's buffer before closing the file, also flush the metadata accumulator before reseting it. Write the driver info message out in the superblock flush routine more directly, instead of using wrapper routine, since the wrapper routine won't work when the superblock is being shutdown. Tested on: FreeBSD/32 6.3 (duty) in debug mode, w/check-vfd FreeBSD/64 6.3 (liberty) w/C++ & FORTRAN, in debug mode, w/check-vfd Linux/32 2.6 (kagiso) w/PGI compilers, w/C++ & FORTRAN, w/threadsafe, in debug mode, w/check-vfd Linux/64-amd64 2.6 (smirom) w/Intel compilers w/default API=1.6.x, w/C++ & FORTRAN, in production mode, w/check-vfd Solaris/32 2.10 (linew) w/deprecated symbols disabled, w/C++ & FORTRAN, w/szip filter, in production mode, w/check-vfd Linux/64-ia64 2.6 (cobalt) w/Intel compilers, w/C++ & FORTRAN, in production mode, w/check-vfd Linux/64-ia64 2.4 (tg-login3) w/parallel, w/FORTRAN, in production mode, w/check-vfd Linux/64-amd64 2.6 (abe) w/parallel, w/FORTRAN, in production mode, w/check-vfd Mac OS X/32 10.5.8 (amazon) in debug mode, w/check-vfd Mac OS X/32 10.5.8 (amazon) w/C++ & FORTRAN, w/threadsafe, in production mode, w/check-vfd
* | [svn-r16382] Description:Quincey Koziol2009-01-291-18/+18
| | | | | | | | | | | | | | Re-insert some whitespace formatting that was accidentally removed. Tested on: None - just eyeballed.
* | [svn-r16378] Description:Allen Byrne2009-01-291-23/+25
| | | | | | | | | | | | | | | | | | Changed max macro in earray.c to avoid Windows conflict. Changed if(test) to assert(test) in H5FDcore.c - H5FD_core_open() Tested on: Windows: XP32, XP64, Vista32, Vista64 H5committest.
* | [svn-r16214] Added HDlseek to the H5FD_core_truncate function in H5FDcore.c ↵Raymond Lu2008-12-221-0/+7
| | | | | | | | | | | | | | | | | | to rewind the file pointer to the beginning of the file. Otherwise, the file might be re-extended later on Open VMS. Also updated the return value for the HDlseek to be more appropriate. Tested 1.8 on Open VMS.