---
name: "pmGetHighResArchiveEnd"
section: "3"
platform: "linux"
package: "libpcp3-dev"
version: "6.3.8-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/pmGetArchiveEnd"
---

# pmGetHighResArchiveEnd(3)

locate logical end of file for a set of archives

Part of [pmGetArchiveEnd(3)](/pmGetArchiveEnd/3.md).

## NAME

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

## C SYNOPSIS

**#include \<pcp/pmapi.h\>**

```
int pmGetArchiveEnd(struct timeval *tp);
int pmGetHighResArchiveEnd(struct timespec *tp);
```

**cc ... -lpcp**

## DESCRIPTION

Assuming the current PMAPI context is associated with a set of archives, **pmGetArchiveEnd** and **pmGetHighResArchiveEnd** 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)](/pmSetMode/3.md) or [**pmSetModeHighRes**(3)](/pmSetModeHighRes/3.md) 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)](/pmlogger/1.md) 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** and **pmGetHighResArchiveEnd** 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-defined.

Both **pmGetArchiveEnd** and **pmGetHighResArchiveEnd** preserve the positioning state of the archive file prior to this function call.

## DIAGNOSTICS

- **PM\_ERR\_NOCONTEXT**

  the current PMAPI context is either invalid, or not associated 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 parameterize the file and directory names used by PCP. On each installation, the file */etc/pcp.conf* contains the local values for these variables. The **$PCP\_CONF** variable may be used to specify an alternative configuration file, as described in [**pcp.conf**(5)](/pcp.conf/5.md). Values for these variables may be obtained programmatically using the [**pmGetConfig**(3)](/pmGetConfig/3.md) function.

## SEE ALSO

[**PMAPI**(3)](/PMAPI/3.md), [**pmFetch**(3)](/pmFetch/3.md), [**pmFetchArchive**(3)](/pmFetchArchive/3.md), [**pmFetchHighRes**(3)](/pmFetchHighRes/3.md), [**pmFetchHighResArchive**(3)](/pmFetchHighResArchive/3.md), [**pmGetArchiveLabel**(3)](/pmGetArchiveLabel/3.md), [**pmGetConfig**(3)](/pmGetConfig/3.md), [**pmGetHighResArchiveLabel**(3)](/pmGetHighResArchiveLabel/3.md), [**pmSetMode**(3)](/pmSetMode/3.md), [**pmSetModeHighRes**(3)](/pmSetModeHighRes/3.md), [**pcp.conf**(5)](/pcp.conf/5.md) and [**pcp.env**(5)](/pcp.env/5.md).
