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

# dpm\_put(3)

make a set of existing files available for I/O

## NAME

dpm\_put - make a set of existing files available for I/O

## SYNOPSIS

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

**int dpm\_put (int** *nbreqfiles***,** **struct dpm\_putfilereq \****reqfiles***,** **int** *nbprotocols***,** **char \*\****protocols***,** **char \****u\_token***,** **int** *overwrite***,** **time\_t** *retrytime***,** **char \****r\_token***,** **int \****nbreplies***,** **struct dpm\_putfilestatus \*\****filestatuses***)**

## DESCRIPTION

**dpm\_put** makes a set of existing files available for I/O.

The input arguments are:

- *nbreqfiles*

  specifies the number of files belonging to the request.

- *reqfiles*

  specifies the array of file requests (dpm\_putfilereq structures).

```
struct dpm_putfilereq {
	char		*to_surl;
	time_t	lifetime;
	time_t	f_lifetime;
	char		f_type;
	char		s_token[CA_MAXDPMTOKENLEN+1];
	char		ret_policy;
	char		ac_latency;
	u_signed64	requested_size;
};
```

- *nbprotocols*

  specifies the number of protocols.

- *protocols*

  specifies the array of protocols.

- *u\_token*

  specifies the user provided description associated with the request.

- *overwrite*

  if set to 1, it allows to overwrite an existing file.

- *retrytime*

  This field is currently ignored.

The output arguments are:

- *r\_token*

  Address of a buffer to receive the system allocated token. The buffer must be at least CA\_MAXDPMTOKENLEN+1 characters long.

- *nbreplies*

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

- *filestatuses*

  will be set to the address of an array of dpm\_putfilestatus structures allocated by the API. The client application is responsible for freeing the array when not needed anymore.

```
struct dpm_putfilestatus {
	char		*to_surl;
	char		*turl;
	u_signed64	filesize;
	int		status;
	char		*errstring;
	time_t	pintime;
	time_t	f_lifetime;
};
```

## 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

- **EFAULT**

  *reqfiles*, *protocols*, *r\_token*, *nbreplies* or *filestatuses* is a NULL pointer.

- **ENOMEM**

  Memory could not be allocated for marshalling the request.

- **EINVAL**

  *nbreqfiles* or *nbprotocols* is not strictly positive, the protocols are not supported, the length of the user request description is greater than 255 or all file requests have errors.

- **SENOSHOST**

  Host unknown.

- **SEINTERNAL**

  Database error.

- **SECOMERR**

  Communication error.
