  | 
		
		
			
			
Compaq C
Compaq C Run-Time Library Reference Manual for 
OpenVMS Systems
 
 
 
getwchar
 
Reads a single wide character from the standard input (stdin).
 
 
Format
#include <wchar.h>
wint_t getwchar (void);
 
  
 
Description
The
getwchar
 function is identical to
fgetwc(stdin)
.
 
 
Return Values
  
    | 
      x
     | 
    
The next character from stdin, converted to
wint_t
      .
     | 
   
  
    | 
      WEOF
     | 
    
Indicates the end-of-file or an error. If an error occurs, the function 
sets
errno
. For a list of the values set by this function, see
fgetwc
       in this section.
     | 
   
 
 
 
getyx
 
Puts the (y,x) coordinates of the current cursor position on 
win in the variables y and x.
 
 
Format
#include <curses.h>
getyx (WINDOW *win, int y, int x);
 
  
 
Arguments
win
Must be a pointer to the window.
y
Must be a valid lvalue.
x
Must be a valid lvalue.
 
 
gmtime, gmtime_r
 
Converts time units to the broken-down UTC time.
 
 
Format
#include <time.h>
struct tm *gmtime (const time_t *timer);
 
struct tm *gmtime_r (const time_t *timer, struct tm 
*result); (ISO POSIX-1)
 
  
Function Variants Compiling with the _DECC_V4_SOURCE and _VMS_V6_SOURCE 
feature-test macros defined enables a local-time-based entry point to 
this function that is equivalent to the behavior before OpenVMS Version 
7.0.
 
Arguments
timer
Points to a variable that specifies a time value in seconds since the 
Epoch.
result
A pointer to a
tm
 structure where the result is stored.
The
tm
 structure is defined in the
<time.h>
 header, and is also shown in Table REF-4 in the description of
localtime
.
  
 
Description
The
gmtime
 and
gmtime_r
 functions convert the time (in seconds since the Epoch) pointed to by 
 timer into a broken-down time, expressed as Coordinated 
 Universal Time (UTC), and store it in a
tm
 structure.
The difference between the
gmtime_r
 and
gmtime
 functions is that the former puts the result into a user-specified
tm
 structure where the result is stored. The latter puts the result into 
 thread-specific static memory allocated by the Compaq C RTL, and 
 which is overwritten by subsequent calls to
gmtime
; you must make a copy if you want to save it.
 
On success,
gmtime
 returns a pointer to the
tm
 structure;
gmtime_r
 returns its second argument. On failure, these functions return the 
 NULL pointer.
 
 
  Note 
Generally speaking, UTC-based time functions can affect in-memory 
time-zone information, which is process-wide data. However, if the 
system time zone remains the same during the execution of the 
application (which is the common case) and the cache of timezone files 
is enabled (which is the default), then the
_r
 variant of the time functions
asctime_r
,
ctime_r
,
gmtime_r
 and
localtime_r
, is both thread-safe and AST-reentrant.
 
 
If, however, the system time zone can change during the execution of 
the application or the cache of timezone files is not enabled, then 
both variants of the UTC-based time functions belong to the third class 
of functions, which are neither thread-safe nor AST-reentrant. 
     | 
   
 
 
 
Return Values
  
    | 
      x
     | 
    
Pointer to a
tm
       structure.
     | 
   
  
    | 
      NULL
     | 
    
Indicates an error;
errno
 is set to one of the following values:
- EINVAL -- The
timer argument is NULL.
  
     | 
   
 
 
 
gsignal
 
Generates a specified software signal, which invokes the action routine 
established by a
signal
,
ssignal
, or
sigvec
 function.
 
 
Format
#include <signal.h>
int gsignal (int sig [, int sigcode]);
 
  
 
Arguments
sig
The signal to be generated.
sigcode
An optional signal code. For example, signal SIGFPE---the arithmetic 
trap signal---has 10 different codes, each representing a different 
type of arithmetic trap.
The signal codes can be represented by mnemonics or numbers. The 
arithmetic trap codes are represented by the numbers 1 to 10, but the 
SIGILL codes are represented by the numbers 0 to 2. The code values are 
defined in the
<signal.h>
 header file. See Tables 4-4 and 4-5 for a list of 
 signal mnemonics, codes, and corresponding OpenVMS exceptions.
  
 
Description
Calling this function has one of the following results:
  - If
gsignal
 specifies a sig argument that is outside the range defined in 
 the
<signal.h>
 header file, then
gsignal
 returns 0 and sets
errno
 to EINVAL.
  
 - If
signal
,
ssignal
, or
sigvec
 establishes SIG_DFL (default action) for the signal, then
gsignal
 does not return. The image is exited with the OpenVMS error code 
 corresponding to the signal.
  
 - If
signal
,
ssignal
, or
sigvec
 establishes SIG_IGN (ignore signal) as the action for the signal, then
gsignal
 returns its argument, sig.
  
 - 
signal
,
ssignal
, or
sigvec
 must be used to establish an action routine for the signal. That 
 function is called and its return value is returned by
gsignal
.
  
See also
raise
,
signal
,
ssignal
, and
sigvec
 in this section.
 
See Chapter 4 for more information.
  
 
Return Values
  
    | 
      0
     | 
    
Indicates a
sig argument that is outside the range defined in the
<signal.h>
 header file;
errno
       is set to EINVAL.
     | 
   
  
    | 
      sig
     | 
    
      Indicates that SIG_IGN (ignore signal) has been established as the 
      action for the signal.
     | 
   
  
    | 
      x
     | 
    
Indicates that
signal
,
ssignal
, or
sigvec
 has established an action function for the signal. That function is 
 called, and its return value is returned by
gsignal
      .
     | 
   
 
 
 
hypot
 
Returns the length of the hypotenuse of a right triangle.
 
 
Format
#include <math.h>
double hypot (double x, double y);
 
float hypotf (float x, float y);  (ALPHA ONLY)
 
long double hypotl (long double x, long double y); 
 (ALPHA ONLY)
 
  
 
Arguments
x
A real value.
y
A real value.
 
 
Description
The
hypot
 functions return the length of the hypotenuse of a right triangle, 
 where x and y represent the perpendicular sides of 
 the triangle. The length is calculated as:
 
On overflow, the return value is undefined, and
errno
 is set to ERANGE.
  
 
Return Values
  
    | 
      x
     | 
    
      The length of the hypotenuse.
     | 
   
  
    | 
      HUGE_VAL
     | 
    
Overflow occurred;
errno
       is set to ERANGE.
     | 
   
  
    | 
      0
     | 
    
Underflow occurred;
errno
       is set to ERANGE.
     | 
   
  
    | 
      NaN
     | 
    
x or
y is NaN;
errno
       is set to EDOM.
     | 
   
 
 
 
iconv
 
Converts characters coded in one codeset to characters coded in another 
codeset.
 
 
Format
#include <iconv.h>
size_t iconv (iconv_t cd, char **inbuf, size_t 
*inbytesleft, char **outbuf, size_t 
*outbytesleft);
 
  
 
Arguments
cd
A conversion descriptor. This is returned by a successful call to
iconv_open
.
inbuf
A pointer to a variable that points to the first character in the input 
buffer.
inbytesleft
Initially, this argument is a pointer to a variable that indicates the 
number of bytes to the end of the input buffer (inbuf). When 
the conversion is completed, the variable indicates the number of bytes 
in inbuf not converted.
outbuf
A pointer to a variable that points to the first available byte in the 
output buffer. The output buffer contains the converted characters.
outbytesleft
Initially, this argument is a pointer to a variable that indicates the 
number of bytes to the end of the output buffer (outbuf). When 
the conversion is completed, the variable indicates the number of bytes 
left in outbuf.
 
 
Description
This function converts characters in the buffer pointed to by 
inbuf to characters in another code set. The resulting 
characters are stored in the buffer pointed to by outbuf. The 
conversion type is specified by the conversion descriptor cd. 
This descriptor is returned from a successful call to
iconv_open
.
If an invalid character is found in the input buffer, the conversion 
stops after the last successful conversion. The variable pointed to by 
inbytesleft is updated to reflect the number of bytes in the 
input buffer that are not converted. The variable pointed to by 
outbytesleft is updated to reflect the number of bytes 
remaining in the output buffer.
  
 
Return Values
  
    | 
      x
     | 
    
      Number of non-identical conversions performed. Indicates successful 
      conversion. In most cases 0 is returned.
     | 
   
  
    | 
(
size_t
      ) --1
     | 
    
Indicates an error condition. The function sets
errno
 to one of the following:
- EBADF -- The
cd argument is not a valid conversion descriptor.
 - EILSEQ -- The conversion stops when an invalid character detected.
 - E2BIG -- The conversion stops because of insufficient space in the 
output buffer.
 - EINVAL -- The conversion stops because of an incomplete character 
at the end of the input buffer.
  
     | 
   
 
 
 
iconv_close
 
Deallocates a specified conversion descriptor and the resources 
allocated to the descriptor.
 
 
Format
#include <iconv.h>
int iconv_close (iconv_t cd);
 
  
 
Arguments
cd
The conversion descriptor to be deallocated. A conversion descriptor is 
returned by a successful call to
iconv_open
.
 
 
Return Values
  
    | 
      0
     | 
    
      Indicates that the conversion descriptor was successfully deallocated.
     | 
   
  
    | 
      --1
     | 
    
Indicates an error occurred. The function sets
errno
 to one of the following:
- EBADF -- The
cd argument is not a valid conversion descriptor.
 - EVMSERR -- Non-translatable VMS error occur.
vaxc$errno
 contains the VMS error code.
  
     | 
   
 
 
 
iconv_open
 
Allocates a conversion descriptor for a specified codeset conversion.
 
 
Format
#include <iconv.h>
iconv_t iconv_open (const char *tocode, const char 
*fromcode);
 
  
 
Arguments
tocode
The name of the codeset to which characters are converted.
fromcode
The name of the source codeset. See Chapter 10 for information on 
obtaining a list of currently available codesets or for details on 
adding new codesets.
 
 
Return Values
  
    | 
      x
     | 
    
A conversion descriptor. Indicates the call was successful. This 
descriptor is used in subsequent calls to
iconv
     | 
   
  
    | 
      (iconv_t) --1
     | 
    
Indicates an error occurred. The function sets
errno
 to one of the following:
- EMFILE -- The process does not have enough I/O channels to open a 
file.
 - ENOMEM -- Insufficient space is available.
 - EINVAL -- The conversion specified by
fromcode and
tocode is not supported.
 - EVMSERR -- Nontranslatable VMS error occur.
vaxc$errno
 contains the VMS error code. A value of SS$_BADCHKSUM in
vaxc$errno
 indicates that a conversion table file was found, but its contents is 
 corrupted. A value of SS$_IDMISMATCH in
vaxc$errno
 indicates that the conversion table file version does not match the 
 version of the C Run-Time Library.
  
     | 
   
 
 
 
Example
 
  
    
       
      
#include <stdio.h> 
#include <iconv.h> 
#include <errno.h> 
 
 
int main() 
{ 
    /* Declare variables to be used                      */ 
 
    char fromcodeset[30]; 
    char tocodeset[30]; 
    int iconv_opened; 
    iconv_t iconv_struct;       /* Iconv descriptor      */ 
 
    /* Initialize variables                              */ 
 
    sprintf(fromcodeset, "DECHANYU"); 
    sprintf(tocodeset, "EUCTW"); 
    iconv_opened = FALSE; 
 
    /* Attempt to create a conversion descriptor for the */ 
    /* codesets specified. If the return value from      */ 
    /* iconv_open is -1 then an error has occurred.      */ 
    /*  Check the value of errno.                        */ 
 
    if ((iconv_struct = iconv_open(tocodeset, fromcodeset)) 
       == (iconv_t) - 1) { 
 
        /* Check the value of errno                      */ 
 
        switch (errno) { 
        case EMFILE: 
        case ENFILE: 
            printf("Too many iconv conversion files open\n"); 
            break; 
 
        case ENOMEM: 
            printf("Not enough memory\n"); 
            break; 
 
        case EINVAL: 
            printf("Unsupported conversion\n"); 
            break; 
 
        default: 
            printf("Unexpected error from iconv_open\n"); 
            break; 
       } 
    } 
    else 
 
        /* Successfully allocated a conversion descriptor   */ 
 
        iconv_opened = TRUE; 
 
    /*  Was a conversion descriptor allocated               */ 
 
    if (iconv_opened) { 
 
        /* Attempt to deallocate the conversion descriptor. */ 
        /* If iconv_close returns -1 then an error has      */ 
        /* occurred.                                        */ 
 
        if (iconv_close(iconv_struct) == -1) { 
 
            /* An error occurred. Check the value of errno  */ 
 
            switch (errno) { 
            case EBADF: 
                printf("Conversion descriptor is invalid\n"); 
                break; 
            default: 
                printf("Unexpected error from iconv_close\n"); 
                break; 
            } 
        } 
    } 
    return (EXIT_FAILURE); 
} 
 |   
 
 
[w]inch
 
Return the character at the current cursor position on the specified 
window without making changes to the window. The
inch
 function acts on the
stdscr
 window.
 
 
Format
#include <curses.h>
char inch();
 
char winch (WINDOW *win);
 
  
 
Argument
win
A pointer to the window.
 
 
Return Values
  
    | 
      x
     | 
    
      The returned character.
     | 
   
  
    | 
      ERR
     | 
    
      Indicates an input error.
     | 
   
 
 
 
index
 
Search for a character in a string.
 
 
Format
#include <strings.h>
char *index (const char *s, int c);
 
  
Function Variants This function also has variants named
_index32
 and
_index64
 for use with 32-bit and 64-bit pointer sizes, respectively. See 
 Section 1.10 for more information on using pointer-size-specific 
 functions.
 
Arguments
s
The string to search.
c
The character to search for.
 
 
Description
The
index
 function is identical to the
strchr
 function, and is provided for compatibility with some UNIX 
 implementations.
 
 
initscr
 
Initializes the terminal-type data and all screen functions. You must 
call
initscr
 before using any of the curses functions.
 
 
Format
#include <curses.h>
void initscr (void);
 
  
 
Description
The OpenVMS Curses version of this function clears the screen before 
doing the initialization. The BSD-based Curses version does not.
 
 
initstate
 
Initializes random number generators.
 
 
Format
#include <stdlib.h>
char *initstate (unsigned int seed, char *state, int 
size);
 
  
 
Arguments
seed
An initial seed value.
state
Pointer to an array of state information.
size
The size of the state information array.
 
 
Description
This function initializes random number generators. It lets you 
initialize for future use, a state array passed as an argument. The 
size in bytes of the state array is used by the
initstate
function to decide how sophisticated a random number generator to use; 
the larger the state array, the more random the numbers.
Values for the amount of state information are 8, 32, 64, 128, and 256 
bytes. Amounts less than 8 bytes generate an error, while other amounts 
are rounded down to the nearest known value.
 
The seed argument specifies a starting point for the random 
number sequence and provides for restarting at the same point. The
initstate
 function returns a pointer to the previous state information array.
 
Once you initialize a state, the
setstate
 function allows rapid switching between states. The array defined by 
 the state argument is used for further random number 
 generation until the
initstate
 function is called or the
setstate
 function is called again. The
setstate
 function returns a pointer to the previous state array.
 
After initialization, you can restart a state array at a different 
point in one of two ways:
 
  - Use the
initstate
 function with the desired seed argument, state array, and size 
 of the array.
  
 - Use the
setstate
 function with the desired state, followed by the
srandom
 function with the desired seed. The advantage of using both 
 functions is that you do not have to save the state array size once you 
 initialize it.
  
See also
setstate
,
srandom
, and
random
, in this section.
  
 
Return Values
  
    | 
      x
     | 
    
      A pointer to the previous state array information.
     | 
   
  
    | 
      0
     | 
    
Indicates an error. Call made with less than 8 bytes of state 
information. Further specified in the global
errno
      .
     | 
   
 
 
 
[w]insch
 
Insert a character at the current cursor position in the specified 
window. The
insch
 function acts on the
stdscr
 window.
 
 
Format
#include <curses.h>
int insch (char ch);
 
int winsch (WINDOW *win, char ch);
 
  
 
Arguments
win
A pointer to the window.
ch
The character to be inserted.
 
 
Description
After the character is inserted, each character on the line shifts to 
the right, and the last character in the line is deleted. For more 
information, see the
scrollok
 function in this section.
 
 
Return Values
  
    | 
      OK
     | 
    
      Indicates success.
     | 
   
  
    | 
      ERR
     | 
    
      Indicates that the function makes the screen scroll illegally.
     | 
   
 
 
  
         | 
	 
	  | 
	 
		 
		 |