FmDeepCountJob

FmDeepCountJob — Job to gather information about file sizes.

Synopsis

#define             FM_DEEP_COUNT_JOB_TYPE
struct              FmDeepCountJob;
struct              FmDeepCountJobClass;
enum                FmDeepCountJobFlags;
FmDeepCountJob *    fm_deep_count_job_new               (FmPathList *paths,
                                                         FmDeepCountJobFlags flags);
void                fm_deep_count_job_set_dest          (FmDeepCountJob *dc,
                                                         dev_t dev,
                                                         const char *fs_id);

Object Hierarchy

  GObject
   +----FmJob
         +----FmDeepCountJob

Description

include: libfm/fm-deep-count-job.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.

Details

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;
};

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

typedef enum {
    FM_DC_JOB_DEFAULT = 0,
    FM_DC_JOB_FOLLOW_LINKS = 1<<0,
    FM_DC_JOB_SAME_FS = 1<<1,
    FM_DC_JOB_PREPARE_MOVE = 1<<2,
    FM_DC_JOB_PREPARE_DELETE = 1 <<3
} FmDeepCountJobFlags;

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

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.

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.

dc :

a job to set the destination

dev :

UNIX device ID

fs_id :

filesystem id in gio format. [allow-none]

Since 0.1.0