## File utilities

File utilities

## Synopsis

    #define             GO_F_OK
    enum                GODotDot;
    struct              GOFilePermissions;
    #define             GO_R_OK
    #define             GO_W_OK
    #define             GO_X_OK
    char *              go_basename_from_uri                (const char *uri);
    char *              go_dirname_from_uri                 (const char *uri,
                                                             gboolean brief);
    gint                go_file_access                      (char const *uri,
                                                             gint mode);
    GsfOutput *         go_file_create                      (char const *uri,
                                                             GError **err);
    time_t              go_file_get_date_accessed           (char const *uri);
    time_t              go_file_get_date_changed            (char const *uri);
    time_t              go_file_get_date_modified           (char const *uri);
    gchar *             go_file_get_group_name              (char const *uri);
    gchar *             go_file_get_owner_name              (char const *uri);
    GsfInput *          go_file_open                        (char const *uri,
                                                             GError **err);
    GSList *            go_file_split_urls                  (char const *data);
    char *              go_filename_from_uri                (const char *uri);
    char *              go_filename_simplify                (const char *filename,
                                                             GODotDot dotdot,
                                                             gboolean make_absolute);
    char *              go_filename_to_uri                  (const char *filename);
    GOFilePermissions * go_get_file_permissions             (char const *uri);
    gchar *             go_get_mime_type                    (gchar const *uri);
    gchar *             go_get_mime_type_for_data           (gconstpointer data,
                                                             int data_size);
    gchar *             go_mime_type_get_description        (gchar const *mime_type);
    void                go_set_file_permissions             (char const *uri,
                                                             GOFilePermissions *file_permissions);
    char *              go_shell_arg_to_uri                 (const char *arg);
    gchar const **      go_shell_argv_to_glib_encoding      (gint argc,
                                                             gchar const **argv);
    void                go_shell_argv_to_glib_encoding_free (void);

## Object Hierarchy

      GBoxed
       +----GOFilePermissions

## Description

## Details

### GO_F_OK

    #  define GO_F_OK F_OK

### enum GODotDot

    typedef enum {
    	GO_DOTDOT_SYNTACTIC,    /* Assume no symlinks.  */
    	GO_DOTDOT_TEST,         /* Check.  */
    	GO_DOTDOT_LEAVE         /* Leave alone.  */
    } GODotDot;

`GO_DOTDOT_SYNTACTIC` | assume no symlinks.
`GO_DOTDOT_TEST` | check.
`GO_DOTDOT_LEAVE` | leave alone.

### struct GOFilePermissions

    struct GOFilePermissions {
    	gboolean owner_read;
    	gboolean owner_write;
    	gboolean owner_execute;

    	gboolean group_read;
    	gboolean group_write;
    	gboolean group_execute;

    	gboolean others_read;
    	gboolean others_write;
    	gboolean others_execute;
    };

gboolean `owner_read`; | owner can read.
gboolean `owner_write`; | owner can write.
gboolean `owner_execute`; | owner can execute.
gboolean `group_read`; | group can read.
gboolean `group_write`; | group can write.
gboolean `group_execute`; | group can execute.
gboolean `others_read`; | everybody can read.
gboolean `others_write`; | everybody can write.
gboolean `others_execute`; | everybody can execute.

### GO_R_OK

    #  define GO_R_OK R_OK

### GO_W_OK

    #  define GO_W_OK W_OK

### GO_X_OK

    #  define GO_X_OK X_OK

### go_basename_from_uri ()

    char *              go_basename_from_uri                (const char *uri);

Decode the final path component. Returns as UTF-8 encoded suitable for display.

`uri` : | The uri
Returns : | a string that the caller is responsible for freeing.

### go_dirname_from_uri ()

    char *              go_dirname_from_uri                 (const char *uri,
                                                             gboolean brief);

Decode the all but the final path component. Returns as UTF-8 encoded suitable for display.

`uri` : | target
`brief` : | if TRUE, hide "file://" if present.
Returns : | dirname which the caller is responsible for freeing.

### go_file_access ()

    gint                go_file_access                      (char const *uri,
                                                             gint mode);

### go_file_create ()

    GsfOutput *         go_file_create                      (char const *uri,
                                                             GError **err);

Creates a file or return an error. If the file already exists, it is replaced.

`uri` : | target uri
`err` : | GError
Returns : | non-`NULL` on success. [transfer full]

### go_file_get_date_accessed ()

    time_t              go_file_get_date_accessed           (char const *uri);

### go_file_get_date_changed ()

    time_t              go_file_get_date_changed            (char const *uri);

### go_file_get_date_modified ()

    time_t              go_file_get_date_modified           (char const *uri);

### go_file_get_group_name ()

    gchar *             go_file_get_group_name              (char const *uri);

### go_file_get_owner_name ()

    gchar *             go_file_get_owner_name              (char const *uri);

### go_file_open ()

    GsfInput *          go_file_open                        (char const *uri,
                                                             GError **err);

Try all available methods to open a file or return an error

`uri` : | target uri
`err` : | GError
Returns : | non-`NULL` on success. [transfer full]

### go_file_split_urls ()

    GSList *            go_file_split_urls                  (char const *data);

Splits the chain into a list of URIs. Lines starting with '#' are ignored.

`data` : | a string filled with a list of URIs separated by new lines.
Returns : | the URIs list. [element-type char][transfer full]

### go_filename_from_uri ()

    char *              go_filename_from_uri                (const char *uri);

### go_filename_simplify ()

    char *              go_filename_simplify                (const char *filename,
                                                             GODotDot dotdot,
                                                             gboolean make_absolute);

### go_filename_to_uri ()

    char *              go_filename_to_uri                  (const char *filename);

### go_get_file_permissions ()

    GOFilePermissions * go_get_file_permissions             (char const *uri);

### go_get_mime_type ()

    gchar *             go_get_mime_type                    (gchar const *uri);

`uri` : | the uri.
Returns : | the mime type for the file as a newly allocated string. Needs to be freed with `g_free()`.

### go_get_mime_type_for_data ()

    gchar *             go_get_mime_type_for_data           (gconstpointer data,
                                                             int data_size);

`data` : | the data.
`data_size` : | the data size
Returns : | the mime type for the data as a newly allocated string. Needs to be freed with `g_free()`.

### go_mime_type_get_description ()

    gchar *             go_mime_type_get_description        (gchar const *mime_type);

`mime_type` : | the mime type to describe.
Returns : | the description for the mime type as a newly allocated string. Needs to be freed with `g_free()`. If the description is not found, the mime type itself will be returned.

### go_set_file_permissions ()

    void                go_set_file_permissions             (char const *uri,
                                                             GOFilePermissions *file_permissions);

### go_shell_arg_to_uri ()

    char *              go_shell_arg_to_uri                 (const char *arg);

### go_shell_argv_to_glib_encoding ()

    gchar const **      go_shell_argv_to_glib_encoding      (gint argc,
                                                             gchar const **argv);

Transform arguments to UTF-8 when needed.

`argc` : | arguments number
`argv` : | command line arguments
Returns : | the arguments in UTF-8 locale. [transfer none]

### go_shell_argv_to_glib_encoding_free ()

    void                go_shell_argv_to_glib_encoding_free (void);