## Name

gfs_pio_open — open a file in the Gfarm file system

## Synopsis

    #include <gfarm/gfarm.h>

`gfarm_error_t gfs_pio_open(` | gfarm_url, |
| flags, |
| gfp`)`; |

`const char * gfarm_url`;
`int flags`;
`GFS_File * gfp`;

## DESCRIPTION

`gfs_pio_open()` opens a file in the Gfarm file system specified by `gfarm_url`, and returns a `GFS_File` structure to the address pointed by `gfp`. `gfarm_url` is a path name in the Gfarm file system, or a Gfarm URL in the form of gfarm://metaserver:port/path/name.

Values of `flags` are constructed by a bitwise-inclusive-OR of the following list. Exactly one of the first three values should be specified:

`GFARM_FILE_RDONLY`

  Open for reading only.

`GFARM_FILE_WRONLY`

  Open for writing only.

`GFARM_FILE_RDWR`

  Open for reading and writing.

`GFARM_FILE_TRUNC`

  If the file already exist and is a regular file, it will be truncated to length 0 if the open mode allows writing.

`GFARM_FILE_APPEND`

  The file is opened in append mode.

`GFARM_FILE_UNBUFFERED`

  The file is accessed without buffering.

## RETURN VALUES

`GFARM_ERR_NO_ERROR`

  The function terminated successfully.

`GFARM_ERR_IS_A_DIRECTORY`

  `gfarm_url` refers to a directory.

`GFARM_ERR_IS_A_SYMBOLIC_LINK`

  `gfarm_url` refers to a symbolic link.

`GFARM_ERR_OPERATION_NOT_PERMITTED`

  `gfarm_url` refers to not a regular file.

`GFARM_ERR_NO_SUCH_OBJECT`

  A component used as a directory in `gfarm_url` does not exist.

`GFARM_ERR_NOT_A_DIRECTORY`

  A component used as a directory in `gfarm_url` is not, in fact, a directory.

`GFARM_ERR_PERMISSION_DENIED`

  The requested access to the file is not allowed, or one of the directories in `gfarm_url` did not allow search (execute) permission. Or, the authentication to the metadata server fails.

`GFARM_ERR_NO_MEMORY`

  Insufficient memory was available.

`GFARM_ERR_INVALID_ARGUMENT`

  `flags` is not valid.

`GFARM_ERR_GFARM_URL_HOST_IS_MISSING`

  `gfarm_url` does not include a metadata server.

`GFARM_ERR_GFARM_URL_PORT_IS_MISSING`

  `gfarm_url` does not include a port number of the metadata server.

`GFARM_ERR_UNKNOWN_HOST`

  The metadata server cannot be resolved.

`GFARM_ERR_TOO_MANY_OPEN_FILES`

  The process opens too many files.

`GFARM_ERR_TOO_MANY_OPEN_FILES_IN_SYSTEM`

  The system limit on the total number of open files has been reached.

`GFARM_ERR_NETWORK_IS_UNREACHABLE`

  Network is unrechable.

`GFARM_ERR_OPERATION_TIMED_OUT`

  Connetion timeout occurs.

`GFARM_ERR_PROTOCOL`

  Protocol error occurs.

`GFARM_ERR_BROKEN_PIPE`

  Connection to the metadata server is broken.

`GFARM_ERR_PROTOCOL_NOT_SUPPORTED`

  Specified authentication protocol is not supported.

`GFARM_ERR_AUTHENTICATION`

  User authentication failed when connecting to the metadata server.

Others

  An error except the above occurred. The reason is shown by gfarm_error_string(3).

## SEE ALSO

gfs_pio_close(3), gfs_pio_create(3), gfs_pio_eof(3), gfs_pio_error(3), gfs_pio_flush(3), gfs_pio_getc(3), gfs_pio_getline(3), gfs_pio_open(3), gfs_pio_putc(3), gfs_pio_putline(3), gfs_pio_puts(3), gfs_pio_read(3), gfs_pio_seek(3), gfs_pio_ungetc(3), gfs_pio_write(3)