3 // Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
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.
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.
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.
23 #include "vunify-operations.h"
26 #include <sys/types.h>
31 // ====== The compare functions =========
33 // return 'true' iff both files are different and unifyable
35 compareUnify(struct stat const *lhs, struct stat const *rhs)
37 return (lhs->st_dev ==rhs->st_dev &&
38 lhs->st_ino !=rhs->st_ino &&
39 lhs->st_mode==rhs->st_mode &&
40 lhs->st_uid ==rhs->st_uid &&
41 lhs->st_gid ==rhs->st_gid &&
42 lhs->st_size==rhs->st_size);
47 // return 'true' iff both files are the same one
49 compareDeUnify(struct stat const *lhs, struct stat const *rhs)
51 return (lhs->st_dev ==rhs->st_dev &&
52 lhs->st_ino ==rhs->st_ino);
55 // ===== The 'doit' functions ===========
59 unifyTest(char const *src, char const *dst)
61 WRITE_MSG(1, "unifying '");
63 WRITE_MSG(1, "' -> '");
71 static struct Operations op_unify_test = {
72 .compare = compareUnify,
76 static struct Operations op_deunify_test = {
77 .compare = compareDeUnify,
81 static struct Operations op_unify_notest = {
82 .compare = compareUnify,
86 static struct Operations op_deunify_notest = {
87 .compare = compareDeUnify,
94 Operations_init(struct Operations *op, OperationType type, bool is_test)
98 if (is_test) *op = op_unify_test;
99 else *op = op_unify_notest;
103 if (is_test) *op = op_deunify_test;
104 else *op = op_deunify_notest;