csync_vio_file_stat.h

Go to the documentation of this file.
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 #include <sys/types.h>
00027 #include <sys/stat.h>
00028 #include <unistd.h>
00029 
00030 typedef struct csync_vio_file_stat_s csync_vio_file_stat_t;
00031 
00032 enum csync_vio_file_flags_e {
00033   CSYNC_VIO_FILE_FLAGS_NONE = 0,
00034   CSYNC_VIO_FILE_FLAGS_SYMLINK = 1 << 0,
00035   CSYNC_VIO_FILE_FLAGS_LOCAL = 1 << 1
00036 };
00037 
00038 enum csync_vio_file_type_e {
00039   CSYNC_VIO_FILE_TYPE_UNKNOWN,
00040   CSYNC_VIO_FILE_TYPE_REGULAR,
00041   CSYNC_VIO_FILE_TYPE_DIRECTORY,
00042   CSYNC_VIO_FILE_TYPE_FIFO,
00043   CSYNC_VIO_FILE_TYPE_SOCKET,
00044   CSYNC_VIO_FILE_TYPE_CHARACTER_DEVICE,
00045   CSYNC_VIO_FILE_TYPE_BLOCK_DEVICE,
00046   CSYNC_VIO_FILE_TYPE_SYMBOLIC_LINK
00047 };
00048 
00049 enum csync_vio_file_stat_fields_e {
00050   CSYNC_VIO_FILE_STAT_FIELDS_NONE = 0,
00051   CSYNC_VIO_FILE_STAT_FIELDS_TYPE = 1 << 0,
00052   CSYNC_VIO_FILE_STAT_FIELDS_PERMISSIONS = 1 << 1,
00053   CSYNC_VIO_FILE_STAT_FIELDS_FLAGS = 1 << 2,
00054   CSYNC_VIO_FILE_STAT_FIELDS_DEVICE = 1 << 3,
00055   CSYNC_VIO_FILE_STAT_FIELDS_INODE = 1 << 4,
00056   CSYNC_VIO_FILE_STAT_FIELDS_LINK_COUNT = 1 << 5,
00057   CSYNC_VIO_FILE_STAT_FIELDS_SIZE = 1 << 6,
00058   CSYNC_VIO_FILE_STAT_FIELDS_BLOCK_COUNT = 1 << 7,
00059   CSYNC_VIO_FILE_STAT_FIELDS_BLOCK_SIZE = 1 << 8,
00060   CSYNC_VIO_FILE_STAT_FIELDS_ATIME = 1 << 9,
00061   CSYNC_VIO_FILE_STAT_FIELDS_MTIME = 1 << 10,
00062   CSYNC_VIO_FILE_STAT_FIELDS_CTIME = 1 << 11,
00063   CSYNC_VIO_FILE_STAT_FIELDS_SYMLINK_NAME = 1 << 12,
00064   CSYNC_VIO_FILE_STAT_FIELDS_CHECKSUM = 1 << 13,
00065   CSYNC_VIO_FILE_STAT_FIELDS_ACL = 1 << 14,
00066   CSYNC_VIO_FILE_STAT_FIELDS_UID = 1 << 15,
00067   CSYNC_VIO_FILE_STAT_FIELDS_GID = 1 << 16,
00068 };
00069 
00070 
00071 struct csync_vio_file_stat_s {
00072   union {
00073     char *symlink_name;
00074     char *checksum;
00075   } u;
00076 
00077   void *acl;
00078   char *name;
00079 
00080   uid_t uid;
00081   gid_t gid;
00082 
00083   time_t atime;
00084   time_t mtime;
00085   time_t ctime;
00086 
00087   off_t size;
00088   off_t blksize;
00089   unsigned long blkcount;
00090 
00091   mode_t mode;
00092 
00093   dev_t device;
00094   ino_t inode;
00095   nlink_t nlink;
00096 
00097   enum csync_vio_file_stat_fields_e fields;
00098   enum csync_vio_file_type_e type;
00099 
00100   enum csync_vio_file_flags_e flags;
00101 
00102   void *reserved1;
00103   void *reserved2;
00104   void *reserved3;
00105 };
00106 
00107 csync_vio_file_stat_t *csync_vio_file_stat_new(void);
00108 
00109 void csync_vio_file_stat_destroy(csync_vio_file_stat_t *fstat);
00110 
00111 #endif /* _CSYNC_VIO_METHOD_H */

Generated on Mon May 4 17:43:36 2009 for doc by  doxygen 1.5.6