HP OpenVMS Systems Documentation
Reads from a file.
#include <sys/uio.h>Function Variants The readv function has variants named _readv32 and _readv64 for use with 32-bit and 64-bit pointer sizes, respectively. See Section 1.10 for more information on using pointer-size-specific functions.
ssize_t readv (int file_desc, const struct iovec *iov, int iovcnt);
ssize_t _readv64 (int file_desc, struct __iovec64 *iov, int iovcnt);
file_descA file descriptor. A file descriptor that must refer to a file currently opened for reading.
iovArray of iovec structures into which the input data is placed.
iovcntThe number of buffers specified by the members of the iov array.
The readv function is equivalent to read , but places the input data into the iovcnt buffers specified by the members of the iov array: iov, iov, ..., iov[iovcnt-1]. The iovcnt argument is valid if it is greater than 0 and less than or equal to IOV_MAX.
Each iovec entry specifies the base address and length of an area in memory where data should be placed. The readv function always fills an area completely before proceeding to the next.
Upon successful completion, readv marks for update the st_atime field of the file.
If the Synchronized Input and Output option is supported:
If the O_DSYNC and O_RSYNC bits have been set, read I/O operations on the file descriptor will complete as defined by synchronized I/O data integrity completion.
If the O_SYNC and O_RSYNC bits have been set, read I/O operations on the file descriptor will complete as defined by synchronized I/O file integrity completion.
If the Shared Memory Objects option is supported:
If file_desc refers to a shared memory object, the result of the read function is unspecified.
For regular files, no data transfer occurs past the offset maximum established in the open file description associated with file_desc.
n The number of bytes read. - 1 Indicates a read error. The function sets errno to one of the following values:
- EAGAIN -- The O_NONBLOCK flag is set for the file descriptor, and the process would be delayed.
- EBADF -- The file_desc argument is not a valid file descriptor open for reading.
- EBADMSG -- The file is a STREAM file that is set to control-normal mode, and the message waiting to be read includes a control part.
- EINTER -- The read operation was terminated because of the receipt of a signal, and no data was transferred.
- EINVAL -- The STREAM or multiplexer referenced by file_desc is linked (directly or indirectly) downstream from a multiplexer.
The sum of the iov_len values in the iov array overflowed an ssize_t .
- EIO -- A physical I/O error has occurred.
The process is a member of a background process attempting to read from its controlling terminal, the process is ignoring or blocking the SIGTTIN signal, or the process group is orphaned.
- EISDIR -- The file_desc argument refers to a directory, and the implementation does not allow the directory to be read using read , pread or readv . Use the readdir function instead.
- EOVERFLOW -- The file is a regular file, nbyte is greater than 0, and the starting position is before the end-of-file and is greater than or equal to the offset maximum established in the open file description associated with file_desc.
The readv function may fail if:
- EINVAL -- The iovcnt argument was less than or equal to 0, or greater than IOV_MAX.
Changes the size of the area pointed to by the first argument to the number of bytes given by the second argument. These functions are AST-reentrant.
#include <stdlib.h>Function Variants The realloc function has variants named _realloc32 and _realloc64 for use with 32-bit and 64-bit pointer sizes, respectively. See Section 1.10 for more information on using pointer-size-specific functions.
void *realloc (void *ptr, size_t size);
ptrPoints to an allocated area, or can be NULL.
sizeThe new size of the allocated area.
If ptr is the NULL pointer, the behavior of the realloc function is identical to the malloc function.
The contents of the area are unchanged up to the lesser of the old and new sizes. The ANSI C Standard states that, "If the new size is larger than the old size, the value of the newly allocated portion of memory is indeterminate." For compatibility with old implementations, HP C initializes the newly allocated memory to 0.
For efficiency, the previous actual allocation could have been larger than the requested size. If it was allocated with malloc , the value of the portion of memory between the previous requested allocation and the actual allocation is indeterminate. If it was allocated with calloc , that same memory was initialized to 0. If your application relies on realloc initializing memory to 0, then use calloc instead of malloc to perform the initial allocation.
See also free , cfree , calloc , and malloc .
x The address of the area, quadword-aligned. The address is returned because the area may have to be moved to a new address to reallocate enough space. If the area was moved, the space previously occupied is freed. NULL Indicates that space cannot be reallocated (for example, if there is not enough room).
Repaint the specified window on the terminal screen. The refresh function acts on the stdscr window.
int wrefresh (WINDOW *win);
winA pointer to the window.
The result of this process is that the portion of the window not occluded by subwindows or other windows appears on the terminal screen. To see the entire occluded window on the terminal screen, call the touchwin function instead of the refresh or wrefresh function.
See also touchwin .
OK Indicates success. ERR Indicates an error.
Deletes a file.
int remove (const char *file_spec);
file_specA pointer to the string that is an OpenVMS or a UNIX style file specification. The file specification can include a wildcard in its version number. So, for example, files of the form filename.txt;* can be deleted.
If you specify a directory in the file name and it is a search list that contains an error, HP C for OpenVMS Systems interprets it as a file error.
The DECC$ALLOW_REMOVE_OPEN_FILES feature logical controls the behavior of the remove function 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.
The remove and delete functions are functionally equivalent in the HP C RTL.
See also delete .
0 Indicates success. nonzero value Indicates failure.
Gives a new name to an existing file.
int rename (const char *old_file_spec, const char *new_file_spec);
old_file_specA pointer to a string that is the existing name of the file to be renamed.
new_file_specA pointer to a string that is to be the new name of the file.
If you try to rename a file that is currently open, the behavior is undefined. You cannot rename a file from one physical device to another. Both the old and new file specifications must reside on the same device.
If the new_file_spec does not contain a file extension, the file extension of old_file_spec is used. To rename a file to have no file extension, new_file_spec must contain a period (.) For example, the following renames SYS$DISK:FILE.DAT to SYS$DISK:FILE1.DAT:
However, the following renames SYS$DISK:FILE.DAT to SYS$DISK:FILE1:
Because the rename function does special processing of the file extension, the caller must be careful when specifying the name of the renamed file in a call to a C Run-Time Library function that accepts a file-name argument. For example, after the following call to the rename function, the new file should be opened as fopen("bar.dat",...) :
The rename function is affected by the setting of the DECC$RENAME_NO_INHERIT and DECC$RENAME_ALLOW_DIR feature logicals as follows:
- DECC$RENAME_NO_INHERIT provides more UNIX compliant behavior in rename , and affects whether or not the new name for the file inherits anything (like file type) from the old name or must be specified completely.
- DECC$RENAME_ALLOW_DIR lets you choose between the previous OpenVMS behavior of allowing the renaming of a file from one directory to another, or the more UNIX compliant behavior of not allowing the renaming of a file to a directory.
See the DECC$RENAME_NO_INHERIT and DECC$RENAME_ALLOW_DIR descriptions in Section 1.6 for more information.
0 Indicates success. - 1 Indicates failure. The function sets errno to one of the following values:
- EISDIR -- The new argument points to a directory, and the old argument points to a file that is not a directory.
- EEXIST -- The new argument points to a directory that already exists.
- ENOTDIR -- The old argument names a directory, and new argument names a non-directory file.
Sets the file to its beginning.
void rewind (FILE *file_ptr); (ISO POSIX-1)
int rewind (FILE *file_ptr); (HP C EXTENSION)
file_ptrA file pointer.
The rewind function is equivalent to fseek (file_ptr, 0, SEEK_SET) . You can use the rewind function with either record or stream files.
A successful call to rewind clears the error indicator for the file.
The ANSI C standard defines rewind as not returning a value; therefore, the function prototype for rewind is declared with a return type of void . However, since a rewind can fail, and since previous versions of the HP C RTL have declared rewind to return an int , the code for rewind does return 0 on success and - 1 on failure.
See also fseek .
Resets the position of the specified directory stream to the beginning of a directory.
void rewinddir (DIR *dir_pointer);
dir_pointerA pointer to the dir structure of an open directory.
The rewinddir function resets the position of the specified directory stream to the beginning of the directory. It also causes the directory stream to refer to the current state of the corresonding directory, the same as using the opendir function. If the dir_pointer argument does not refer to a directory stream, the effect is undefined.
The type DIR , defined in the <dirent.h> header file, represents a directory stream. A directory stream is an ordered sequence of all the directory entries in a particular directory. Directory entries represent files.
See also opendir .
Searches for a character in a string.
#include <strings.h>Function Variants The rindex function has variants named _rindex32 and _rindex64 for use with 32-bit and 64-bit pointer sizes, respectively. See Section 1.10 for more information on using pointer-size-specific functions.
char *rindex (const char *s, int c);
sThe string to search.
cThe character to search for.
The rindex function is identical to the strchr function, and is provided for compatibility with some UNIX implementations.
Rounds its argument to an integral value according to the current IEEE rounding direction specified by the user.
double rint (double x);
float rintf (float x,);
long double rintl (long double x);
xA real number.
The rint functions return the nearest integral value to x in the direction of the current IEEE rounding mode specified on the /ROUNDING_MODE command-line qualifier.
If the current rounding mode rounds toward negative Infinity, then rint is identical to floor . If the current rounding mode rounds toward positive Infinity, then rint is identical to ceil .
If |x| = Infinity, rint returns x.
n The nearest integral value to x in the direction of the current IEEE rounding mode. NaN x is NaN; errno is set to EDOM.
Removes a directory file.
int rmdir (const char *path);
pathA directory pathname.
The rmdir function removes a directory file whose name is specified in the path argument. The directory is removed only if it is empty.
When using OpenVMS format names, the path argument must be in the form directory.dir.
0 Indicates success. - 1 An error occurred; errno is set to indicate the error.
Determines the lowest virtual address that is not used with the program.
void *sbrk (long int incr);
incrThe number of bytes to add to the current break address.
The sbrk function adds the number of bytes specified by its argument to the current break address and returns the old break address.
When a program is executed, the break address is set to the highest location defined by the program and data storage areas. Consequently, sbrk is needed only by programs that have growing data areas.
sbrk(0) returns the current break address.
x The old break address. ( void *)( - 1) Indicates that the program is requesting too much memory.
Unlike other C library implementations, the HP C RTL memory allocation functions (such as malloc ) do not rely on brk or sbrk to manage the program heap space. Consequently, on OpenVMS systems, calling brk or sbrk can interfere with memory allocation routines. The brk and sbrk functions are provided only for compatibility purposes.
Returns the exponent of a floating-point number.
double scalb (double x, double n);
float scalbf (float x, float n);
long double scalbl (long double x, long double n);
xA nonzero floating-point number.
The scalb functions return x*(2**n) for integer n.
x On successful completion, x*(2** n) is returned. ±HUGE_VAL On overflow, scalb returns ±HUGE_VAL (according to the sign of x) and sets errno to ERANGE. 0 Underflow occurred; errno is set to ERANGE. x x is ±Infinity. NaN x or n is NaN; errno is set to EDOM.
Performs formatted input from the standard input ( stdin ), interpreting it according to the format specification. See Chapter 2 for information on format specifiers.
int scanf (const char *format_spec, ...);
format_specPointer to a string containing the format specification. The format specification consists of characters to be taken literally from the input or converted and placed in memory at the specified input sources. For a list of conversion characters, see Chapter 2.
...Optional expressions that are pointers to objects whose resultant types correspond to conversion specifications given in the format specification.
If no conversion specifications are given, you can omit these input pointers. Otherwise, the function call must have at least as many input pointers as there are conversion specifications, and the conversion specifications must match the types of the input pointers.
Conversion specifications are matched to input sources in left-to-right order. Excess input pointers, if any, are ignored.
x The number of successfully matched and assigned input items. EOF Indicates that a read error occurred prior to any successful conversions.The function sets errno . For a list of errno values set by this function, see fscanf .