## FmDeepCountJob FmDeepCountJob — Job to gather information about file sizes. |

## Functions

FmDeepCountJob * | fm_deep_count_job_new ()
void | fm_deep_count_job_set_dest ()

## Types and Values

#define | FM_DEEP_COUNT_JOB_TYPE
struct | FmDeepCountJob
struct | FmDeepCountJobClass
enum | FmDeepCountJobFlags

## Object Hierarchy

        GObject
        ╰── FmJob
            ╰── FmDeepCountJob

## Description

`include` : libfm/fm.h

The FmDeepCountJob can be used to recursively gather information about some files and directories content before copy or move. It counts total size of all given files and directories, and size on disk for them. If flags for the job include FM_DC_JOB_PREPARE_MOVE then also count of files to move between volumes will be counted as well.

## Functions

### fm_deep_count_job_new ()

    FmDeepCountJob *
    fm_deep_count_job_new (FmPathList *paths,
                           FmDeepCountJobFlags flags);

Creates a new FmDeepCountJob which can be ran via FmJob API.

#### Parameters

paths | list of files and directories to count sizes |
flags | flags of the counting behavior |

#### Returns

a new FmDeepCountJob object.

[transfer full]

Since: 0.1.0

### fm_deep_count_job_set_dest ()

    void
    fm_deep_count_job_set_dest (FmDeepCountJob *dc,
                                dev_t dev,
                                const char *fs_id);

Sets destination for the job `dc` that will be used when the job is ran with any of flags FM_DC_JOB_SAME_FS or FM_DC_JOB_PREPARE_MOVE. If `dev` is 0 (and `fs_id` is NULL) then destination device is non on native filesystem.

#### Parameters

dc | a job to set the destination |
dev | UNIX device ID |
fs_id | filesystem id in gio format. | [allow-none]

Since: 0.1.0

## Types and Values

### FM_DEEP_COUNT_JOB_TYPE

    #define FM_DEEP_COUNT_JOB_TYPE              (fm_deep_count_job_get_type())

### struct FmDeepCountJob

    struct FmDeepCountJob {
        FmJob parent;
        FmPathList* paths;
        FmDeepCountJobFlags flags;
        goffset total_size;
        goffset total_ondisk_size;
        guint count;
    };

#### Members

FmJob `parent`; | the parent object |
FmPathList *`paths`; | list of paths to count |
FmDeepCountJobFlags `flags`; | flags for counting |
goffset `total_size`; | counted total file size |
goffset `total_ondisk_size`; | counted total file size on disk |
guint `count`; | number of files to be moved between devices |

### struct FmDeepCountJobClass

    struct FmDeepCountJobClass {
    };

### enum FmDeepCountJobFlags

#### Members

FM_DC_JOB_DEFAULT | do deep count for all files/folders |
FM_DC_JOB_FOLLOW_LINKS | don't follow symlinks |
FM_DC_JOB_SAME_FS | only do deep count for files on the same devices. what's the use case of this? |
FM_DC_JOB_PREPARE_MOVE | special handling for moving files. only do deep count for files on different devices |
FM_DC_JOB_PREPARE_DELETE | special handling for deleting files |