|  | 
			
			| Compaq C Compaq CRun-Time Library Reference Manual for 
OpenVMS Systems
 
 
 towupper
 
Converts the argument, a wide character, to uppercase. If the argument 
is not a lowercase character, it is returned unchanged.
 
 Format
#include <wctype.h> (ISO C)
#include <wchar.h> (XPG4)
 
int towupper (wint_t wc);
 
 
 Arguments
wcAn object of type
wint_t
 representable as a valid wide character in the current locale, or the 
 value of WEOF. For any other value, the behavior is undefined. 
 Description
If the argument is a lowercase wide character, the corresponing 
uppercase wide character (as defined in the LC_CTYPE category of the 
locale) is returned, if it exists. If it does not exist, the function 
returns the input argument unchanged.
 
 trunc  (ALPHA ONLY)
 
Truncates the argument to an integral value.
 
 Format
#include <math.h>
double trunc (double x);
 
float truncf (float x,);
 
long double truncl (long double x);
 
 
 Argument
xA floating-point number. 
 Return Values
  
    | n | The truncated, integral value of the argument. |  
 truncate
 
Changes file length to a specified length in bytes.
 
 Format
#include <unistd.h>
int truncate (const char *path, off_t length);
 
 
 Arguments
pathThe name of a file that is to be truncated. This argument must point to 
a pathname that names a regular file for which the calling process has 
write permission.lengthThe new length of the file in bytes. The
off_t
 type of length is either a 64-bit integer or a 32-bit integer. 
 The 64-bit interface allows for file sizes greater than 2 gigabytes, 
 and can be selected at compile time by defining the _LARGEFILE 
 feature-test macro:
 
 Description
This function changes the length of a file to the size in bytes 
specified by the length argument.
If the new length is less than the previous length, the function 
removes all data beyond length bytes from the specified file. 
All file data between the new End-of-File and the previous End-of-File 
is discarded.
 
For stream files, if the new length is greater than the previous 
length, new file data between the previous End-of-File and the new 
End-of-File is added, consisting of all zeros. (For record files, it is 
not possible to extend the file in this manner.)
 
 Return Values
  
    | 0 | Indicates success. |  
    | --1 | An error occurred;
errno
       is set to indicate the error. |  
 ttyname
 
Returns a pointer to the null-terminated name of the terminal device 
associated with file descriptor 0, the default input device (stdin).
 
 Format
#include <unixio.h>
char *ttyname (void);
 
 
 Description
This function is provided only for UNIX compatibility and has limited 
use in the OpenVMS environment.
 
 Return Values
  
    | x | A pointer to a null-terminated string. |  
    | 0 | Indicates that SYS$INPUT is not a TTY device. |  
 tzset
 
Sets and accesses time-zone conversion.
 
 Format
#include <time.h>
void tzset (void);
 
extern char *tzname[];
 
extern long int timezone;
 
extern int daylight;
 
 
 Description
This function initializes time conversion information used by the
ctime
,
localtime
,
mktime
,
strftime
, and
wcsftime
 functions.
 
The
tzset
 function sets the following external variables:
 
  
tzname
 is set as follows, where "std" is a 3-byte name for the standard time 
 zone, and "dst" is a 3-byte name for the Daylight Savings Time zone:
 
  
    | 
 
tzname[0] = "std" 
tzname[1] = "dst" 
 | 
daylight
 is set to 0 if Daylight Savings Time should never be applied to the 
 time zone. Otherwise,
daylight
 is set to 1.
  
timezone
 is set to the difference between UTC and local standard time.
 
The environment variable
TZ
 specifies how
tzset
 initializes time conversion information:
 
  If
TZ
 is absent from the environment, the implementation-dependent time-zone 
 information is used, as follows:
  
    The best available approximation to local wall-clock time is used, as 
    defined by the system logical SYS$LOCALTIME, which points to a
tzfile
 format file that describes default time-zone rules.
    This system logical is set during the installation of OpenVMS 
    Version 7.0 or higher to define a time-zone file based off the root 
    directory SYS$COMMON:[SYS$ZONEINFO.SYSTEM].1
If
TZ
 appears in the environment but its value is a null string, Coordinated 
 Universal Time (UTC) is used (without leap-second correction).
  If
TZ
 appears in the environment and its value is not a null string, the 
 value has one of three formats, as described in Table REF-11.
 
 
  Table REF-11 Time-Zone Initialization Rules
  
    | TZ Format | Meaning |  
    | : | UTC is used. |  
    | :
      pathname | The characters following the colon specify the pathname of a
tzfile
       format file from which to read the time-conversion information. A 
       pathname beginning with a slash (/) represents an absolute pathname; 
       otherwise, the pathname is relative to the system time-conversion 
       information directory specified by SYS$TZDIR, which by default is 
       SYS$COMMON:[SYS$ZONEINFO.SYSTEM]. |  
    | stdoffset[
dst[
offset] [,rule]]
 | The value is first used as the pathname of a file (as described for the 
:
pathname format) from which to read the time-conversion 
information. If that file cannot be read, the value is then interpreted as a 
      direct specification of the time-conversion information, as follows:
     |  
    |  | std and
dst---Three or more characters that are the designation for 
the time zone: 
std---Standard time zone. Required.
dst---Daylight Savings Time zone. Optional. If
dst is omitted, Daylight Savings Time does not apply.
 Uppercase and lowercase letters are explicitly allowed. Any 
 characters are allowed, except the following:
 
digits
leading colon (:)
comma (,)
minus (-)
plus (+)
ASCII null character
 |  
    |  | offset---The value added to the local time to arrive at UTC. 
The offset has the following format: 
hh[:
mm[:
ss]]
 In this format:
       
      
      hh (hours) is a one-or two-digit value of 0--24.
      
      mm (minutes) is a value of 0--59. (optional)
      
      ss (seconds) is a value of 0--59. (optional)
       |  
    |  | The offset following
      std is required. If no offset follows
      dst, summer time is assumed, one hour ahead of standard time. 
      You can use one or more digits; the value is always interpreted as a 
      decimal number. If the time zone is preceded by a minus sign (-), the time zone is 
      East of Greenwich; otherwise, it is West, which can also be indicated 
      by a preceding plus sign (+).
     |  
    |  | rule---Indicates when to change to and return from summer 
      time. The rule has the form: 
start[/
time],
end[/
time]
 Where:
       
      
      start is the date when the change from standard time to summer 
      time occurs.
      
      end is the date for returning from summer time to standard 
      time.
       |  
    |  | If
      start and
      end are omitted, the default is the US Daylight Saving Time 
      start and end dates. The format for
      start and
      end must be one of the following: |  
    |  | time---The time when, in current time, the change to or return 
      from summer time occurs. The
      time argument has the same format as
      offset, except that you cannot use a leading minus (-) or plus 
      (+) sign. If
      time is not specified, the default is 02:00:00. If no rule is present in the
      
      TZ
      
               specification, the rules used are those specified by the
      
      tzfile
      
               format file defined by the system logical SYS$POSIXRULES in the system 
               time-conversion information directory, with the standard and summer 
               time offsets from UTC replaced by those specified by the offset values 
               in
      
      TZ
      
              .
       If
      
      TZ
      
               does not specify a
      
      tzfile
      
               format file and cannot be interpreted as a direct specification, UTC is 
               used.
     |  
 
  | Note 
 
 The UTC-based time functions, introduced in OpenVMS Version 7.0, had 
degraded performance compared with the non-UTC-based time functions.
 
 OpenVMS Version 7.1 added a cache for time-zone files to improve 
performance. The size of the cache is determined by the logical name 
DECC$TZ_CACHE_SIZE. To accommodate most countries changing the time 
twice per year, the default cache size is large enough to hold two 
time-zone files.
 |  
See also
ctime
,
localtime
,
mktime
,
strftime
, and
wcsftime
 in this section.
 
 Sample TZ Specification
 
  
    | #1 |  
    | 
 
EST5EDT4,M4.1.0,M10.5.0 
 
       |  
This sample TZ specification describes the rule defined in 1987 for the 
Eastern time zone in the US:
 
  EST (Eastern Standard Time) is the designation for standard time, 
  which is 5 hours behind UTC.
  EDT (Eastern Daylight Time) is the designation for summer time, 
  which is 4 hours behind UTC. EDT starts on the first Sunday in April 
  and ends on the last Sunday in October.
 
Because time was not specified in either case, the changes 
occur at the default time, which is 2:00 a.m. The start and end dates 
did not need to be specified, because they are the defaults.
 
 
  
    | Note 
 1  The Compaq C RTL uses a 
        public-domain, time-zone handling package that puts time-zone 
        conversion rules in easily accessible and modifiable files. These files 
        reside in the directory SYS$COMMON:[SYS$ZONEINFO.SYSTEM.SOURCES]. 
        <tzfile.h> header file. The converted files are created with a 
        root directory of SYS$COMMON:[SYS$ZONEINFO.SYSTEM], which is pointed to 
        by the SYS$TZDIR system logical. This format is readable by the C 
        library functions that handle time-zone information. For example, in 
        the eastern United Stated, SYS$LOCALTIME is defined to be 
        SYS$COMMON:[SYS$ZONEINFO.SYSTEM.US]EASTERN.  |  
ualarm 
 
Sets or changes the timeout of interval timers.
 
 Format
#include <unistd.h>
useconds_t ualarm (useconds_t mseconds, useconds_t 
interval);
 
 
 Arguments
msecondsSpecifies a number of real time microseconds.intervalSpecifies the interval for repeating the timer. 
 Description
This function causes the
SIGALRM
 signal to be generated for the calling process after the number of 
 real-time microseconds specified by useconds has elapsed. When 
 the interval argument is nonzero, repeated timeout 
 notification occurs with a period in microseconds specified by 
 interval. If the notification signal
SIGALRM
 is not caught or is ignored, the calling process is terminated.
If you call a combination of
ualarm
 and
setitimer
 functions, and the AST status is disabled, the return value is invalid.
 
If you call a combination of
ualarm
 and
setitimer
 functions, and the AST status is enabled, the return value is valid.
 
This is because you cannot invoke an AST handler to clear the previous 
value of the timer when ASTs are disabled or invoked from a handler 
that was invoked at AST level.
 
 
  | Note Interactions between
ualarm
 and either
alarm
, or
sleep
 are unspecified.
 |  
See also
setitimer
 in this section.
 
 Return Values
  
    | n | The number of microseconds remaining from the previous
      
      ualarm
      
               or
      
      setitimer
      
               call. |  
    | 0 | No timeouts are pending or
      
      ualarm
      
               not previously called. |  
    | --1 | Indicates an error. |  
 umask
 
Creates a file protection mask that is used when a new file is created, 
and returns the previous mask value.
 
 Format
#include <stat.h>
mode_t umask (mode_t mode_complement);
 
 
 Argument
mode_complementShows which bits to turn off when a new file is created. See the 
description of
chmod
 to determine what the bits represent. 
 Description
Initially, the file protection mask is set from the current process's 
default file protection. This is done when the C main program starts up
or when
DECC$CRTL_INIT
 (or
VAXC$CRTL_INIT
) is called. You can change this for all files created by your program 
by calling
umask
 or you
can use
chmod
 to change the file protection on individual files. The file protection 
 of a file created by
open
 or
creat
 is the bitwise AND of the
open
 and
creat
 mode argument with the complement of the value passed to
umask
 on the previous call.
 
  | Note The way to create files with OpenVMS RMS default protections using the 
UNIX system-call functions
umask
,
mkdir
,
creat
, and
open
 is to call
mkdir
,
creat
, and
open
with a file-protection mode argument of 0777 in a program that never 
specifically calls
umask
. These default protections include correctly establishing protections 
based on ACLs, previous versions of files, and so on.
 
 In programs that do
vfork
/
exec
calls, the new process image inherits whether
umask
 has ever been called or not from the calling process image. The
umask
 setting and whether the
umask
function has ever been called are both inherited attributes.
 |  
 Return Value
 
 uname
 
Gets system identification information.
 
 Format
#include <utsname.h>
int uname (struct utsname *name);
 
 
 Arguments
nameThe current system identifier. 
 Description
This function stores null-terminated strings of information identifying 
the current system into the structure referenced by the name 
argument.
The
utsname
 structure is defined in the
<utsname.h>
 header file and contains the following members:
 
  
    | sysname | Name of the operating system implementation |  
    | nodename | Network name of this machine |  
    | release | Release level of the operating system |  
    | version | Version level of the operating system |  
    | machine | Machine hardware platform |  
 Return Values
  
    | 0 | Indicates success. |  
    | --1 | Indicates an error;
      
      errno
      
               or
      
      vaxc$errno
      
               is set as appropriate. |  
 ungetc
 
Pushes a character back into the input stream and leaves the stream 
positioned before the character.
 
 Format
#include <stdio.h>
int ungetc (int character, FILE *file_ptr);
 
 
 Arguments
characterA value of type
int
.file_ptrA file pointer. 
 Description
When using this function, the character is pushed back onto the file 
indicated by file_ptr.
 One pushback is guaranteed, even if there has been no previous activity 
 on the file. The
fseek
 function erases all memory of pushed-back characters. The pushed-back 
 character is not written to the underlying file. If the character to be 
 pushed back is EOF, the operation fails, the input stream is left 
 unchanged, and EOF is returned.
 
See also
fseek
 and
getc
 in this section.
 
 Return Values
  
    | x | The push-back character. |  
    | EOF | Indicates it cannot push the character back. |  
 ungetwc
 
Pushes a wide character back into the input stream.
 
 Format
#include <wchar.h>
wint_t ungetwc (wint_t wc, FILE *file_ptr);
 
 
 Arguments
wcA value of type
wint_t
.file_ptrA file pointer. 
 Description
When using this function, the wide character is pushed back onto the 
file indicated by file_ptr.
 One push-back is guaranteed, even if there has been no previous 
 activity on the file. If a file positioning function (such as
fseek
) is called before the pushed back character is read, the bytes 
representing the pushed back character are lost.
 
If the character to be pushed back is WEOF, the operation fails, the 
input stream is left unchanged, and WEOF is returned.
 
See also
getwc
 in this section.
 
 Return Values
  
    | x | The push-back character. |  
    | WEOF | Indicates that the function cannot push the character back.
      
      errno
      
               is set to one of the following: 
      EBADF -- The file descriptor is not valid.
      EALREADY -- Operation is already in progress on the same file.
      EILSEQ -- Invalid wide-character code detected.
       |  
 
 |  
	|  |  |