| Sun-Solaris-Exacct documentation | view source | Contained in the Sun-Solaris-Exacct distribution. |
Sun::Solaris::Exacct::File - exacct file manipulation
use Sun::Solaris::Exacct::File qw(:ALL); my $ea_file = Sun::Solaris::Exacct::File->new($myfile, &O_RDONLY); my $ea_obj = $ea_file->get();
This module provides access to the libexacct(3LIB) functions that
manipulate accounting files. The interface is object-oriented and allows the
creation and reading of libexacct files. The C library calls wrapped by this
module are ea_open(3EAXACCT), ea_close(3EAXACCT),
ea_next_object(3EAXACCT), ea_previous_object(3EAXACCT),
ea_write_object(3EAXACCT), ea_get_object(3EAXACCT),
ea_get_creator(3EAXACCT), and ea_get_hostname(3EAXACCT). The file read
and write methods all operate on Sun::Solaris::Exacct::Object objects and
perform all the necessary memory management, packing, unpacking, and structure
conversions that are required.
EO_HEAD, EO_TAIL, EO_NO_VALID_HDR, EO_POSN_MSK, and
EO_VALIDATE_MSK. Other constants needed by the new() method below are in
the standard Perl Fcntl module.
None.
new($name, $oflags, creator => $creator,
aflags => $aflags, mode => $mode)
This method opens a libexacct file as specified by the mandatory parameters
$name and $oflags, and returns a Sun::Solaris::Exacct::File object,
or undef if an error occurs. The parameters $creator, $aflags, and
$mode are optional and are passed as (name = value)> pairs. The only
valid values for $oflags are the combinations of O_RDONLY, O_WRONLY,
O_RDWR, and O_CREAT described below.
The $creator parameter is a string describing the creator of the file. If
it is required (for instance, when writing to a file) but absent, it is set to
the string representation of the caller's UID. The $aflags parameter
describes the required positioning in the file for O_RDONLY access: either
EO_HEAD or EO_TAIL are allowed. If absent, EO_HEAD is assumed. The
$mode parameter is the file creation mode and is ignored unless O_CREAT
is specified in $oflags. If $mode is unspecified, the file creation mode
is set to 0666 (octal). If an error occurs, it can be retrieved with the
Sun::Solaris::Exacct::ea_error() function.
(See Sun::Solaris::Exacct(3)).
$oflags $aflags Action
O_RDONLY Absent or EO_HEAD Open for reading
at the start of
the file.
O_RDONLY EO_TAIL Open for reading
at the end of the
file.
O_WRONLY Ignored File must exist,
open for writing
at the end of the
file.
O_WRONLY | O_CREAT Ignored Create file if it
does not exist,
otherwise truncate
and open for writing.
O_RDWR Ignored File must exist,
open for
reading/writing,
positioned at the
end of the file.
O_RDWR | O_CREAT Ignored Create file if it
does not exist,
otherwise truncate
and open for
reading/writing.
Note: Closing a Sun::Solaris::Exacct::File
There is no explicit close() method for a Sun::Solaris::Exacct::File.
The file is closed when the file handle object is undefined or reassigned.
creator()
This method returns a string containing the creator of the file or undef if
the file does not contain the information.
hostname()
This method returns a string containing the hostname on which the file was
created, or undef if the file does not contain the information.
next()
This method reads the header information of the next record in the file. In a
scalar context the value of the type field is returned as a dual-typed scalar
that will be one of EO_ITEM, EO_GROUP, or EO_NONE. In a list context
it returns a two-element list containing the values of the type and catalog
fields. The type element is a dual-typed scalar. The catalog element is
blessed into the Sun::Solaris::Exacct::Catalog class. If an error occurs,
undef or (undef, undef) is returned depending upon context. The status
can be accessed with the Sun::Solaris::Exacct::ea_error() function. (See
Sun::Solaris::Exacct(3)).
previous()
This method reads the header information of the previous record in the file.
In a scalar context it returns the type field. In a list context it returns
the two element list containing the values of the type and catalog fields, in
the same manner as the next() method. Error are also returned in the same
manner as the next() method.
get()
This method reads in the libexacct record at the current position in the file
and returns a Sun::Solaris::Exacct::Object containing the unpacked data
from the file. This object can then be further manipulated using its methods.
In case of error undef is returned and the error status is made available
with the Sun::Solaris::Exacct::ea_error() function. After this operation,
the position in the file is set to the start of the next record in the file.
write(@ea_obj)
This method converts the passed list of Sun::Solaris::Exacct::Objects into
libexacct file format and appends them to the libexacct file, which must be
open for writing. This method returns true if successful and false
otherwise. On failure the error can be examined with the
Sun::Solaris::Exacct::ea_error() function.
By default nothing is exported from this module. The following tags can be used to selectively import constants defined in this module:
:CONSTANTS EO_HEAD, EO_TAIL, EO_NO_VALID_HDR, EO_POSN_MSK, and
EO_VALIDATE_MSK
:ALL :CONSTANTS, Fcntl(:DEFAULT).
See attributes(5) for descriptions of the following attributes:
___________________________________________________________ | ATTRIBUTE TYPE | ATTRIBUTE VALUE | |_____________________________|_____________________________| | Availability | SUNWpl5u | |_____________________________|_____________________________| | Interface Stability | CPAN (http://www.cpan.org) | |_____________________________|_____________________________|
ea_close(3EXACCT), ea_get_creator(3EXACCT), ea_get_hostname(3EXACCT),
ea_get_object(3EXACCT), ea_next_object(3EXACCT), ea_open(3EXACCT),
ea_previous_object(3EXACCT), ea_write_object(3EXACCT),
Sun::Solaris::Exacct(3), Sun::Solaris::Exacct::Catalog(3),
Sun::Solaris::Exacct::Object(3), Sun::Solaris::Exacct::Object::Group(3),
Sun::Solaris::Exacct::Object::Item(3), libexacct(3LIB), attributes(5)
| Sun-Solaris-Exacct documentation | view source | Contained in the Sun-Solaris-Exacct distribution. |