doc
|
00001 /* 00002 * libcsync -- a library to sync a directory with another 00003 * 00004 * Copyright (c) 2008 by Andreas Schneider <mail@cynapses.org> 00005 * 00006 * This program is free software; you can redistribute it and/or 00007 * modify it under the terms of the GNU General Public License 00008 * as published by the Free Software Foundation; either version 2 00009 * of the License, or (at your option) any later version. 00010 * 00011 * This program is distributed in the hope that it will be useful, 00012 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 * GNU General Public License for more details. 00015 * 00016 * You should have received a copy of the GNU General Public License 00017 * along with this program; if not, write to the Free Software Foundation, 00018 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 00019 * 00020 * vim: ft=c.doxygen ts=2 sw=2 et cindent 00021 */ 00022 00023 #ifndef _CSYNC_VIO_FILE_STAT_H 00024 #define _CSYNC_VIO_FILE_STAT_H 00025 00026 /* 00027 * cannot include csync_private here because 00028 * that would cause circular inclusion 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 /* _CSYNC_VIO_METHOD_H */