vunify.h (2106B)
1 // $Id$ --*- c -*-- 2 3 // Copyright (C) 2004 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de> 4 // 5 // This program is free software; you can redistribute it and/or modify 6 // it under the terms of the GNU General Public License as published by 7 // the Free Software Foundation; version 2 of the License. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program; if not, write to the Free Software 16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 17 18 19 #ifndef H_UTIL_VSERVER_SRC_VUNIFY_H 20 #define H_UTIL_VSERVER_SRC_VUNIFY_H 21 22 #include "lib_internal/matchlist.h" 23 24 #include <sys/stat.h> 25 26 struct dirent; 27 struct WalkdownInfo 28 { 29 PathInfo state; 30 struct MatchList dst_list; 31 struct { 32 struct MatchList * v; 33 size_t l; 34 } src_lists; 35 }; 36 37 struct SkipReason { 38 enum { rsDOTFILE, rsEXCL_DST, rsEXCL_SRC, 39 rsFSTAT, rsNOEXISTS, rsSYMLINK, rsUNIFIED, 40 rsSPECIAL, rsDIFFERENT } r; 41 42 union { 43 struct MatchList const * list; 44 } d; 45 }; 46 47 struct Arguments { 48 enum {mdMANUALLY, mdVSERVER} mode; 49 bool do_revert; 50 bool do_dry_run; 51 unsigned int verbosity; 52 bool local_fs; 53 bool do_renew; 54 }; 55 56 static bool checkFstat(struct MatchList const * const, 57 PathInfo const * const, 58 PathInfo const * const, 59 struct stat const ** const, struct stat * const, 60 struct stat *) NONNULL((1,2,3,4,5,6)); 61 62 static struct MatchList const * 63 checkDirEntry(PathInfo const *, 64 PathInfo const *, 65 bool *, struct stat *, struct stat *) NONNULL((1,2,3,4,5)); 66 67 static bool updateSkipDepth(PathInfo const *, bool) NONNULL((1)); 68 static bool doit(struct MatchList const *, 69 PathInfo const *, struct stat const *, 70 char const *dst_path, struct stat const *) NONNULL((1,2,3)); 71 72 #endif // H_UTIL_VSERVER_SRC_VUNIFY_H