3 Sep 2015
gfs_pio_open 3 Gfarm
gfs_pio_open open a file in the Gfarm file system

    #include <gfarm/gfarm.h>

`gfarm_error_t gfs_pio_open` 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.

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