# pmgetarchiveend

## NAME



           **pmGetArchiveEnd** - locate logical end of file for a set of archives
    


## C SYNOPSIS



           **#include <pcp/pmapi.h>**
    
           **int pmGetArchiveEnd(struct timespec ***_tp_**);**
    
           **cc ... -lpcp**
    


## DESCRIPTION



           Assuming  the  current  PMAPI  context is associated with a set of
           archives, **pmGetArchiveEnd** will attempt to find the logical end  of
           file  (after the last complete record in the set of archives), and
           return the last recorded timestamp via _tp_.  This timestamp may  be
           passed  to  pmSetMode(3)  to  reliably position the context at the
           last valid archive record,  e.g.  in  preparation  for  subsequent
           reading in reverse chronological order.
    
           For archives that are not concurrently being written, the physical
           end  of file and the logical end of file are co-incident.  However
           if an archive is being written by pmlogger(1) at the same time  an
           application is trying to read the archive, the logical end of file
           may be before the physical end of file due to write buffering that
           is not aligned with the logical record boundaries.
    
           **pmGetArchiveEnd** return  an error less than zero if the context is
           neither valid, nor associated with a set of archives, or  the  set
           of  archives  is seriously corrupted.  Otherwise, the return value
           is 0 if there has been no change of state since the last call,  or
           1 if the logical end of file has advanced since the last call.
    
           In the absence of an error, the result returned via _tp_ is well-de‐
           fined.
    
           Both **pmGetArchiveEnd** preserve the positioning state of the archive
           file prior to this function call.
    


## COMPATIBILITY



           Prior  to  PCP  7.0  and  _libpcp.so.4_ the _tp_ argument was a struct
           timeval.  To support PMAPI transition, the old interface  and  se‐
           mantics can be used if applications are linked with _libpcp.so.3_ or
           recompiled with **-DPMAPI_VERSION=2**.
    
           For  a time in PCP 6.x there was a routine with the same semantics
           as the current **pmGetArchiveEnd** called **pmGetHighResArchiveEnd** ,  al‐
           though this is now deprecated and compile-time support for **pmGetH‐**
           **ighResArchiveEnd** will be removed in a future release.
    


## DIAGNOSTICS



           **PM_ERR_NOCONTEXT**
                  the current PMAPI context is either invalid, or not associ‐
                  ated with a set of archives
    
           **PM_ERR_LOGREC**
                  the set of archives is sufficiently damaged, that not a
                  single valid record can be found
    


## PCP ENVIRONMENT



           Environment variables with the prefix **PCP_** are used to parameter‐
           ize the file and directory names used by PCP.  On each installa‐
           tion, the file _/etc/pcp.conf_ contains the local values for these
           variables.  The **$PCP_CONF** variable may be used to specify an al‐
           ternative configuration file, as described in pcp.conf(5).  Values
           for these variables may be obtained programmatically using the
           pmGetConfig(3) function.
    


* * *