|
Compaq C
Compaq C Run-Time Library Reference Manual for
OpenVMS Systems
getopt
A command-line parser that can be used by applications that follow Unix
command-line conventions.
Format
#include <unistd.h> (X/OPEN, POSIX-1)
#include <stdio.h> (X/OPEN, POSIX-2)
int getopt (int argc, char * const argv[], const char
*optstring);
extern char *optarg;
extern int optind, opterr, optopt;
Arguments
argc
The argument count as passed to
main
.
argv
The argument array as passed to
main
.
optstring
A string of recognized option characters. If a character is followed by
a colon, the option takes an argument.
Description
The variable
optind
is the index of the next element of the argv vector to be
processed. It is initialized to 1 by the system, and it is updated by
getopt
when it finishes with each element of argv. When an element of
argv contains multiple option characters, it is unspecified how
getopt
determines which options have already been processed.
The
getopt
function returns the next option character (if one is found) from
argv that matches a character in optstring, if there
is one that matches. If the option takes an argument,
getopt
sets the variable
optarg
to point to the option-argument as follows:
- If the option was the last character in the string pointed to by an
element of argv, then
optarg
contains the next element of argv, and
optind
is incremented by 2. If the resulting value of
optind
is not less than argc,
getopt
returns an error, indicating a missing option-argument.
- Otherwise,
optarg
points to the string following the option character in that element of
argv, and
optind
is incremented by 1.
If one of the following is true,
getopt
returns --1 without changing
optind
:
argv[
optind
] is a NULL pointer
*argv[
optind
] is not the character --
argv[
optind
] points to the string "--"
If argv[
optind
] points to the string "-- --"
getopt
returns --1 after incrementing
optind
.
If
getopt
encounters an option character not contained in optstring, the
question-mark character (?) is returned.
If
getopt
detects a missing argument, the colon character (:) is returned if the
first character of optstring is a colon; otherwise a
question-mark character is returned.
In either of the previous two cases,
getopt
sets the variable
optopt
to the option character that caused the error. If the application has
not set the variable
opterr
to 0 and the first character of optstring is not a colon,
getopt
also prints a diagnostic message to stderr.
Return Values
x
|
The next option character specified on the command line.
A colon is returned if
getopt
detects a missing argument and the first character of
optstring is a colon.
A question mark is returned if
getopt
encounters an option character not in
optstring or detects a missing argument and the first
character of
optstring is not a colon.
|
--1
|
When all command-line options are parsed.
|
Example
The following example shows how you might process the arguments for a
utility that can take the mutually exclusive options a and
b and the options f and o, both of which
require arguments:
#include <unistd.h>
int main (int argc, char *argv[ ])
{
int c;
int bflg, aflg, errflg;
char *ifile;
char *ofile;
extern char *optarg;
extern int optind, optopt;
.
.
.
while ((c = getopt(argc, argv, ":abf:o:)) != -1) {
switch (c) {
case 'a':
if (bflg)
errflg++;
else
aflg++;
break;
case 'b':
if (aflg)
errflg++;
else {
bflg++;
bproc();
}
break;
case 'f':
ifile = optarg;
break;
case 'o':
ofile = optarg;
break;
case ':': /* -f or -o without operand */
fprintf (stderr,
"Option -%c requires an operand\n"' optopt);
errflg++;
break;
case '?':
fprintf (stderr,
"Unrecognized option -%c\n"' optopt);
errflg++;
}
}
if (errflg) {
fprintf (stderr, "usage: ...");
exit(2);
}
for ( ; optind < argc; optind++) {
if (access(argv[optind], R_OK)) {
.
.
.
}
|
This sample code accepts any of the following as equivalent:
cmd -ao arg path path
cmd -a -o arg path path
cmd -o arg -a path path
cmd -a -o arg -- path path
cmd -a -oarg path path
cmd -aoarg path path
|
getpagesize
Gets the system page size.
Format
#include <unistd.h>
int getpagesize (void);
Description
This function returns the number of bytes in a page. The system page
size is useful for specifying arguments to memory management system
calls.
The page size is a system page size and is not necessarily the same as
the underlying hardware page size.
Return Values
x
|
Always indicates success. Returns the number of bytes in a page.
|
getpid
Returns the process ID of the current process.
Format
#include <unistd.h>
pid_t getpid (void);
Return Value
x
|
The process ID of the current process.
|
getppid
Returns the parent process ID of the calling process.
Format
#include <unistd.h>
pid_t getppid (void);
Return Values
x
|
The parent process ID.
|
0
|
Indicates that the calling process does not have a parent process.
|
getpwent
Accesses user entry information in the user database.
Format
#include <stdio.h>
#include <pwd.h>
struct passwd *getpwent (void);
Arguments
passwd
The password structure where you write the user attributes.
Description
This function accesses basic user attributes about a specified user.
The function returns the next user entry in a sequential search.
The
passwd
structure is defined in the
<pwd.h>
header file as follows:
pw_name
|
The name of the user.
|
pw_passwd
|
The encrypted password of the user.
|
pw_uid
|
The ID of the user.
|
pw_gid
|
The group ID of the principle group of the user.
|
pw_pecos
|
The personal information about the user.
|
pw_dir
|
The home directory of the user.
|
pw_shell
|
The initial program for the user.
|
Note
All information generated by the
getpwent
function is stored in a per-thread static area and is overwritten on
subsequent calls to the function.
Password file entries that are too long are ignored.
|
Return Values
x
|
A pointer to a valid password structure.
|
NULL
|
Indicates an error.
|
getpwnam
Accesses user-name information in the user database.
Format
#include <pwd.h>
struct passwd *getpwnam (const char name);
Arguments
name
The name of the user for which the attributes are to be read.
Description
This function returns the first user entry in the database with the
pw_name
member of the
passwd
structure that matches the name argument.
The
passwd
structure is defined in the
<pwd.h>
header file as follows:
pw_name
|
The user's login name.
|
pw_uid
|
The numerical user ID.
|
pw_gid
|
The numerical group ID.
|
pw_dir
|
The home directory of the user.
|
pw_shell
|
The initial program for the user.
|
Note
All information generated by the
getpwnam
function is stored in a static area and is overwritten on subsequent
calls to the function.
|
Return Values
x
|
A pointer to a valid password structure.
|
NULL
|
An error occurred.
errno
is set to indicate the error.
|
getpwuid
Accesses user-ID information in the rights database.
Format
#include <pwd.h>
struct passwd *getpwuid (uid_t uid);
Arguments
uid
The ID of the user for which the attributes are to be read.
Description
This function accesses the identifier names of all identifiers in the
rights database. It returns the first user entry in the rights database
with a
pw_uid
member of the
passwd
structure that matches the uid argument.
The
passwd
structure is defined in the
<pwd.h>
header file as follows:
pw_name
|
The user's login name.
|
pw_uid
|
The numerical user ID.
|
pw_gid
|
The numerical group ID.
|
pw_dir
|
The home directory of the user.
|
pw_shell
|
The initial program for the user.
|
To check for error situations, applications should set
errno
to zero before calling
getpwuid
. If
errno
is nonzero on return, then an error occurred.
Note
All information generated by the
getpwuid
function is stored in a per-thread static area and is overwritten on
subsequent calls to the function.
|
Return Values
x
|
A pointer to a valid password structure.
|
NULL
|
An error occurred.
errno
is set to indicate the error.
|
gets
Reads a line from the standard input (stdin).
Format
#include <stdio.h>
char *gets (char *str);
Function Variants This function also has variants named
_gets32
and
_gets64
for use with 32-bit and 64-bit pointer sizes, respectively. See
Section 1.10 for more information on using pointer-size-specific
functions.
Argument
str
A pointer to a character string that is large enough to hold the
information fetched from stdin.
Description
The new-line character (\n) that ends the line is replaced by the
function with an ASCII null character (\0).
When stdin is opened in record mode,
gets
treats the end of a record the same as a new-line character and,
therefore, reads up to and including a new-line character or to the end
of the record.
Return Values
x
|
A pointer to the
str argument.
|
NULL
|
Indicates that an error has occurred or that the end-of-file was
encountered before a new-line character was encountered. The contents of
str are undefined if a read error occurs.
|
[w]getstr
Get a string from the terminal screen, store it in the variable
str, and echo it on the specified window. The
getstr
function works on the
stdscr
window.
Format
#include <curses.h>
int getstr (char *str);
int wgetstr (WINDOW *win, char *str);
Arguments
win
A pointer to the window.
str
Must be large enough to hold the character string fetched from the
window.
Description
The
getstr
and
wgetstr
functions refresh the specified window before fetching a string. The
new-line terminator is stripped from the fetched string. 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.
|
gettimeofday
Gets date and time.
Format
#include <time.h>
int gettimeofday (struct timeval *tp, void *tpz);
Arguments
tp
Pointer to a
timeval
structure, defined in the
<time.h>
header file.
tpz
A NULL pointer. If this argument is not a NULL pointer, it is ignored.
Description
This function gets the current time (expressed as seconds and
microseconds) since 00::00 Coordinated Universal Time, January 1, 1970.
The current time is stored in the
timeval
structure pointed to by the tp argument.
The tzp argument is intended to hold time-zone information set
by the kernel. However, because the OpenVMS kernel does not set
time-zone information, the tzp argument should be NULL. If it
is not NULL, it is ignored. This function is supported for
compatibility with BSD programs.
If the value of the SYS$TIMEZONE_DIFFERENTIAL logical is wrong, the
function fails with
errno
set to EINVAL.
Return Values
0
|
Indicates success.
|
--1
|
An error occurred.
errno
is set to indicate the error.
|
getuid
With POSIX IDs disabled, equivalent to
geteuid
and returns the member number (in OpenVMS terms) from the user
identification code (UIC).
With POSIX IDs enabled, returns the real user ID.
Format
#include <unistd.h>
uid_t getuid (void);
Description
This function can be used with POSIX-style identifiers or with
UIC-based identifiers.
Note
Currently, POSIX-style IDs are supported only by some OpenVMS versions
done for specific government agencies, but will be integrated into
future OpenVMS releases. OpenVMS Version 7.3-1 does not support
POSIX-style IDs, but it does support 32-bit identifiers.
|
With POSIX-style IDs disabled (the default), the
geteuid
and
getuid
functions are equivalent and return the member number from the current
UIC as follows:
- For programs compiled with the _VMS_V6_SOURCE feature-test macro or
programs that do not include the
<unistd.h>
header file, the
getuid
and
geteuid
functions return the member number of the OpenVMS UIC. For example, if
the UIC is [313,31], then the member number, 31, is returned.
- For programs compiled without the _VMS_V6_SOURCE feature-test macro
that do include the
<unistd.h>
header file, the full UIC is returned. For example, if the UIC is [313,
31] then 20512799 (31 + 313 * 65536) is returned.
With POSIX-style IDs enabled,
geteuid
returns the effective user ID of the calling process, and
getuid
returns the real user ID of the calling process.
See also
getegid
and
getgid
in this section.
Return Value
x
|
The real user ID (POSIX IDs enabled), or the member number from the
current UIC or the full UIC (POSIX IDs disabled).
|
getw
Returns characters from a specified file.
Format
#include <stdio.h>
int getw (FILE *file_ptr);
Argument
file_ptr
A pointer to the file to be accessed.
Description
This function returns the next four characters from the specified input
file as an
int
.
Return Values
x
|
The next four characters, in an
int
.
|
EOF
|
Indicates that the end-of-file was encountered during the retrieval of
any of the four characters and all four characters were lost. Since EOF
is an acceptable integer, use
feof
and
ferror
to check the success of the function.
|
getwc
Reads the next character from a specified file, and converts it to a
wide-character code.
Format
#include <wchar.h>
wint_t getwc (FILE *file_ptr);
Arguments
file_ptr
A pointer to the file to be accessed.
Description
Since
getwc
is implemented as a macro, a file pointer argument with side effects
(for example
getwc (*f++)
) might be evaluated incorrectly. In such a case, use the
fgetwc
function instead. See the
fgetwc
function in this section.
Return Values
n
|
The returned character.
|
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.
|
|
|
|