---
title: "fd_filestat_set_times()"
description: "The fd_filestat_set_times() function is used to set the timestamp metadata on a file identified by a file descriptor. It allows modifying the last accessed time (st_atim) and last modified time (st_mtim) of the file. The function also provides a bit-vector (fst_flags) to control which times should be set."
url: "https://wasix.org/docs/api-reference/wasi/fd_filestat_set_times/"
markdown: "https://wasix.org/docs/api-reference/wasi/fd_filestat_set_times.md"
---

# `fd_filestat_set_times()`

Set timestamp metadata on a file.

## Description

The `fd_filestat_set_times()` function is used to set the timestamp metadata on a file identified by a file descriptor. It allows modifying the last accessed time (`st_atim`) and last modified time (`st_mtim`) of the file. The function also provides a bit-vector (`fst_flags`) to control which times should be set.

In POSIX systems, files have associated timestamp metadata that stores information about the file’s access and modification times. The `fd_filestat_set_times()` function enables applications to update these timestamps. It allows setting the last accessed and last modified times to specific values or using the current time.

## Syntax

```ebnf
  ;;; Note: This is similar to `futimens` in POSIX.
  ;;; Adjust the timestamps of an open file or directory.
  (@interface func (export "fd_filestat_set_times")
    (param $fd $fd)
    ;;; The desired values of the data access timestamp.
    (param $atim $timestamp)
    ;;; The desired values of the data modification timestamp.
    (param $mtim $timestamp)
    ;;; A bitmask indicating which timestamps to adjust.
    (param $fst_flags $fstflags)
    (result $error (expected (error $errno)))
  )
```

## Parameters

- `ctx`: A mutable reference to the function environment.
- `fd`: The file descriptor of the file to set the timestamp metadata.
- `st_atim`: The last accessed time to set.
- `st_mtim`: The last modified time to set.
- `fst_flags`: A bit-vector that controls which times to set.

## Return Value

The function returns an `Errno` value indicating the success or failure of the operation.

## Logging

This function has been instrumented with debug-level logging. It will log the following information:

- `%fd`: The file descriptor being modified.
- `%st_atim`: The last accessed time being set.
- `%st_mtim`: The last modified time being set.

## Note

The `fd_filestat_set_times()` function allows setting the timestamp metadata of a file identified by the provided file descriptor. Applications can specify the last accessed and last modified times using the provided parameters. The `fst_flags` bit-vector is used to control which times should be set.

Please note that if both `SET_ATIM` and `SET_ATIM_NOW` flags are set, or if both `SET_MTIM` and `SET_MTIM_NOW` flags are set in `fst_flags`, the function will return `Errno::Inval`.

---

[Documentation index](https://wasix.org/llms.txt) · [HTML version](https://wasix.org/docs/api-reference/wasi/fd_filestat_set_times/)
