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 };
00076
00077
00078 struct csync_vio_file_stat_s {
00079 union {
00080 char *symlink_name;
00081 char *checksum;
00082 } u;
00083
00084 void *acl;
00085 char *name;
00086
00087 uid_t uid;
00088 gid_t gid;
00089
00090 time_t atime;
00091 time_t mtime;
00092 time_t ctime;
00093
00094 off_t size;
00095 off_t blksize;
00096 unsigned long blkcount;
00097
00098 mode_t mode;
00099
00100 dev_t device;
00101 uint64_t inode;
00102 nlink_t nlink;
00103
00104 enum csync_vio_file_stat_fields_e fields;
00105 enum csync_vio_file_type_e type;
00106
00107 enum csync_vio_file_flags_e flags;
00108
00109 void *reserved1;
00110 void *reserved2;
00111 void *reserved3;
00112 };
00113
00114 csync_vio_file_stat_t *csync_vio_file_stat_new(void);
00115
00116 void csync_vio_file_stat_destroy(csync_vio_file_stat_t *fstat);
00117
00118 #endif