csync_vio_file_stat.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef _CSYNC_VIO_FILE_STAT_H
00024 #define _CSYNC_VIO_FILE_STAT_H
00025
00026
00027
00028
00029
00030 #include "c_private.h"
00031
00032 #include <sys/types.h>
00033 #include <sys/stat.h>
00034 #include <unistd.h>
00035 #include <stdint.h>
00036
00037 typedef struct csync_vio_file_stat_s csync_vio_file_stat_t;
00038
00039 enum csync_vio_file_flags_e {
00040 CSYNC_VIO_FILE_FLAGS_NONE = 0,
00041 CSYNC_VIO_FILE_FLAGS_SYMLINK = 1 << 0,
00042 CSYNC_VIO_FILE_FLAGS_LOCAL = 1 << 1
00043 };
00044
00045 enum csync_vio_file_type_e {
00046 CSYNC_VIO_FILE_TYPE_UNKNOWN,
00047 CSYNC_VIO_FILE_TYPE_REGULAR,
00048 CSYNC_VIO_FILE_TYPE_DIRECTORY,
00049 CSYNC_VIO_FILE_TYPE_FIFO,
00050 CSYNC_VIO_FILE_TYPE_SOCKET,
00051 CSYNC_VIO_FILE_TYPE_CHARACTER_DEVICE,
00052 CSYNC_VIO_FILE_TYPE_BLOCK_DEVICE,
00053 CSYNC_VIO_FILE_TYPE_SYMBOLIC_LINK
00054 };
00055
00056 enum csync_vio_file_stat_fields_e {
00057 CSYNC_VIO_FILE_STAT_FIELDS_NONE = 0,
00058 CSYNC_VIO_FILE_STAT_FIELDS_TYPE = 1 << 0,
00059 CSYNC_VIO_FILE_STAT_FIELDS_PERMISSIONS = 1 << 1,
00060 CSYNC_VIO_FILE_STAT_FIELDS_FLAGS = 1 << 2,
00061 CSYNC_VIO_FILE_STAT_FIELDS_DEVICE = 1 << 3,
00062 CSYNC_VIO_FILE_STAT_FIELDS_INODE = 1 << 4,
00063 CSYNC_VIO_FILE_STAT_FIELDS_LINK_COUNT = 1 << 5,
00064 CSYNC_VIO_FILE_STAT_FIELDS_SIZE = 1 << 6,
00065 CSYNC_VIO_FILE_STAT_FIELDS_BLOCK_COUNT = 1 << 7,
00066 CSYNC_VIO_FILE_STAT_FIELDS_BLOCK_SIZE = 1 << 8,
00067 CSYNC_VIO_FILE_STAT_FIELDS_ATIME = 1 << 9,
00068 CSYNC_VIO_FILE_STAT_FIELDS_MTIME = 1 << 10,
00069 CSYNC_VIO_FILE_STAT_FIELDS_CTIME = 1 << 11,
00070 CSYNC_VIO_FILE_STAT_FIELDS_SYMLINK_NAME = 1 << 12,
00071 CSYNC_VIO_FILE_STAT_FIELDS_CHECKSUM = 1 << 13,
00072 CSYNC_VIO_FILE_STAT_FIELDS_ACL = 1 << 14,
00073 CSYNC_VIO_FILE_STAT_FIELDS_UID = 1 << 15,
00074 CSYNC_VIO_FILE_STAT_FIELDS_GID = 1 << 16,
00075 CSYNC_VIO_FILE_STAT_FIELDS_MD5 = 1 << 17,
00076 };
00077
00078
00079 struct csync_vio_file_stat_s {
00080 union {
00081 char *symlink_name;
00082 char *checksum;
00083 } u;
00084
00085 void *acl;
00086 char *name;
00087 char *md5;
00088
00089 uid_t uid;
00090 gid_t gid;
00091
00092 time_t atime;
00093 time_t mtime;
00094 time_t ctime;
00095
00096 off_t size;
00097 off_t blksize;
00098 unsigned long blkcount;
00099
00100 mode_t mode;
00101
00102 dev_t device;
00103 uint64_t inode;
00104 nlink_t nlink;
00105
00106 enum csync_vio_file_stat_fields_e fields;
00107 enum csync_vio_file_type_e type;
00108
00109 enum csync_vio_file_flags_e flags;
00110
00111 void *reserved1;
00112 void *reserved2;
00113 void *reserved3;
00114 };
00115
00116 csync_vio_file_stat_t *csync_vio_file_stat_new(void);
00117
00118 void csync_vio_file_stat_destroy(csync_vio_file_stat_t *fstat);
00119
00120 #endif