Australia - Updated: 24-SEP-2003
hp.com home products and services support and drivers solutions how to buy
» contact hp
hp.com home hp OpenVMS ECOs

IMPORTANT NOTICE

The online distribution of OpenVMS and related product patches is being migrated to the HP ITRC (Information Technology Resource Center) patch distribution site. The new ITRC patch server will allow OpenVMS customers to take advantage of many enhanced features for patch searching and distribution.

Beginning August 1, 2003, OpenVMS and related Layered Product, publicly available patches will be available from the HP ITRC web site at

http://itrc.hp.com/service/patch/mainPage.do

The same patches will still be available from the existing patch server in Colorado Springs (http://www.support.compaq.com/patches/) through the end of October 2003, to give customers sufficient time to update their bookmarks and make the transition to the HP ITRC web site.

ECO kits will also be available by raw FTP from (ftp://ftp.itrc.hp.com/).

PLEASE UPDATE YOUR BOOKMARKS AND REGISTER ON THE NEW SITE NOW

Note: if you're having trouble connecting to the ITRC site, please delete any cookies for "itrc.hp.com" from your browser and try again. Report any difficulties with or suggestions to MrVMS

» Sydney CSC home page

Navigation
» ECOinfo main index
» Search ECOs
» Search FTP site
» Browse FTP site

ECO Indexes
» Chronological Index
» Indexed by Version
» Indexed by Rating
» Alpha Indexed by Name
» VAX Indexed by Name
» On Hold List

Associated Links
» OpenVMS Home Page
» OpenVMS News
» DIA/WIS Web Service

Feedback
» mail to CSC
.
Sydney Customer Support Centre OpenVMS ECO information
    Updated: 24-SEP-2003 (Use your browsers' Reload button to ensure you're viewing the most recent version)

VMS721_ACRTL-V0400 Alpha V7.2-1 Compaq C RTL ECO Summary

To obtain this kit please call the Customer Support Centre or use the FTP site

Search for this ECO kit and dependencies
Search the Compaq FTP web site this kit (exact match)
Search the Compaq FTP web site this or related ECOs

    
      
    
    Copyright (c) Compaq Computer Corporation 2002.  All rights reserved.
    
    Modification Date:  23-APR-2002
    Modification Date:  Not Applicable
    Modification Type:  NEW KIT
    
    OP/SYS:     OpenVMS Alpha
    
    COMPONENT:  Compaq C RTL
    
    SOURCE:     Compaq Computer Corporation
    
    ECO INFORMATION:
    
         ECO Kit Name:  VMS721_ACRTL-V0400
                        DEC-AXPVMS-VMS721_ACRTL-V0400--4.PCSI
         ECO Kits Superseded by This ECO Kit:  None
         ECO Kit Approximate Size:  14,592 Blocks
         Kit Applies To:  OpenVMS Alpha V7.2-1
         System/Cluster Reboot Necessary:  Yes
         Rolling Re-boot Supported:  Yes
         Installation Rating:  INSTALL_3
                               3 - To be installed on all systems running
                                   the listed versions of OpenVMS which
                                   are experiencing the problems described.
    
         Kit Dependencies:
    
           The following remedial kit(s), or later, must be installed BEFORE
           installation of this, or any required  kit:
    
             VMS721_UPDATE-V0300
    
           In order to receive all the corrections listed in this
           kit, the following remedial kits, or later, should also be installed:
    
             None
    
    
    ECO KIT SUMMARY:
    
    An ECO kit exists for the Compaq C Run-time Library on OpenVMS Alpha
    V7.2-1.  This kit addresses the following problems:
    
    PROBLEMS ADDRESSED IN KIT VMS721_ACRTL-V0400:
    
      o  In previous releases of C RTL, all file positions were
         calculated using 32-bit arithmetic.  This restricted certain
         file operations to file sizes less than 2GB.
    
         This restriction has now been removed.  File operations using
         C RTL I/O may now be performed on file sizes up to 2
         terabytes.
    
         By default, applications may only use offsets expressed in 32
         bits.  The function fgetpos() now returns the correct file
         offset when the file position is beyond 2GB.
    
         Developers can also program their application to express file
         sizes and positions in 64-bits.
    
         The new 64-bit interfaces can be selected at compile time by
         defining the _LARGEFILE feature macro:
    
             $ CC /DEFINE=_LARGEFILE
    
         When specified, a 64-bit integer is used to express the
         integral type off_t.
    
         Support has been added for compiling applications to use file
         sizes and offsets that are 2 gigabytes or larger.  This is
         accomplished by allowing file offsets of 64-bit integers.  Two
         new functions have been added:
    
            -  fseeko
    
            -  ftello
    
         These are identical to fseek and ftell , but they accept or
         return values of type off_t , which allows for a 64-bit
         variant of off_t to be used.
    
         Modifications to accommodate a 64-bit file offset have been
         made to the following existing C RTL functions:
    
            -  fstat
    
            -  ftruncate
    
            -  ftw
    
            -  lseek
    
            -  mmap
    
            -  stat
    
            -  truncate
    
    
         Note that ECO kits released in August 2000 and later for both
         VAX and Alpha had a problem with stream file larger than 2GB.
         Attempts to position at the beginning of file using rewind(),
         lseek() or fseek() may fail and leave the file position at
         end-of-file.  In V7.2-1, this can cause an ACCVIO.  This is
         also fixed.
    
                     CRTL_INTERNAL 2875
                     DECC 3396
    
      o  Support for the Chinese GB18030 character set was added to the
         C Run-Time for the VMSI18N Internationalization kit which also
         supports GB18030.
    
         This is one of two kits required for GB18030 support, the
         other is ALPVMSI18N01_073 on OpenVMS Alpha V7.2-1.
    
         This C Run-Time kit must be installed before the VMSI18N kit.
    
    
    
     o     -  The C RTL wrongly allowed memory to be allocated that is
              already in use and could cause memory corruption.
    
              Memory management for the mapping and setlocale functions
              has been separated.
    
           -  It was possible for mmap() to allocate memory that is in
              use by malloc().  The standard does not permit this for
              MAP_VARIABLE.
    
           -  Supports unmapping of regions not corresponding to a a
              previous mmap() requests.  This allows unmapping of part
              of a region and unmapping multiple regions in a single
              mmap() request.
    
    
    
    
      o  The function strftime() V conversion specifier, did not return
         the correct number of weeks in the year for some boundary
         dates at the end of December or the beginning of January.
    
           o  Function strftime() reported either week 52 or 53 for last
              week of December.  It should report "1" for December dates
              which are in the same week as January 1st of the next
              year, when the week that contains Jan 1 has four or more
              days in the next year.
    
           o  Function strftime() always reported week 53 when early
              January dates were not in week 1, even if the last week in
              December was actually week 52.  They should be reported as
              week 52.
    
    
      o  Threaded C applications can hang, when doing operations which
         result in file I/O.
    
         The frequency of the hang varies with the timing of statements
         in the user's program.  Changing the program can eliminate the
         hang, especially adding extra I/O function calls.
    
    
      o  Function ecvt() (convert to string) had performance problems
         due to its use of thread-specific data.  The function called
         LIB$AST_IN_PROG() protects the thread-specific data against
         corruption by an interrupting AST.  LIB$AST_IN_PROG()
         introduces a high overhead resulting in poor performance.
    
         Function ecvt() was not intended to be AST-safe.  The handling
         of thread-specific data was revised in C RTL for OpenVMS
         V7.1-1.  This introduced the test for LIB$AST_IN_PROG() and
         the resulting overhead.
    
         The default is now thread-safe but not AST-safe.  This greatly
         improves performance.
    
         The AST-safe mode can be restored by enabling the feature
         DECC$THREAD_DATA_AST_SAFE:
    
           $ DEFINE DECC$THREAD_DATA_AST_SAFE ENABLE
    
    
      o  A C application can become noticeably slower after adding
         calls to C Run-Time function times() to get performance data.
    
         The times() function used an asynchronous system call $GETJPI
         which includes significant overhead.
    
         Function times() has been changed to take advantage of changes
         in OpenVMS which now make the call synchronous which
         significantly reduces overhead.
    
    
      o  Function alarm() did not correctly recognize an unexpired
         timer and did not always return the correct time remaining.
    
         Function alarm() supports a single timer.  When another
         request to alarm() is issued, any pending request should be
         canceled, a new alarm scheduled and the time remaining on the
         original timer returned.
    
         Function alarm() was changed to:
    
           o  Use static variable for storing scheduled alarm.
    
           o  If the unexpired time is less than zero then report zero.
    
           o  If the unexpired time is greater than zero then return a
              minimum of 1.
    
    
      o  When called from a higher access mode, function fopen() can
         fail with a Bad Address error.
    
    
      o  Child processes did not inherit file open context "ctx=eol"
         when specified in the parent process.
    
         The child process inherits the file open contexts of the
         parent.  It does this by interpreting the context and
         generating an open request with the reconstituted optional
         arguments.  The algorithm for building the open request was
         not updated accordingly, and so this option was ignored.
    
         This has been fixed.
    
    
      o  C programs cannot create files with special characters such as
         '#' in UNIX mode.
    
         The CRTL requires a new feature logical DECC$EFS_CHARSET to be
         defined with the value ENABLE to use EFS extended characters.
         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 existing feature logical DECC$FILENAME_UNIX_ONLY specifies
         filename interpretation.  Two new feature logical have been
         created to enable some of these features independent of
         whether OpenVMS names are accepted.
    
    
           *  DECC$FILENAME_UNIX_ONLY - Always interpret names as UNIX
              style.
    
              Never interpret a name as a OpenVMS format name.  This is
              the primary behavior when DECC$FILENAME_UNIX_ONLY is set
              to ENABLE.
    
           *  DECC$FILENAME_UNIX_NO_VERSION - Ignore OpenVMS generation
              numbers and never treat the last element of a UNIX name as
              a generation number.
    
              This behavior can now be selected independently by
              enabling feature logical DECC$FILENAME_UNIX_NO_VERSION.
    
           *  When not otherwise specified, always report file names in
              UNIX style.
    
              This behavior can now be selected independently by
              enabling feature logical DECC$FILENAME_UNIX_REPORT.
    
         The implementation supports conversion from OpenVMS to UNIX
         needed for readdir(), ftw(), getname(), fgetname(), and
         getcwd(), etc.
    
    
      o  Function fstat() is not reporting permissions for files of
         type S_IFCHR and reports that owner is owner of current
         process.
    
         Function fstat() leaves the XABITM block for
         XAB$_UCHAR_DIRECTORY linked to the FAB if $DISPLAY fails.
    
         This also affects stat().
    
    
      o  Function setvbuf() restricted maximun buffer size for stream
         files to 32767 instead of 65535.
    
         When setvbuf() is used on a file not opened by RMS, such as a
         socket, the application may ACCVIO.
    
    
      o  Applications testing the return status of pclose() in OpenVMS
         mode cannot detect warnings.
    
         To check the OpenVMS status, compile with the _VMS_WAIT macro
         defined.  This will enable OpenVMS Warning, Failure and
         Success conditions.
    
            $ cc/define=_VMS_WAIT <other command line options>
    
         This is similar to function waitpid(), where _VMS_WAIT is
         documented.
    
    
      o  C programs calling sockets were slow because of how the CRTL
         was resolving entries for socket functions in TCP/IP shared
         libraries.
    
    
      o  Extraneous thousands separator displayed for negative values
         when using locale support with printf().
    
         For example, "-,999,999.00" instead of "-999,999.00".
    
    
      o  Functions remove() and unlink() cannot delete files that are
         open.  This is expected to work, and has been fixed.
    
    
      o  The C RTL was unconditionally converting the values for PATH
         and HOME to lowercase.
    
         C RTL preserves case in command line arguments when
         DECC$ARGV_PARSE_STYLE is enabled and "SET
         PROC/PARSE_STYLE=EXTENDED" is in effect.
    
         It is appropriate that when command line arguments have case
         preserved that the environment variables HOME and PATH be
         treated likewise.
    
    
      o  This was fixed.
    
    
      o  Function access() is not testing whether the device is
         software write-locked when a user requests write access.
    
         If device is write-locked, errno is set to EROFS and failure
         is now returned.
    
    
      o   -  tempnam() is required by the standard to offer at least
             10,000 unique names.  CRTL currently allows 156.
    
          -  access() is called to determine if a file to be created
             exists.  For tempnam() the name is always in
             OpenVMS-style.  When OpenVMS style names are disabled,
             access() will always fail indicating that there is no
             matching file.
    
          -  tmpnam() reports the new name in a static buffer, instead
             of a thread-specific buffer.
    
          -  When tempnam() is called repeatedly, no attempt is made to
             remember the last generated name.  If a file is created
             for each call, the program will get slower as it tests for
             the existence for each created file.
    
    
      o  If the top level directory on a device contains file names
         which collate before 000000.DIR, ftw() and readdir do not
         detect that 000000.DIR is a special directory and will
         recursively search it.
    
         000000.DIR is now recognized as the top level directory and
         treated appropriately.
    
    
      o  Trying to rename() file xx.yy to zz gets filename zz.yy.
    
         Trying to rename() file xx.yy to .zz gets filename xx.zz.
    
         This problem has been fixed, but requires a C RTL feature
         logical set.  The user will get zz or .zz, as they specified.
    
         For compatibility with existing programs the new behavior must
         be enabled using a feature logical name:
    
             $ DEFINE DECC$RENAME_NO_INHERIT ENABLE
    
         If DECC$RENAME_NO_INHERIT is ENABLED, the rename function
         tries to emulate UNIX.
    
           -  There is some validation of old and new names to determine
              if they are directories and ensure that a directory name
              will be valid after the rename.
    
           -  The effective new name does not inherit any elements from
              the old name.
    
           -  rename is performed using RMS function SYS$RENAME.
    
         This mode is designed for UNIX style names.  Validation is
         less complete for OpenVMS style names.
    
         If feature DECC$RENAME_NO_INHERIT is DISABLED, the rename
         function follows OpenVMS renaming policy.  Apart from
         converting UNIX names to OpenVMS format, in this mode the
         underlying LIBRTL function LIB$RENAME_FILE performs most of
         the validation.
    
    
      o  A call to function "access(path, W_OK)" will fail if the
         file/directory does not have delete access enabled.
    
         Write access to a directory is commonly tested to see if a
         file can be created in the directory.  Directories on OpenVMS
         are not typically created with delete access.  Change access()
         to allow access with write access.
    
    
      o  Function getenv() call could corrupt the stack and cause an
         ACCVIO in a multi-threading application.  This has been fixed.
    
    
      o  Function getch() will ACCVIO for termination sequences longer
         than 8 bytes.  This has been fixed.
    
    
    PROBLEMS ADDRESSED IN KIT VMS721_ACRTL-V0300:
    
      o  After installation of previous CRTL ECO kits, user sees:
    
            %LINK-I-DATMISMCH, creation date of <date> <time> in shareable
            image SYS$COMMON:[SYSLIB]DECC$SHR.EXE;1
            differs from date of <date> <time> in shareable image library
            SYS$COMMON:[SYSLIB]IMAGELIB.OLB
    
         Previous ECO kits did not correctly  replace  DECC$SHR.EXE  in
         the system IMAGELIB.OLB, which resulted in this message.
    
         This change is Alpha only.
                       DECC 3262
    
      o  The linker reported multiple definitions when linking programs
         referencing the following symbols.
    
         This was because C$ERRNO was not inserted in  STARLET.OLB  for
         Selective search.
    
               o  C$_SIG0
               o  C$_SIGN
               o  C$_SIGPIPE
               o  C$_SIGCHLD
               o  C$_HOST_NOT_FOUND
               o  C$_TRY_AGAIN
               o  C$_NO_RECOVERY
               o  C$_NO_DATA
               o  C$_NO_ADDRESS
               o  C$_NO_TCP
               o  C$_NOSYSSHR
               o  C$_EXIT1
               o  C$_EXIT255
               o  C$_ILLSYSTDF
               o  C$_QSORT2BIG
    
         This was a problem with previous CRTL ECO kits.
    
         This change is Alpha only.
    
      o  Function mktime()'s algorithm  locked  thread  specific  data,
         which  didn't  need  to  be  done.   This  change  uses  stack
         allocated data, and improves performance.
                       CRTL_INTERNAL 2684
    
      o  Function open() had unnecessary calls  to  SYS$GETJPI.   These
         were removed.
    
      o  Several  problems  in  function  mmap()  and   munmap()   were
         addressed.
    
           -  Calling function mmap() could result in memory corruption,
              when specifying specific addresses in parameter addr.
    
              Under complex  conditions  the  CRTL  sometimes  allocated
              internal  memory  needed  by  the  CRTL for mmap() related
              routines in the address space mapped, which  could  result
              in memory corruption.
    
              This change is Alpha only.
    
           -  Function mmap(), with parameter addr set to 0, now returns
              the  first available chunk of memory from the freelist (if
              any).  It previously returned a "best fit" chunk from  the
              freelist.
    
              This change is Alpha only.
    
           -  Function munmap()  would  sometimes  fail  when  releasing
              memory  allocated  with  MAP_ANON.   This  is  because  it
              wrongly tried to deassign a  file  channel  that  was  not
              associated with the memory range.
    
           -  Function mmap() was incorrectly specifying  global  memory
              when MAP_ANON is specified.
    
              Change will only do this with flag MAP_SHARED specified.
                       CRTL_INTERNAL 2760
                       CRTL_INTERNAL 2747
    
      o  Function  gettimeofday()  now  sets   errno   and   vaxc$errno
         appropriately  if  UTC time functions fail because of a system
         service failure.
                       CRTL_INTERNAL 2730
    
      o  In UNIX mode, getcwd() returns uppercase for the device.
    
         This problem was introduced in  CRTL  kits  VMS721_ACRTL-V0200
         and VMS721H1_ACRTL-V0100.
    
         Case  preservation  in   files   names   was   introduced   in
         VMS721_ACRTL-V0200.   This  only  applies  to  files  saved or
         reported from ODS-5 devices.  The case of the logical name  or
         device name was preserved using this same rule.
                       PTR 117-1-15638
    
    Problems Addressed in VMS721_ACRTL-V0200:
    
      o  The Compaq C RTL functions which make calls to RMS have been
         modified to better support ODS-5 disks.  This is an extensive
         set of changes throughout the RTL to support case preservation,
         long file names, and non-standard file name characters.  The
         default behavior of the RTL has not changed.
    
         The Compaq C RTL supports case preservation in file names on
         ODS level 5 disks.  This applies when creating or reporting
         file names.  By default, this feature is disabled.  To enable
         this feature define the logical name DECC$EFS_CASE_PRESERVE to
         "ENABLE".  If file names are all in upper case, define
         DECC$EFS_CASE_SPECIAL to "ENABLE" to convert the names into
         lower case when reporting the name in UNIX style.  If file
         names are not all in upper case, then the case is preserved.
    
         Most C RTL functions now accept long OpenVMS-style file names
         as arguments.  For OpenVMS Alpha Version 7.2, some basic
         Compaq C RTL I/O functions (creat, stat, and the functions
         from the open family of functions) were enhanced to accept
         long OpenVMS-style file names for an ODS-5 device.
    
         In this ECO kit, all other Compaq C RTL functions, except
         chdir and the functions from the exec family of functions,
         were also enhanced to accept long OpenVMS-style file names for
         an ODS-5 device.
    
         All C RTL functions that accept or report full file
         specifications will process file specifications up to 4095
         bytes long, subject to the rules defined for the media format.
         For file specifications in OpenVMS format, there are no
         special restrictions.  In situations where a full file
         specification cannot be reported because the buffer is too
         short, the function attempts to report the abbreviated name.
    
         There are restrictions with UNIX file names.  Names containing
         special characters, such as multiple periods, caret, or
         multinational characters, may be rejected.  A function call
         may report failure if the output buffer is not large enough to
         receive the full name.  For OpenVMS-style names, the reported
         name would contain an FID-abbreviated name.  There is no
         representation of FID-abbreviated names defined for UNIX.
    
      o  The Compaq C RTL was enhanced to allow interpreting the
         leading part of a UNIX-style file specification as either a
         subdirectory name or a device name.
    
         The translation of the UNIX-style file name "foo/bar" to the
         OpenVMS-style file name "foo:bar" was the only translation in
         previous versions OpenVMS.  It remains the default.
    
         To request translation of the UNIX-style name "foo/bar" to the
         OpenVMS-style name "[.foo]bar", DEFINE the following logical
         name to any value:
    
           $ DEFINE DECC$DISABLE_TO_VMS_LOGNAME_TRANSLATION ENABLE
    
         To return to the default file-name translation, DEASSIGN the
         logical name.  The logical name is checked only once per image
         activation, not on a file-by-file basis.
    
      o  The file creation functions (fopen, open, creat) have been
         corrected to not inherit file attributes if a directory by the
         same name exists for the file being created.  For example,
         creating a file named "foo." in a directory which contained a
         "foo.dir" would incorrectly inherit file attributes from this
         directory file.
    
      o  The stat function no longer puts the wrong values into
         st_?time members of the stat structure.   More precisely,
         during daylight savings time the values of st_?time are no
         longer one hour ahead from file creation/modification time
         reported by the $DIRECTORY command.
    
      o  Nonquoted command-line arguments passed to C and C++ programs
         (argv arguments) can now optionally have their case preserved,
         rather than being lowercased as in previous versions.  By
         default, this feature is disabled.
    
         To enable this case preservation feature, define the logical
         name DECC$ARGV_PARSE_STYLE to "ENABLE" and set the
         process-level DCL parse style flag to "EXTENDED" in the
         process running the program.  Enabling this feature also
         ensures that the image name returned in argv[0] is also
         case-preserved.
    
      o  The time functions time, ftime, gettimeofday and getclock
         would fail for a TDF (time differential factor) of -13 hours,
         the value required in New Zealand.  According to the U.S.
         Naval Observatory information the valid range for the TDF is
         -13.75 to +13, inclusive.  The C RTL now allows this full
         range.
    
      o  The _malloc64 function was corrected to allow initialization
         of this function in a threadsafe manner.  Prior to this
         change, if the first call occurs after the program has created
         multiple threads and more than one thread calls the _malloc64
         routine, an access violation may occur.
    
      o  In the previous ECO kit, a change was introduced to the
         function strptime() for XPG5-compatibility to handle
         expressions for the 2-digit year format %y when the century
         was not specified.   The requirement is for 2-digit years in
         the range 0-68 to be treated as 21st century and years in the
         range 69-99 as 20th century. The 2-digit years in the range
         69-99 were incorrectly being treated as 21st century.
    
      o  The execlp and execvp functions were unconditionally prefixing
         the file specification of the image to be run in the child
         process with "VAXC$PATH:" string.  When passed a fully
         qualified file specification, this would result in an invalid
         file specification.
    
      o  The behavior of lseek() and fseek() at positions beyond the
         end of data in a file were not conforming to the POSIX/ANSI
         standard.  The file was being physically null padded on disk
         even though the standard only requires this null padding if
         data is actually written at this point.  In the case reported
         by the user, seeking to the end of a file by using a large
         offset would take a long time and may exhaust available disk
         space.  To get the POSIX behavior, you must define
         DECC$POSIX_SEEK_STREAM_FILE as "ENABLE".  The default behavior
         is unchanged.
    
      o  The Compaq C RTL was enhanced to open all files for shared
         access as if the "shr=del,get,put,upd" option was specified in
         the open* or creat call.  To enable this feature, define the
         logical name DECC$FILE_SHARING to the value "ENABLE".  The
         value is case-insensitive and is checked only once per image
         activation, not on a file-by-file basis.
    
      o  The Compaq C RTL was failing when the amount of data written
         to a pipe exceeded the buffer size of that pipe.  The RTL now
         breaks the large write into a sequence of writes whose size is
         the size of the underlying mailbox used to implement pipes.
    
      o  The opendir function now accepts ".." to be equivalent to both
         "../" and "[-]".
    
      o  A problem was reported that the RTL could hang if exit were
         called while threads were continuing to do I/O.  Analysis
         showed that the hang was caused by a thread holding the lock
         necessary to close the file and the exit handler blocking on
         this lock.  The change implemented was to not attempt to close
         files whose locks were currently in use.
    
      o  When a stream file is extended using ftruncate() it is
         documented that the extended area will be filled with zeroes.
         This is now done correctly.  Prior to this change, the file
         was not extended.
    
      o  The documentation of the select function states that it
         returns either when a socket is ready to be read or written,
         when the timeout period expires, or when exceptions occur. It
         was not properly terminating when an exception occurred.  This
         problem was corrected by dynamically linking to and calling an
         abort function in the socket library.  A complete correction
         to interrupting the select function will also require an ECO
         kit from the Compaq TCP/IP product which includes this new
         abort function.
    
      o  The fstat function was corrected to not access violate when
         called with stdin, stdout, stderr, or a directory specification.
    
      o  The chdir function was not well-behaved when the calling
         program passed an argument which was a search list logical.
         The chdir function was unconditionally changing the logical
         sys$disk to the first member of the search list was
         effectively dropping the remaining members.  The change in
         behavior is seen as a step in the right direction, but there
         are plans for more work in this area.
    
      o  The stat functions were not correctly handling files which
         were not directories but did use a .dir extension.  This
         problem was discovered when porting a UNIX application which
         used a .dir extension to store application specific information.
    
      o  The RTL functions which process file specifications were not
         correctly processing files which contained a hyphen character.
         The RTL was incorrectly assuming that hyphens were only
         allowed to specify a relative directory path.
    
    Problems Addressed in VMS721_ACRT-V0100:
    
      o  The getenv() function has been corrected to check for a CLI
         symbol only when called in user access mode.  While DEC C RTL
         is a user-mode run time library, we decided to correct getenv()
         in order to make the library more robust.  This is because
         calling CLI from within exec or kernel mode may result in an
         access violation.
    
         With this fix, when called from inner access mode, the
         getenv() function will search only the C environment list and
         VMS logical names.
    
         This fix does not mean, however, that the user-mode only
         restriction was lifted.  It is still unsupported to call the
         DEC C RTL functions, including getenv(), in any access mode
         other than in user-mode.
    
      o  The strptime() function has been modified to comply with
         X/Open CAE Specification System Interfaces and Headers Issue 5
         (commonly known as XPG5).  In XPG5, it was changed how the
         strptime() function processes the "%y" directive for a
         two-digit year within the century if no century is specified.
    
         According to XPG5, for the "%y" directive when a century is
         not otherwise specified, values in the range 69-99 refer to
         years in the twentieth century (1969 to 1999 inclusive) while
         values in the range 00-68 refer to years in the twenty-first
         century (2000 to 2068 inclusive).  Essentially, for the "%y"
         directive, strptime() became a "pivoting" function with 69
         being a pivoting year.
    
         Before this change, the strptime() function was always
         interpreting two-digit year with no century as a year within
         the twentieth century.
    
         With the current ECO kit, XPG5-compliant strptime() becomes a
         default strptime() function in the DEC C RTL.  However, for
         compatibility reasons, the previous "non-pivoting" XPG4-compliant
         strptime() function was retained.
    
         The "pivoting" is controlled by the DECC$XPG4_STRPTIME logical
         name.  Defining this logical name prior to invoking the
         application (any equivalence string) will cause the DEC C RTL
         to use the "non-pivoting" flavor of strptime().  Also,
         "non-pivoting" strptime() can be called directly as
         decc$strptime_xpg4() function.
    
         While there is an easy way to disable "pivoting" by just
         defining a logical name, you should be aware that if the
         application ceases to work correctly due to the change in the
         strptime() function, it almost certainly means, that there is
         a Y2K problem in the application.  Y2K-safe applications
         should not be affected by the change in strptime().
    
      o  The stat() function has been corrected to process file
         specifications such as "foo:[000000]" where foo is defined as
         a concealed device like the following:
    
           $ define/trans=(conc) foo device:[bar.]
    
         Prior to this fix, the stat() function would fail for such a
         file specification with errno set to ENOENT (No such file or
         directory).
    
      o  Both flavors of system() function were corrected to ensure
         that the function always returns the correct status.
    
         The POSIX-compliant system() function has been corrected to
         always return status corresponding to the signal which
         terminated the child process if the child process was
         terminated due to receiving a signal.
    
         Prior to this fix, there was a small timing window when the
         function could return the status corresponding to the child
         process completion code even in the case when the child
         process was terminated by a signal.
    
         The Non-POSIX system() function has been corrected to always
         return the VMS completion code of the child process.
    
         Prior to this fix, there was a small timing window when the
         function could return the status from LIB$SPAWN() instead of
         the completion code of the child process.
    
         None of these problems were ever reported by a customer.
    
      o  Opendir() and readdir() functions have been corrected to
         process directories on a remote node specified using the
         following DECnet file specification:
    
              nodename"username password"::device:[directory]
    
         Prior to this fix, opendir() could fail with errno set to
         ENOTDIR (Not a directory).  In the case when opendir() could
         successfully open the directory, readdir() function could
         return incorrect file names.
    
      o  Times() and clock() functions have been modified to be both
         thread-safe and AST-reentrant.
    
         Prior to this change, these functions belonged to the class of
         functions which are thread safe, but not AST-reentrant (see
         section 1.7.2 Multithread Restrictions in the DEC C RTL
         Reference Manual).
    
         The change in the reentrancy status of the times() and clock()
         functions will be reflected in the next release of the Manual.
    
      o  The stat() function no longer fails due to the failure of the
         mktime() function.
    
         It was reported that the stat() function fails for a file
         created on April 4th 1999 at 2:04 a.m.  EST which is the
         "missing hour" in the transition from standard to daylight
         saving time in Eastern time zone.
    
         The failure was due to the failure of the mktime() function to
         process the "missing hour" (stat() calls mktime() to fill
         st_?time members of the stat structure with UTC time).
    
         While the mktime() function was not fixed, the stat() function
         was corrected to handle the failure of mktime() and set st_?time
         fields correctly even if mktime() fails.
    
         Note, that, strictly speaking, "missing hour" is an invalid
         input for mktime(): there is no such time as "April 4th 1999
         2:04 a.m.", for example, in Eastern time zone.  Given the
         possibility of calling mktime() with invalid time, the stat()
         function, probably, should not have used mktime() in the first
         place or at least should have been prepared for mktime() failure.
    
      o  The CRTL I/O subsystem was enhanced to lift eight nested
         directory levels restriction for an ODS-5 device.  It affects
         such DEC C RTL functions as access, mkdir, opendir, rmdir, and
         stat.
    
         The following program example shows different VMS and UNIX-style
         deep directory specifications.
    
              #include <dirent.h>
              #include <errno.h>
              #include <stat.h>
              #include <stdio.h>
              #include <string.h>
              #include <unistd.h>
    
              #define DIM(_s) (sizeof(_s) / sizeof(_s[0]))
    
              /*
              ** we assume presence of root$ concieled device:
              **
              ** define/NoLog/Tran=(Conceal,Terminal) root$ node$dka0:[000000.]
              **
              */
    
              static char *filename[] = {
              "node$dka0:[w.x.y.z.a.b.c.d.e.f.g.h.i.j]",    /* (1) */
              "node$dka0:[w.x.y.z.a.b.c.d.e.f.g.h.i]j.dir", /* (2) */
              "root$/w/x/y/z/a/b/c/d/e/f/g/h/i/j",          /* (3) */
              };
    
              main()
              {
                struct stat s;
                int i;
                char *name;
    
                for(i=0; i < DIM(filename); ++i) {
                  name = filename[i];
    
                  if ( mkdir(name,0) == -1 )
                    printf("%d? mkdir(): %s\n", i+1, strerror(errno));
    
                  if ( stat(name,&s) )
                    printf("%d? stat(): %s\n", i+1, strerror(errno));
                  else if ( !S_ISDIR(s.st_mode) )
                    printf("%d? stat(): %s\n", i+1, "not a directory???");
    
                  if ( !opendir(name) )
                    printf("%d? opendir(): %s\n", i+1, strerror(errno));
    
                  if ( access(name,F_OK) == -1 )
                    printf("%d? access(): %s\n", i+1, strerror(errno));
    
                  if ( rmdir(name) == -1 )
                    printf("%d? rmdir(): %s\n", i+1, strerror(errno));
                }
              }
    
         Please note, that the DEC C RTL still does not support mixed
         UNIX/VMS-style file names coded using extended ODS-5 syntax
         like "doc/foo.bar.bar", "~foo^.bar" and "./tmp/foo.bar.b^_ar".
    
      o  The select() function has been corrected to return failure
         status if either invalid file descriptor or file descriptor
         not associated with a socket is found in one of the specified
         file descriptor sets.  In case of invalid file descriptor, the
         select() function sets errno to EBADF.  In case of a file
         descriptor not associated with a socket, the function sets
         errno to ENOTSOCK.
    
         Failure with errno set to EBADF is the standard requirement
         for the select() function.  Failure with errno set to ENOTSOCK
         is because currently the select() function can operate only on
         sockets.
    
         Prior to this fix, the function was setting errno as described
         above, but otherwise was ignoring invalid file descriptors and
         file descriptors not associated with sockets.
    
         The old behavior can be requested by defining the logical name
         DECC$SELECT_IGNORES_INVALID_FD prior to invoking the application
         (any equivalence string).
    
      o  The bug in printf() "engine" introduced in ALPACRT07_071 kit
         has been fixed.  The bug was that when minimal field width or
         precision specified in the format directive was greater than
         1024, the "engine" could write beyond the end of allocated
         internal conversion buffer.  It could happen only in X_FLOAT
         floating point mode (/L_DOUBLE_SIZE=128, which is the default
         on Alpha).  The bug affected all functions from the printf()
         family of functions.
    
      o  The problem commonly known as the "Y2038 bug" has been fixed.
         The C run-time library time functions which access the current
         time using the VMS time functions have been corrected to
         handle times after 19-Jan-2038 3:14:07.  Data type time_t is
         defined on VMS as an unsigned 32-bit integer.   However, some
         of the functions which retrieve current time from the system
         and convert it to time_t format were using signed arithmetic.
    
           This fix affects the functions:
    
             o  decc$fix_time()
             o  time()
             o  ftime()
             o  gettimeofday()
             o  getclock()
    
         With this fix, DEC C RTL time functions will handle times
         successfully until 07-Feb-2106 06:28:15.
    
      o  The printf() family of functions have been enhanced to perform
         better when the calling application has exhausted available
         memory.
    
      o  The file access functions have been corrected to process file
         names on UNIX systems over DECnet.  The file name for a file
         on a UNIX system accessed over DECnet was being converted to
         uppercase, even when the name was enclosed in double quotes.
         This problem was introduced on OpenVMS V7.2 and also affects
         OpenVMS V7.1-2 and OpenVMS V7.2-1. File names of the form
         node::"dir/name" are now processed correctly.
    
    
    RELATED ARTICLES:
    
    Detailed articles describing the problems listed above may exist in
    the OPENVMS, C and C-PLUS-PLUS database(s).  To view these articles,
    open the appropriate product database and perform a query using either
    of the following search strings: 'VMS721_ACRTL-V0400' or 'ACRTL'.
      
    
    ECO KIT ORDERING INSTRUCTIONS:
    
    If after an evaluation you wish to obtain this kit, request it
    electronically using the appropriate Advanced Electronic Services
    (AES) Service Tool.  If you are not familiar with how to request
    kits electronically, open the DIA, WIS or DSNLINK database and
    review the article entitled:
    
         [AES] How To Electronically Request ECO Kits Using Service Tools
    
    INSTALLATION NOTES:
    
    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.
    
    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 VMS721_ACRTL /SOURCE=<kit location>
    
    The kit location may be a tape drive, CD, or a disk directory that
    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.
    
    SPECIAL INSTALLATION INSTRUCTIONS:
    
      o  %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.
    
      o  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=V4.0
    
           -  De-assign the logicals assigned
    
         For  example,  a  sample   command   file   to   install   the
         VMS721_ACRTL-V0400 kit would be:
    
              $
              $ DEFINE/SYS NO_ASK$BACKUP TRUE
              $ DEFINE/SYS NO_ASK$REBOOT TRUE
              $!
              $ PROD INSTALL VMS721_ACRTL/PROD=DEC/BASE=AXPVMS/VER=V4.0
              $!
              $ DEASSIGN/SYS NO_ASK$BACKUP
              $ DEASSIGN/SYS NO_ASK$REBOOT
              $!
              $ exit
    
    
    All trademarks are the property of their respective owners.
      
      ==========================================================================
      |                     Table of Kit Image Information                     |
      +----------------------------+----------+-----------------+--------------+
      |                            | Overall  | Image File      | Image Link   |
      | Image Name                 | Checksum | Identification  | Date/Time    |
      +----------------------------+----------+-----------------+--------------+
      | DECC$SHR.EXE               | B3A6632C | V7.2-1-04       | 14-MAR-2002  |
      |                                       |                 | 08:47:30.46  |
      +----------------------------+----------+-----------------+--------------+
    
    
privacy statement using this site means you accept its terms feedback to the webmaster
VMS rules VMS rocks OpenVMS rules OpenVMS rocks