## GCabFolder GCabFolder — A Cabinet folder |

## Stability Level

Stable, unless otherwise indicated

## Functions

GCabFolder * | gcab_folder_new ()
gboolean | gcab_folder_add_file ()
GSList * | gcab_folder_get_files ()
guint | gcab_folder_get_nfiles ()
gint | gcab_folder_get_comptype ()
GCabFile * | gcab_folder_get_file_by_name ()

## Types and Values

enum | GCabCompression
| GCabFolder

## Includes

    #include <libgcab.h>

## Description

A GCabFolder is a handle to a folder within the Cabinet archive. A Cabinet folder is not like a directory. It is a sub-container grouping GCabFiles together, sharing some common settings like the compression method.

You can retrieve the files within a folder with `gcab_folder_get_files()`.

In order to add a file to a folder for creation, use `gcab_folder_add_file()`.

## Functions

### gcab_folder_new ()

    GCabFolder *
    gcab_folder_new (gint comptype);

Creates a new empty Cabinet folder. Use `gcab_folder_add_file()` to add files to an archive.

A Cabinet folder is not a file path, it is a container for files.

#### Parameters

comptype | compression to used in this folder |

#### Returns

a new GCabFolder

### gcab_folder_add_file ()

    gboolean
    gcab_folder_add_file (GCabFolder *cabfolder,
                          GCabFile *cabfile,
                          gboolean recurse,
                          GCancellable *cancellable,
                          GError **error);

Add `file` to the GCabFolder.

#### Parameters

cabfolder | a GCabFolder |
cabfile | file to be added |
recurse | whether to recurse through subdirectories |
cancellable | optional GCancellable object, `NULL` to ignore. | [allow-none]
error | GError to set on error, or `NULL`. | [allow-none]

#### Returns

`TRUE` on succes

### gcab_folder_get_files ()

    GSList *
    gcab_folder_get_files (GCabFolder *cabfolder);

Get the list of GCabFile files contained in the `cabfolder` .

#### Parameters

cabfolder | a GCabFolder |

#### Returns

list of files.

[element-type GCabFile][transfer container]

### gcab_folder_get_nfiles ()

    guint
    gcab_folder_get_nfiles (GCabFolder *cabfolder);

Get the number of files in this `folder` .

#### Parameters

cabfolder | a GCabFolder |

#### Returns

a guint

### gcab_folder_get_comptype ()

    gint
    gcab_folder_get_comptype (GCabFolder *cabfolder);

Returns the compression used in this folder.

#### Parameters

cabfolder | a GCabFolder |

#### Returns

a GCabCompression, e.g. `GCAB_COMPRESSION_MSZIP`

Since: 1.0

### gcab_folder_get_file_by_name ()

    GCabFile *
    gcab_folder_get_file_by_name (GCabFolder *cabfolder,
                                  const gchar *name);

Gets a specific GCabFile files contained in the `cabfolder` .

#### Parameters

cabfolder | a GCabFolder |
name | a file name |

#### Returns

A GCabFile, or `NULL` if not found.

[transfer none]

## Types and Values

### enum GCabCompression

Compression used by the GCabFolder.

#### Members

GCAB_COMPRESSION_NONE | No compression. |
GCAB_COMPRESSION_MSZIP | MSZIP compression. |
GCAB_COMPRESSION_QUANTUM | QUANTUM compression (unsupported). |
GCAB_COMPRESSION_LZX | LZX compression (only decompression supported). |
GCAB_COMPRESSION_MASK | compression value mask. |

### GCabFolder

    typedef struct _GCabFolder GCabFolder;

An opaque object, referencing a folder in a Cabinet.

## See Also

GCabFolder