ECO NUMBER: VMS722_ACRTL-V0200 PRODUCT: OpenVMS Alpha OPERATING SYSTEM V7.2-2 UPDATE PRODUCT: OpenVMS Alpha OPERATING SYSTEM V7.2-2 Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter 1 KIT NAME VMS722_ACRTL-V0200 2 KITS SUPERSEDED BY THIS KIT VMS722-ACRTL-V0100 3 KIT DEPENDENCIES 3.1 Required remedial kits before installation The following remedial kit(s) must be installed BEFORE installation of this, or any required kit: None. 3.2 Required remedial kits In order to receive all the corrections listed in this kit, the following remedial kits should also be installed: None. 4 KIT DESCRIPTION 4.1 Version(s) of OpenVMS to which this kit may be applied: OpenVMS Alpha V7.2-2 4.2 Files patched or replaced: o [SYSLIB]DECC$SHR.EXE (new image) o [SYSLIB]CRTL.OBJ (new file - used to update STARLET.OBJ) o [SYSLIB]CRTLMSGDEF.OBJ (new file - used to update STARLET.OBJ) 5 PROBLEMS ADDRESSED IN KIT VMS722_ACRTL-V0200 Note: The first several entries list new features in this ECO kit. For more information, see the New Features section of the release notes. Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 2 9 January 2003 o C header files are shipped with this ECO kit. These files will be installed only if needed by your system. o You can now set the default (working) directory for child processes created by vfork/exec*, using the new RTL function decc$set_child_default_dir(). o 64-bit pointer support is added for sendmsg(), recvmsg(), getaddrinfo(), and freeaddrinfo(). o A new feature logical DECC$ALLOW_REMOVE_OPEN_FILES is added to control the behavior of remove() on open files. and freeaddrinfo(). o New C RTL functions are provided with this kit. o New socket routine poll() is provided with this kit. o Undefined symbol GETADDRINFO_COMPAT43 o 64-bit pointers were not supported for some socket routines. o fwrite() wrote inappropriate records to a file. o header was incompatible with local-time function ftw(). o Spawned process did not inherit file positioning for append access mode. o Incomplete support for 64-bit iconv() has been removed. 6 PROBLEMS ADDRESSED IN KIT VMS722_ACRTL-V0100 o Large file support for I/O functions o ACCVIO while cloning FDs to child o GB18030 Chinese character support o Function strftime() V conversion specifier returns incorrect weeks o Threaded applications hang while opening files o Function ecvt() performance (high kernel mode) Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 3 9 January 2003 o Function times() performance issues o Function alarm() issues o fopen() fails in exec mode o File open context ctx=eol ignored o Support EFS charset in UNIX names o Functions stat() and fstat() issues o Function setvbuf() restricts max size to 32767 o Function pclose() doesn't return OpenVMS status o Excessive library lookups for socket routines o Locale printf() incorrect with negative values o Functions remove() and unlink() do not delete open files o HOME and PATH variables converted to lower case o Function stat(), access() fails with file opened for non-shared write o access() returns success for W_OK on readonly device o Various problems with temporary file support o Function ftw() and readdir() do not recognize 000000.DIR o Function rename() unable to rename files without file types o access(path, W_OK) fails w/o delete access Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 4 9 January 2003 o Function getenv() with multithreading o getch() will ACCVIO when receiving a long escape sequence 7 NEW FEATURES IN KIT VMS722_ACRTL-V0100 7.1 Enhanced Support for UNIX Style File Names The Compaq C RTL can accept UNIX style file and directory path names that contain the extended ASCII character set supported by OpenVMS Extended File Specifications (EFS) on ODS-5 devices. NOTE This feature is intended for use by applications ported from UNIX systems and not for native OpenVMS applications. To enable this feature, define the DECC$FILENAME_UNIX_ONLY logical name to ENABLE before program execution: $ DEFINE DECC$FILENAME_UNIX_ONLY ENABLE With this feature enabled, all file and path specifications input to the Compaq C RTL are assumed to be UNIX style and therefore can consist of the full, printable ASCII character set (20-7E hexadecimal), with the following exceptions: * (asterisk) ? (quotation mark) / (forward slash) " (double quotation mark) The Compaq C RTL provides any necessary enclosing quotation marks for special characters when presenting the file specification to the OpenVMS file system. OpenVMS file and path specifications that are output by the Compaq C RTL are converted to UNIX style where appropriate, and any special characters quoted by the OpenVMS file system are unquoted before being returned to the Compaq C RTL caller. In addition, the OpenVMS version-number field is stripped from the file name on output. For example, assume the following UNIX style path name is input: ./abc.d/data.dat.dat The Compaq C RTL converts it to the following before passing it on to the OpenVMS file system: [.abc^.d]data^.dat.dat Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 5 9 January 2003 The caret (^) character is the EFS quote or escape character. (For more information about escape characters and name and type delimiters, see the Guide to OpenVMS File Applications.) When this file name is retrieved, it is output to the Compaq C RTL caller just as it was input, with quoted characters unquoted. Note that under normal Compaq C RTL parsing rules, an OpenVMS version field in a UNIX style input file name is passed directly to the file system. Therefore, the following example accesses version number 3 of the file with name data and type dat : data.dat;3 With the new feature, this file name is passed to the OpenVMS file system as the following (a file with name data and type dat;3 ): data.dat^;3 The OpenVMS version number associated with the file is not returned on output. The scope of this feature applies to allowable characters in both the directory and file-name fields of a UNIX style specification. Enabling this feature does not affect other features of the Compaq C RTL UNIX-to-OpenVMS and OpenVMS-to-UNIX path conversion. If logical-name expansion of the first element in the UNIX specification is enabled, the Compaq C RTL does not quote any special characters that appear in the logical-name equivalence string before presentation to the file system. 7.2 POSIX Root Support Support has been added to provide OpenVMS with a UNIX style root that behaves like a real directory. This allows such actions as the following: % cd / % mkdir /dirname % tar -xvf tarfile.tar /dirname % ls / Previously, the C RTL did not recognize the slash (/) character as a directory name. The normal processing for a file path starting with the slash character was to interpret the first element as a logical name or device name. If this failed, there was special processing for the name /dev/null and names starting with /bin and /tmp : /dev/null NLA0: /bin SYS$SYSTEM: /tmp SYS$SCRATCH: Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 6 9 January 2003 These behaviors are retained for compatibility purposes. In addition, support has been added to the C RTL for the logical name SYS$POSIX_ROOT as an equivalent to the slash character. To enable this feature for use by the C RTL, define SYS$POSIX_ROOT as a concealed logical name. For example: $ DEFINE/TRANSLATION=(CONCEALED,TERMINAL) SYS$POSIX_ROOT - "$1$DKA0:[SYS0.abc.]" To disable this feature, enter the following command: $ DEFINE DECC$DISABLE_POSIX_ROOT {1, ENABLE 0, DISABLE} Enabling SYS$POSIX_ROOT results in the following behavior: If the existing translation of a UNIX path starting with the / character fails and SYS$POSIX_ROOT is defined, the name is interpreted as if it starts with /sys$posix_root . When converting from an OpenVMS to a UNIX style file name, and the OpenVMS name starts with SYS$POSIX_ROOT:, then the SYS$POSIX_ROOT: portion is removed. For example, SYS$POSIX_ROOT:[dirname] becomes /dirname . If the resulting name could be interpreted as a logical name or as one of the special cases listed, the result is /./dirname instead of /dirname . 7.3 32-Bit Group Identifiers The C RTL supports 32-bit user identification (UID) and group identification (GID). 32-bit UID and GID support was added to some versions of the OpenVMS operating system to provide support for POSIX style identifiers. Although current versions of OpenVMS does not support POSIX style IDs, they do support 32-bit UID and GID. When an application is compiled to use 32-bit UID/GID, the UID and GID are derived from the UIC, as in previous versions of the operating system. In some cases, such as with the getgroups function, more information might be returned when the application supports 32-bit GIDs. To compile an application for 32-bit UID or GID support, define the macro __USE_LONG_GID_T. To compile an application for 16-bit UID or GID support, define the macro _DECC_SHORT_GID_T. In addition, although you cannot compile with POSIX style IDs enabled on current versions of OpenVMS, you can run programs that were compiled with POSIX style IDs enabled on OpenVMS systems that do provide that support. Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 7 9 January 2003 8 C RTL FEATURE SWITCHES The C RTL now provides an extensive list of feature switches that can be enabled or disabled using DECC$ logical names. These switches affect a C application's behavior at run time. These features introduce new behaviors and also preserve old behaviors that have been deprecated. These features are generally enabled by setting a logical name to "ENABLE" and disabled by setting to "DISABLE". This works for the newly introduced features. $ DEFINE DECC$feature ENABLE $ DEFINE DECC$feature DISABLE NOTE Older features from earlier releases of the C Run-Time documented that "any equivalence string" would enable the features. While this is correct, Compaq recommends that users instead use "ENABLE" for all features enabled using logical names. This will avoid possible side effects if the feature switch is enhanced to allow both enabling and disabling with the logical name defined. In particular, avoid the following values for any feature documented as accepting "any equivalence string": o "DISABLE" o 0 (zero) o F o N 8.0.1 List of Features This is a complete list of user-controlled feature logical names. Some of these feature logical names may not apply to this ECO kit, if OpenVMS does not support the function described. Most of these feature logicals should be enabled or disabled using ENABLE or DISABLE, but some require specific numeric values. Please see reference section for more details. The feature logicals are listed below by related category: Performance optimizations DECC$ENABLE_GETENV_CACHE DECC$LOCALE_CACHE_SIZE Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 8 9 January 2003 DECC$TZ_CACHE_SIZE Legacy behaviors DECC$V62_RECORD_GENERATION DECC$XPG4_STRPTIME DECC$THREAD_DATA_AST_SAFE DECC$WRITE_SHORT_RECORDS File attributes DECC$DEFAULT_LRL DECC$DEFAULT_UDF_RECORD DECC$FIXED_LENGTH_SEEK_TO_EOF Mailboxes DECC$MAILBOX_CTX_STM Changes for UNIX conformance DECC$STRTOL_ERANGE DECC$VALIDATE_SIGNAL_IN_KILL DECC$SELECT_IGNORES_INVALID_FD General UNIX Enchancements DECC$ARGV_PARSE_STYLE DECC$PIPE_BUFFER_SIZE DECC$STDIO_CTX_EOL DECC$USE_RAB64 Enchancements for UNIX style file names DECC$DISABLE_TO_VMS_LOGNAME_TRANSLATION DECC$EFS_CHARSET DECC$FILENAME_UNIX_NO_VERSION DECC$FILENAME_UNIX_REPORT DECC$READDIR_DROPDOTNOTYPE DECC$RENAME_NO_INHERIT Enhancements for UNIX style file attributes DECC$EFS_FILE_TIMESTAMPS DECC$EXEC_FILEATTR_INHERITANCE DECC$FILE_OWNER_UNIX DECC$FILE_PERMISSION_UNIX DECC$FILE_SHARING UNIX compliance mode DECC$FILENAME_UNIX_ONLY DECC$POSIX_STYLE_UID DECC$USE_JPI$_CREATOR DECC$DETACHED_CHILD_PROCESS New behaviors for POSIX conformance DECC$POSIX_SEEK_STREAM_FILE DECC$UMASK DECC$ALLOW_REMOVE_OPEN_FILES File name handling DECC$READDIR_KEEPDOTDIR DECC$EFS_CASE_SPECIAL Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 9 9 January 2003 DECC$UNIX_PATH_BEFORE_LOGNAME DECC$DISABLE_POSIX_ROOT 8.0.2 Reference List of Features Below is an alphabetical list of all C Run-Time feature logical names. Unless otherwise stated, they are enabled with ENABLE and disabled with DISABLE. DECC$ALLOW_REMOVE_OPEN_FILES The DECC$ALLOW_REMOVE_OPEN_FILES feature logical controls the behavior of remove() on open files. Ordinarily, the operation fails. However, POSIX conformance dictates that the operation succeed. With DECC$ALLOW_REMOVE_OPEN_FILES enabled, this POSIX conformant behavior is achieved. DECC$ARGV_PARSE_STYLE With DECC$ARGV_PARSE_STYLE enabled, case is preserved in command line arguments when the process has been set up for extended DCL parsing using SET PROCESS/PARSE=EXTENDED. This must be defined externally as a logical name or set in a function called using the LIB$INITIALIZE mechanism because it is evaluated before function main() is called. DECC$DEFAULT_LRL DECC$DEFAULT_LRL specifies the default value for the RMS attribute for longest record length. The default value 32767 is the largest record size supported by RMS. Default: 32767 Max: 32767 DECC$DEFAULT_UDF_RECORD With DECC$DEFAULT_UDF_RECORD enabled, file access mode defaults to RECORD instead of STREAM mode for all files except STREAMLF. DECC$DETACHED_CHILD_PROCESS With DECC$DETACHED_CHILD_PROCESS enabled, child processes created using vfork() and exec() are created as detached processes instead of subprocesses. Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 10 9 January 2003 This feature has only limited support. In some cases the console cannot be shared between the parent process and the detached process which can cause exec() to fail. DECC$DISABLE_POSIX_ROOT With DECC$DISABLE_POSIX_ROOT enabled, support for the POSIX root directory defined by SYSPOSIX_ROOT is disabled. With DECC$DISABLE_POSIX_ROOT is not enabled, logical name SYS$POSIX_ROOT is interpreted as the equivalent of the file path "/". If a UNIX path starting with '/' is given and the value after the leading slash cannot be translated as a logical name, SYS$POSIX_ROOT is used as the parent directory for the specified UNIX file path. DECC$DISABLE_TO_VMS_LOGNAME_TRANSLATION With DECC$DISABLE_TO_VMS_LOGNAME_TRANSLATION enabled, the conversion routine decc$to_vms() will only treat the first element of a UNIX style name as a logical name if there is a leading slash '/'. DECC$EFS_CASE_SPECIAL With DECC$EFS_CASE_SPECIAL enabled, case is only preserved for file names containing lowercase. If an element of a file name contains all uppercase letters, it is reported in all lowercase in UNIX style. When enabled, this feature overrides the value of DECC$EFS_CASE_PRESERVE. DECC$EFS_FILE_TIMESTAMPS With DECC$EFS_FILE_TIMESTAMPS enabled, stat() and fstat() report new ODS-5 access time (st_atime), attribute revision time (st_ctime) and modification time (st_mtime) for files on ODS-5 volumes which have the extended file times enabled using SET VOLUME/VOLUME=ACCESS_DATES. If the feature is disabled or the volume is not ODS-5 or the volume does not have support for these additional times enabled, st_ctime continues to be the file creation time and st_atime the same as the st_mtime. Functions utime() and utimes() support these ODS-5 times in the same way as stat(). Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 11 9 January 2003 DECC$ENABLE_GETENV_CACHE The C RTL supplements the list of environment variables in table environ with all logical names and DCL symbols available to the process. By default, whenever getenv() is called for a name not in the environ table, an attempt is made to resolve this as a logical name and if this fails, as a DCL symbol. With DECC$ENABLE_GETENV_CACHE enabled, once a logical name or DCL name has been successfully translated, its value is stored in a cache. When the same name is requested in a future call to getenv(), the value is returned from the cache instead of re-evaluating the logical name or DCL symbol. DECC$EFS_CHARSET With DECC$EFS_CHARSET enabled, UNIX names may contain ODS-5 extended characters. Support includes multiple dots and all ASCII characters in range 0-255 except: - - / - " - * - ? Unless DECC$FILENAME_UNIX_ONLY enabled, some characters may be interpreted as VMS characters depending on context. These are - : - [ - < - ^ - ; DECC$EFS_CHARSET is required because Many existing applications make assumptions about file names based on the presence of certain characters. This is necessary because non-standard and undocumented C RTL extensions do not work when EFS extended character set support is enabled. the following non-standard and undocumented C RTL extensions do not work when EFS extended character set support is enabled. - "$HOME" interpreted as the user's login directory With DECC$EFS_CHARSET enabled, "$HOME" is treated literally and may be in a VMS or UNIX style file Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 12 9 January 2003 name. - "~name" interpreted as the login directory for user "name" With DECC$EFS_CHARSET enabled, "~name" is treated literally and may be in a VMS or UNIX style file name..le Wild card regular expressions in the form "[a-z]" With DECC$EFS_CHARSET enabled, square brackets are acceptable in VMS and UNIX style file names. For instance, in a function such as open(), "abc[a-z]ef.txt" is interpreted as a UNIX style name equivalent to the VMS style name "abc^[a-z^]ef.txt" and "[a-z]bc" is interpreted as a VMS style name equivalent to the UNIX style name "/sys$disk/a-z/bc". When support for EFS character set is enabled, the following encoding for EFS extended characters is supported when converting from a VMS style file name to a UNIX style file name. - All ODS-2 compatible names - All encoding for 8-bit characters, either as single byte or using two-digit hexadecimal form "^ab". In a UNIX path these are always represented as a single byte. - Encoding for DEL (^7F) - The following characters when preceded by caret: "Space !,_&'()+@{},';#[]%^=$-~." - The following characters when not preceded by caret: "$-~." The implementation supports conversion from VMS to UNIX needed for readdir(), ftw(), getname(), fgetname(), and getcwd(), etc. DECC$EXEC_FILEATTR_INHERITANCE The DECC$EXEC_FILEATTR_INHERITANCE feature logical affects child processes that are C programs: With DECC$EXEC_FILEATTR_INHERITANCE defined to 1, a child process inherits file positioning for all file access modes except append. With DECC$EXEC_FILEATTR_INHERITANCE defined to 2, a child Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 13 9 January 2003 process inherits file positioning for all file access modes including append. With DECC$EXEC_FILEATTR_INHERITANCE disabled, a child process does not inherit the file position for any access modes. DECC$FILENAME_UNIX_ONLY With DECC$FILENAME_UNIX_ONLY enabled, file names are never interpreted as VMS style names. This prevents any interpretation of ':', '[' and '^', as VMS special characters. DECC$FILENAME_UNIX_NO_VERSION With DECC$FILENAME_UNIX_NO_VERSION enabled, VMS generation numbers are not supported in UNIX style file names. With this logical name disabled, in UNIX style names, generation numbers are reported preceded by a dot. DECC$FILENAME_UNIX_REPORT With DECC$FILENAME_UNIX_REPORT enabled, all file names are reported in UNIX style unless the caller specifically selects VMS-style. This applies to getpwnam(), getpwuid(), argv[0], getname(), and fgetname(). With this logical name disabled, unless specified in the function call, file names are reported in VMS style. DECC$FILE_PERMISSION_UNIX With DECC$FILE_PERMISSION_UNIX enabled, the file permissions for new files and directories are set according to the file creation mode and umask(). This includes mode 0777. When an earlier version of the file exists the file permissions for the new file are inherited from this. This mode sets DELETE permission for a new directory when WRITE permission is enabled. With this logical name disabled, modes zero and 0777 indicate using RMS default protection or protection from the previous version of the file. Permissions for new directories also follow VMS rules, including disabling DELETE permissions. Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 14 9 January 2003 DECC$FILE_OWNER_UNIX With DECC$FILE_OWNER_UNIX enabled, the owner for a new file or directory is always based on the effective UIC. When an earlier version of the file exists, the owner for the new file is inherited from this. With this logical name disabled, the owner for a new file is set following VMS rules and may inherit the owner from the parent directory. DECC$FILE_SHARING With DECC$FILE_SHARING enabled, all files are opened with the full sharing enabled (FAB$M_DEL | FAB$M_GET | FAB$M_PUT | FAB$M_UPD). This is set as a logical OR with any sharing mode specified by the caller. DECC$FIXED_LENGTH_SEEK_TO_EOF With DECC$FIXED_LENGTH_SEEK_TO_EOF enabled, lseek(), fseeko() and fseek() with 'direction' paremeter set to SEEK_END will position relative to the last byte in the file for files with fixed length records. With this logical name disabled, lseek(), fseek() and fseeko(), when called with SEEK_EOF on files with fixed length records, will position relative to the end of the last record in the file. DECC$LOCALE_CACHE_SIZE DECC$LOCALE_CACHE_SIZE defines how much memory in bytes should be allocated for caching locale data. The default value is 0, which disables the locale cache. Max: 2147483647 DECC$MAILBOX_CTX_STM By default, open() on a local mailbox that is not a pipe treats mailbox records as having record attribute FAB$M_CR. With DECC$MAILBOX_CTX_STM enabled, the record attribute FAB$M_CR is not set. DECC$PIPE_BUFFER_SIZE The system default buffer size of 512 bytes for pipe write operations can limit performance and generate extra line feeds when handling messages longer than 512 bytes. Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 15 9 January 2003 DECC$PIPE_BUFFER_SIZE allows a larger default buffer size to be used for pipe functions such as pipe() and popen(). Valid values for the buffer size in bytes are in the range 512 to 65024. If DECC$PIPE_BUFFER_SIZE is not specified, the default buffer size 512 is used. Default: 512 Min: 512 Max: 65536 DECC$POSIX_SEEK_STREAM_FILE With DECC$POSIX_SEEK_STREAM_FILE enabled, positioning beyond end-of-file on STREAM files will not write to the file until the next write. If the write is beyond the current end-of-file, this positions beyond the old end-of-file and the start position for the write are filled with zeroes. With this logical name disabled, positioning beyond end-of-file will immediately write zeroes to the file from the current end-of-file to the new position. DECC$POSIX_STYLE_UID With DECC$POSIX_STYLE_UID enabled, UIDs and 32-bit GIDs are interpreted as POSIX style identifiers. With this logical name disabled, UIDs and GIDs are derived from the process UIC. This feature is only available on VMS systems providing POSIX style UID and GID support. DECC$READDIR_DROPDOTNOTYPE With DECC$READDIR_DROPDOTNOTYPE enabled, readdir() when reporting files in UNIX style, only reports the trailing dot for files with no file type, when the file name contains a dot. With this logical name disabled, all files without a file type are reported with a trailing dot. DECC$READDIR_KEEPDOTDIR The default behavior when reporting files in UNIX style from readdir() is to report directories without a file type. With DECC$READDIR_KEEPDOTDIR enabled, directories are Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 16 9 January 2003 reported in UNIX style with the file type ".DIR". DECC$RENAME_NO_INHERIT With DECC$RENAME_NO_INHERIT enabled, the new name for the file does not inherit anything from the old name. The new name must be specified completely. With this logical name disabled, the new file name inherits missing components of the file name such as the device, directory, file type, and version from the old file in the same way as the DCL rename command. DECC$SELECT_IGNORES_INVALID_FD With DECC$SELECT_IGNORES_INVALID_FD enabled, select() will fail with errno set to EBADF when an invalid file descriptor is specified in one of the descriptor sets. With this logical name disabled, select() ignores invalid file descriptors. DECC$STDIO_CTX_EOL With DECC$STDIO_CTX_EOL enabled, writing to stdout and stderr for stream access is differed until a terminator is seen or the buffer is full. With this logical name disabled, each fwrite() generates a separate write, which for mailbox and record files generates a separate record. DECC$STRTOL_ERANGE With DECC$STRTOL_ERANGE enabled, strtol() behavior for error ERANGE is corrected to consume all remaining digits in the string. With this logical name disabled, the legacy behavior of leaving the pointer at the failing digit is preserved. DECC$THREAD_DATA_AST_SAFE The C RTL has a mode that allocates storage for thread-specific data allocated by threads at non-AST level separate for data allocated for ASTs. In this mode, each access to thread-specific data requires a call to LIB$AST_IN_PROG(), which can add significant overhead when accessing thread-specific data in the C RTL. The alternate mode protects thread specific-data only if Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 17 9 January 2003 another function has it locked. This protects data that is in use within the C RTL but does not protect the caller from an AST changing the data pointed to. This latter mode is now the C RTL default for functions strtok(), ecvt() and fcvt(). The legacy AST safe mode can be selected by enabling DECC$THREAD_DATA_AST_SAFE. DECC$TZ_CACHE_SIZE DECC$TZ_CACHE_SIZE specifies the number of timezones that can be held in memory. Default: 2 Max: 2147483647 DECC$UMASK DECC$UMASK specifies the default value for the permission mask umask(). By default, a parent C program sets the umask() from the RMS default permissions for the process. A child process inherits the parent's value for umask(). To enter the value as an octal value, add the leading zero. Otherwise it will be translated as a decimal value. For example, $ DEFINE DECC$UMASK 026 Max: 0777 DECC$UNIX_PATH_BEFORE_LOGNAME With DECC$UNIX_PATH_BEFORE_LOGNAME enabled, when translating a UNIX file name not starting with a leading slash (/), an attempt is made to match this to a file or directory in the current directory. If this is not found and the name is valid as a logical name in a VMS file name, an attempt is made to translate the logical name, and if found, is used as part of the resulting file name. When enabled, DECC$UNIX_PATH_BEFORE_LOGNAME overrides the setting for DECC$DISABLE_TO_VMS_LOGNAME_TRANSLATION. DECC$USE_JPI$_CREATOR When enabled, DECC$USE_JPI$_CREATOR determines the parent process ID in getppid() by calling $GETJPI using item JPI$_CREATOR instead of JPI$_OWNER. This feature is only available on systems supporting POSIX style session identifiers. Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 18 9 January 2003 DECC$USE_RAB64 With DECC$USE_RAB64 enabled, open functions allocate a RAB64 structure instead of the traditional RAB structure. This provides latent support for file buffers in 64-bit memory. DECC$VALIDATE_SIGNAL_IN_KILL With DECC$VALIDATE_SIGNAL_IN_KILL enabled, a signal value in the range but not supported by C RTL for OpenVMS will generate an error with errno set to EINVAL, which makes the * behavior the same as for raise(). With this logical name disabled, validation of signals is restricted to checking the signal value is in the range 0 to _SIG_MAX. If sys$sigprc() fails, errno will be set based on sys$sigprc() exit status. DECC$V62_RECORD_GENERATION OpenVMS 6.2 and 7.0 (and later) can output record files using different rules. With DECC$V62_RECORD_GENERATION enabled, the output mechanism follows the rules used on OpenVMS V6.2. DECC$WRITE_SHORT_RECORDS The DECC$WRITE_SHORT_RECORDS feature logical supports a previous fix to fwrite() (to accommodate short-sized records), while retaining the legacy way of writing records to a fixed-length file as the default behavior: With DECC$WRITE_SHORT_RECORDS enabled, short-sized records are padded with zeros to align records on record boundaries. With this logical name disabled, the legacy behavior of writing records is implemented. This is the recommended and default behavior. DECC$XPG4_STRPTIME XPG5 support for strptime() introduces pivoting year support so that years in the range 0-68 are in the 21st century, and years in the range 69-99 are in the 20th century. With DECC$XPG4_STRPTIME enabled, XPG5 support for the pivoting year is disabled and all years in the range 0-99 Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 19 9 January 2003 in the current century. 9 PROBLEMS ADDRESSED IN KIT VMS722_ACRTL-V0100 o Large file support for I/O functions o ACCVIO while cloning FDs to child o GB18030 Chinese character support o Function strftime() V conversion specifier returns incorrect weeks o Threaded applications hang while opening files o Function ecvt() performance (high kernel mode) o Function times() performance issues o Function alarm() issues o fopen() fails in exec mode o File open context ctx=eol ignored o Support EFS charset in UNIX names o Functions stat() and fstat() issues o Function setvbuf() restricts max size to 32767 o Function pclose() doesn't return OpenVMS status o Excessive library lookups for socket routines o Locale printf() incorrect with negative values Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 20 9 January 2003 o Functions remove() and unlink() do not delete open files o HOME and PATH variables converted to lower case o Function stat(), access() fails with file opened for non-shared write o access() returns success for W_OK on readonly device o Various problems with temporary file support o Function ftw() and readdir() do not recognize 000000.DIR o Function rename() unable to rename files without file types o access(path, W_OK) fails w/o delete access o Function getenv() with multithreading o getch() will ACCVIO when receiving a long escape sequence 10 KIT INSTALLATION RATING The following kit installation rating, based upon current CLD information, is provided to serve as a guide to which customers should apply this remedial kit. (Reference attached Disclaimer of Warranty and Limitation of Liability Statement) INSTALLATION RATING: INSTALL_3 : To be installed by customers experiencing the problems corrected. 11 INSTALLATION INSTRUCTIONS Install this kit with the POLYCENTER Software Installation Utility by logging into the SYSTEM account, and typing the following at the DCL prompt: $ PRODUCT INSTALL VMS722_ACRTL /SOURCE= The kit location may be a tape drive, CD, or a disk directory that Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 21 9 January 2003 contains the kit. If /SOURCE is not specified, the utility searches in the location defined by the logical name PCSI$SOURCE. If PCSI$SOURCE is not defined, and the /SOURCE qualifier is not specified, the POLYCENTER Software Installation utility searches the current default directory. Because the images in this kit will not take effect until the system is rebooted, you must reboot the system after installing this kit. If you have other nodes in your OpenVMS cluster, they must also be rebooted in order to make use of the new image(s). If it is not possible or convenient to reboot the entire cluster at this time, a rolling re-boot may be performed. 11.1 Special Installation Instructions: 11.1.1 %INSTALL-E-NODELSHRADR Error Message During installation you may see the following message: %INSTALL-E-NODELSHRADR, unable to delete image with shareable address data -INSTALL-I-PLSREBOOT, please reboot to install a new version of this image This is not a cause for concern. It simply means that DECC$SHR.EXE was installed as a resident image, which is the standard configuration for OpenVMS Alpha systems. The new image will not take effect until the system is rebooted. 11.1.2 Scripting of Answers to Installation Questions During installation, this kit will ask and require user response to several questions. If you wish to automate the installation of this kit and avoid having to provide responses to these questions, you must create a DCL command procedure that includes the following definitions and commands: - $ DEFINE/SYS NO_ASK$BACKUP TRUE - $ DEFINE/SYS NO_ASK$REBOOT TRUE - Add the following qualifiers to the PRODUCT INSTALL command and add that command to the DCL procedure. /PROD=DEC/BASE=AXPVMS/VER=V2.0 - De-assign the logicals assigned For example, a sample command file to install the Compaq C Runtime for OpenVMS Alpha V7.2-2 ECO Cover Letter Page 22 9 January 2003 VMS722_ACRTL-V0200 kit would be: $ $ DEFINE/SYS NO_ASK$BACKUP TRUE $ DEFINE/SYS NO_ASK$REBOOT TRUE $! $ PROD INSTALL VMS722_ACRTL/PROD=DEC/BASE=AXPVMS/VER=V2.0 $! $ DEASSIGN/SYS NO_ASK$BACKUP $ DEASSIGN/SYS NO_ASK$REBOOT $! $ exit