---
name: "lfc_listreplica"
section: "3"
platform: "linux"
package: "liblfc-dev"
version: "1.10.0-2+b3"
release: "Debian 10 (Buster)"
platforms: ["linux"]
url: "https://new.carta.tech/lfc_listreplica"
---

# lfc\_listreplica(3)

list replica entries for a given file

## NAME

lfc\_listreplica - list replica entries for a given file

## SYNOPSIS

**#include \<sys/types.h\>**\
 **#include "lfc\_api.h"**

**struct lfc\_filereplica \*lfc\_listreplica (const char \****path***,** **const char \****guid***,** **int** *flags***,** **lfc\_list \****listp***)**

## DESCRIPTION

**lfc\_listreplica** lists replica entries for a given file. This routine returns a pointer to a structure containing the current replica entry.

```
struct lfc_filereplica {
	u_signed64	fileid;
	u_signed64	nbaccesses;
	time_t		atime;		/* last access to replica */
	time_t		ptime;		/* replica pin time */
	char		status;
	char		f_type;		/* 'V' for Volatile, 'P' for Permanent */
	char		poolname[CA_MAXPOOLNAMELEN+1];
	char		host[CA_MAXHOSTNAMELEN+1];
	char		fs[80];
	char		sfn[CA_MAXSFNLEN+1];
};
```

- *path*

  specifies the logical pathname.

- *guid*

  specifies the Grid Unique IDentifier.

- *flags*

  may be one of the following constant:

  - **CNS\_LIST\_BEGIN**

    the first call must have this flag set to allocate buffers and initialize pointers.

  - **CNS\_LIST\_CONTINUE**

    all the following calls must have this flag set.

  - **CNS\_LIST\_END**

    final call to terminate the list and free resources.

## RETURN VALUE

This routine returns a pointer to a structure containing the current replica entry if the operation was successful or NULL if all entries have been returned or if the operation failed. In the latter case, **serrno** is set appropriately.

## EXAMPLES

A C program listing the replicas fo a given sfn could look like:

```
	int flags;
	lfc_list list;
	struct lfc_filereplica *lp;
	flags = CNS_LIST_BEGIN;
	while ((lp = lfc_listreplica (sfn, NULL, flags, &list)) != NULL) {
		flags = CNS_LIST_CONTINUE;
		/* process the entry */
		.....
	}
	(void) lfc_listreplica (sfn, NULL, CNS_LIST_END, &list);
```

## ERRORS

- **ENOENT**

  The named file does not exist.

- **EACCES**

  Search permission is denied on a component of the parent directory.

- **ENOMEM**

  Memory could not be allocated for the output buffer.

- **EFAULT**

  *path* and *guid* are NULL pointers or *listp* is a NULL pointer.

- **ENOTDIR**

  A component of *path* prefix is not a directory.

- **EINVAL**

  The length of *guid* exceeds **CA\_MAXGUIDLEN** or path and guid are both given and they point at a different file.

- **ENAMETOOLONG**

  The length of *path* exceeds **CA\_MAXPATHNAMELEN**.

- **SENOSHOST**

  Host unknown.

- **SENOSSERV**

  Service unknown.

- **SECOMERR**

  Communication error.

- **ENSNACT**

  Name server is not running or is being shutdown.

## SEE ALSO

**[Castor\_limits(4)](/Castor_limits/4.md)**, **[lfc\_addreplica(3)](/lfc_addreplica/3.md)**
