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

# dpns\_registerfiles(3)

register list of files with their corresponding replica entry

## NAME

dpns\_registerfiles - register list of files with their corresponding replica entry

## SYNOPSIS

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

**int dpns\_registerfiles (int** *nbfiles***,** **struct dpns\_filereg \****files***,** **int \****nbstatuses***,** **int \*\****statuses***)**

## DESCRIPTION

**dpns\_registerfiles** registers a list of files with their corresponding replica entry. If the lfn is already registered, the guid is optional and only the  replica is added (after checking that filesize and possibly checksum match). If the lfn is not registered yet, the guid is mandatory for the LFC. The lfn and the replica get registered.

- *nbfiles*

  specifies the number of files in the array *files*.

- *files*

  is a pointer to an array of dpns\_filereg structures provided by the application.

```
struct dpns_filereg {
	char		*lfn;
	char		*guid;
	mode_t		mode;
	u_signed64	size;
	char		*csumtype;
	char		*csumvalue;
	char		*server;
	char		*sfn;
};
```

- *nbstatuses*

  will be set to the number of replies in the array of statuses.

- *statuses*

  will be set to the address of an array of integer statuses allocated by the API. The client application is responsible for freeing the array when not needed anymore. Individual statuses are 0 if the operation was successful or set to the serrno value in case of error.

## RETURN VALUE

This routine returns 0 if the operation was successful or -1 if the operation failed. In the latter case, **serrno** is set appropriately.

## ERRORS

- **ENOENT**

  A component of *lfn* prefix does not exist or *lfn* is a null pathname.

- **E2BIG**

  Request too large (max 1 MB).

- **ENOMEM**

  Memory could not be allocated for marshalling the request or unmarshalling the reply.

- **EACCES**

  Search permission is denied on a component of the *lfn* prefix or the file does not exist and write permission on the parent directory is denied or write permission on the file itself is denied.

- **EFAULT**

  *files*, *nbstatuses* or *statuses* is a NULL pointer.

- **EEXIST**

  The *sfn* exists already.

- **ENOTDIR**

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

- **EISDIR**

  The *lfn* exists already and is not a regular file.

- **EINVAL**

  *nbfiles* is not strictly positive, the length of one of the *guids* exceeds **CA\_MAXGUIDLEN** or the length of *server* exceeds **CA\_MAXHOSTNAMELEN** or lfn and guid are both given and they point at a different file.

- **ENOSPC**

  The name server database is full.

- **ENAMETOOLONG**

  The length of *lfn* exceeds **CA\_MAXPATHLEN** or the length of an *lfn* component exceeds **CA\_MAXNAMELEN** or the length of *sfn* exceeds **CA\_MAXSFNLEN**.

- **SENOSSERV**

  Service unknown.

- **SEINTERNAL**

  Database error.

- **SECOMERR**

  Communication error.

- **ENSNACT**

  Name server is not running or is being shutdown.

## SEE ALSO

**[Castor\_limits(4)](/Castor_limits/4.md)**, **[dpns\_addreplica(3)](/dpns_addreplica/3.md)**, **[dpns\_creat(3)](/dpns_creat/3.md)**, **[dpns\_setfsize(3)](/dpns_setfsize/3.md)**

## AUTHOR

**LCG Grid Deployment** Team
