---
name: "Access"
section: "3tcl"
platform: "linux"
package: "tcl8.3-doc"
version: "8.3.5-13"
release: "Debian 5.0 (Lenny)"
platforms: ["linux"]
url: "https://new.carta.tech/Access/3tcl"
---

# Access(3tcl)

check file permissions and other attributes

```

```

## NAME

Tcl\_Access, Tcl\_Stat - check file permissions and other attributes

## SYNOPSIS

```
#include <tcl.h>

int
Tcl_Access(path, mode)

int
Tcl_Stat(path, statPtr)
```

## ARGUMENTS

- char *\*path* (in)

  Native name of the file to check the attributes of.

- int *mode* (in)

  Mask consisting of one or more of R\_OK, W\_OK, X\_OK and F\_OK.  R\_OK, W\_OK and X\_OK request checking whether the file exists and  has  read, write and  execute  permissions, respectively.  F\_OK just requests checking for the existence of the file.

- stat *\*statPtr* (out)

  The structure that contains the result.

  ```

  ```

## DESCRIPTION

There are two reasons for calling **Tcl\_Access** and **Tcl\_Stat** rather than calling system level functions **access** and **stat** directly.  First, the Windows implementation of both functions fixes some bugs in the system level calls.  Second, both **Tcl\_Access** and **Tcl\_Stat** (as well as **Tcl\_OpenFileChannelProc**) hook into a linked list of functions.  This allows the possibity to reroute file access to alternative media or access methods.

**Tcl\_Access** checks whether the process would be allowed to read, write or test for existence of the file (or other file system object) whose name is pathname.   If pathname is a symbolic link on Unix, then permissions of the file referred by this symbolic link are tested.

On success (all requested permissions granted), zero is returned.  On error (at least one bit in mode asked for a permission that is denied, or some other  error occurred), -1 is returned.

**Tcl\_Stat** fills the stat structure *statPtr* with information about the specified file.  You do not need any access rights to the file to get this information but you need search rights to all directories named in the path leading to the file.  The stat structure includes info regarding device, inode (always 0 on Windows), priviledge mode, nlink (always 1 on Windows), user id (always 0 on Windows), group id (always 0 on Windows), rdev (same as device on Windows), size, last access time, last modification time, and creation time.

If *path* exists, **Tcl\_Stat** returns 0 and the stat structure is filled with data.  Otherwise, -1 is returned, and no stat info is given.

## KEYWORDS

stat, access
