Changes for version X03: Modified fopen_wrappers.c to open script files with mode "r" rather than "rb". The change allows files with RMS VAR record format to be processed correctly. Modified header files so time functions (gettimeofday, microtime) and included. Function flock is partially emulated, but it does no good since the fopen function used to get the fd doesn't open the file for shared access. Added HPSS PHP daemon. The server's HPSS support was enhanced to recognize a new mailbox type in http_initialize. The new mailbox type places the temporary mailbox name in a special logical name table (HPSS_SERVICE_TABLE) rather than requiring the application to have GRPNAM or SYSNAM. Changes for X04: Update for PHP 4.0.6. Add symbol defines for several configuration directories: PHP_CONFIG_FILE_PATH, PEAR_INSTALLDIR, PHP_LIBDIR, PHP_DATADIR, PHP_SYSCONFDIR, PHP_LOCALSTATEDIR, PHP_BINDIR Modified realpath() support to use SYS$PARSE to expand input filepath to full VMS file specification, then reformat as Unix file specification. Changes for version X05: Modified [main]php_open_temporary_file.c: - Fix bug in logic to add missing trailing slash to directory. - If directory string contains ':' or ']', treat as a VMS logical name or directory specification. - Force use of mktemp() function rather than mkstemp() since the code the latter attempts an incompatible fdopen() call (mkstemp opens the fd with "w", which is incompatible with "wb"). Fix bugs in memory manager shutdown in zend_alloc.c that caused false memory leaks that lead to hpss_php failure over time. Zend memory functions keep a running total of allocated bytes and this was not being updated correctly. Fix determination of PHP_SELF in cgi_main.c. Modify hpss_php.c to reset bailout point during connection rundown. ----------------------------------------------------------------------------- Summary of source file modifications: [ext.standard]base64.c Added casts to certain function calls to eliminate warnings where original code uses types 'char *' and 'unsigned char *' interchangeably. [ext.standard]basic_functions.c Add '#ifdef's to conditionally compile several declarations that refer to syslog (HAVE_SYSLOG_H) and sendmail (HAVE_SENDMAIL). [ext.standard]credits.c Give Dave Jones credit for the OpenVMS port. [ext.standard]credits_sapi.h Give Dave Jones credit for the OSU sapi. [ext.standard]dl.c Modify code to load shareable images via LIB$FIND_IMAGE_SYMBOL on VMS. [ext.standard]exec.c Fail, with error message, the passthru function on VMS (pipe incompatibilty). Make main read loop in shell_exec() test for success of buffer alloc/realloc rather than unconditionally attempting to use the returned pointer. Make the main read loop use fgets rather than fread for reading from the pipe (bug in DECCRTL, fread won't detect end-of-data). Since this increases the number of times through the read loop (once for each line of output), change buffer allocation to only grow the receiving buffer when less that PIPE_BUF bytes (the read size) are left. [ext.standard]file.c Modify stat function to return dev and rdev as strings rather than numbers and ino as three separate numbers (ino0, ino1, ino2). [ext.standard]filestat.c Make chgrp and chown follow the Windows behaviour, changing the relevant "#ifndef WINDOWS" to "#if !defined(WINDOWS) && !defined(VMS)" Skip groups check in php_stat function. Modify php_stat function to return dev and rdev as strings rather than numbers and ino as three separate numbers (ino0, ino1, ino2). [ext.standard]flock_compat.c Emulate flock() function on VMS. Still under development, may work under VMS 7.3 if you enable default shared opens in the C runtime. [main]fopen_wrappers.c Modify fopen to include "rop=rah" (read-ahead record processing option) DECC extension on VMS. Modify fopen to use mode "r" instead of "rb" on VMS, allowing standard VMS text files (VAR record format) to be correctly read by the C runtime. When "rb" is used, DECCRTL does not insert the implied newline at the end of each record into the data stream, making VAR format file appear to only have 1 line. Modify getcwd call to use DECC extension that forces returned directory string to use Unix syntax (/dev/dir). [ext.standard]fsock.c Modify test used for domain socket support. Testing for existence of AF_UNIX is inadequate since VMS header files define this but don't define sockaddr_un structure. [ext.standard]html.c Added cast to php_escape_html call to eliminate warnings where original code uses types 'char *' and 'unsigned char *' interchangeably. [ext.standard]image.c Added casts to certain function calls to eliminate warnings where original code uses types 'char *' and 'unsigned char *' interchangeably. [main]internal_functions_w32.c Remove calendar and ftp modules as builtin internal functions. [ext.standard]iptc.c Added casts to certain function calls to eliminate warnings where original code uses types 'char *' and 'unsigned char *' interchangeably. [main]main.c Added casts to certain function calls to eliminate warnings where original code uses types 'char *' and 'unsigned char *' interchangeably. [main]php_open_temporary_file.c Fix directory string parsing and force use of mktemp() function. [ext.standard]md5.c Added casts to certain function calls to eliminate warnings where original code uses types 'char *' and 'unsigned char *' interchangeably. [ext.standard]microtime.c Define a timezone struct on VMS since not defined by the header files. [main]network.c Modify the header file references needed for TCP/IP function calls. [ext.standard]output.c Added casts to certain function call to eliminate warning where original code uses types 'int *' and 'unsigned int *' interchangeably. [ext.standard]pageinfo.c Change reference to stat structure member st_ino to st_ino[0] on VMS. [main]php.h Fix include file references to not use explicit relative paths on VMS. Force HAVE_LIBDL to be defined. [main]php_logos.c Added casts to PHPWRITE function call to eliminate warning where original code uses types 'char *' and 'unsigned char *' interchangeably. [ext.session]php_session.h Make macros to shorten external names that exceed 31 characters to be compatible with VMS linker. [main]php_ticks.c Added cast to function call to eliminate warning where DECC compiler does not find a function pointer compatible with 'void *'. [ext.session]session.c Put casts in front of buffer argument in MD5update calls. [tsrm]tsrm_virtual_cwd.c Redirect realpath() calls to VMS-specific function defined in separate module. Change virtual_chdir_file definition on VMS to be compatible with chdir() prototype in system header file (DECC extension allows additional arguments). Don't define virtual_lstat function (same as Windows version). [tsrm]tsrm_virtual_cwd.h Redirect realpath() calls to VMS-specific function defined in separate module. Change virtual_chdir_file definition on VMS to be compatible with chdir() prototype in system header file (DECC extension allows additional arguments). [zend]zend.c Change fopen call to use mode "r" rather than "rb" on VMS, allowing standard VMS text files (VAR record format) to be correctly read by the C runtime. When "rb" is used, DECCRTL does not insert the implied newline at the end of each record into the data stream, making VAR format file appear to only have 1 line. [zend]zend_alloc.c Fix bugs in shutdown_memory_manager function that cause the allocated_memory global to hold the wrong value, resulting in bogus allocation failure for long-running HPSS applications.