summaryrefslogtreecommitdiff
path: root/cpp/include/IcePatch2/Util.h
diff options
context:
space:
mode:
authorBenoit Foucher <benoit@zeroc.com>2005-08-26 10:57:14 +0000
committerBenoit Foucher <benoit@zeroc.com>2005-08-26 10:57:14 +0000
commit7517883e56547e284826802174b83ffe36a03d59 (patch)
tree6487620c9b4812d18e2b80b2663ac7bb47b1a3ce /cpp/include/IcePatch2/Util.h
parentFix for http://www.zeroc.com/vbulletin/showthread.php?t=1612 (diff)
downloadice-7517883e56547e284826802174b83ffe36a03d59.tar.bz2
ice-7517883e56547e284826802174b83ffe36a03d59.tar.xz
ice-7517883e56547e284826802174b83ffe36a03d59.zip
Added support for 'executable' flag.
Diffstat (limited to 'cpp/include/IcePatch2/Util.h')
-rw-r--r--cpp/include/IcePatch2/Util.h50
1 files changed, 45 insertions, 5 deletions
diff --git a/cpp/include/IcePatch2/Util.h b/cpp/include/IcePatch2/Util.h
index 8d9ec0cbc40..b62b3f313fc 100644
--- a/cpp/include/IcePatch2/Util.h
+++ b/cpp/include/IcePatch2/Util.h
@@ -48,6 +48,7 @@ ICE_PATCH2_API void createDirectoryRecursive(const std::string&);
ICE_PATCH2_API void compressBytesToFile(const std::string&, const Ice::ByteSeq&, Ice::Int);
ICE_PATCH2_API void decompressFile(const std::string&);
+ICE_PATCH2_API void setFileFlags(const std::string&, const FileInfo&);
struct FileInfoEqual: public std::binary_function<const FileInfo&, const FileInfo&, bool>
{
@@ -72,22 +73,33 @@ struct FileInfoEqual: public std::binary_function<const FileInfo&, const FileInf
return false;
}
+ if(lhs.executable != rhs.executable)
+ {
+ return false;
+ }
+
return lhs.checksum == rhs.checksum;
}
};
-struct FileInfoLess: public std::binary_function<const FileInfo&, const FileInfo&, bool>
+struct FileInfoWithoutFlagsLess: public std::binary_function<const FileInfo&, const FileInfo&, bool>
{
bool
operator()(const FileInfo& lhs, const FileInfo& rhs)
{
+ return compareWithoutFlags(lhs, rhs) < 0;
+ }
+
+ int
+ compareWithoutFlags(const FileInfo& lhs, const FileInfo& rhs)
+ {
if(lhs.path < rhs.path)
{
- return true;
+ return -1;
}
else if(rhs.path < lhs.path)
{
- return false;
+ return 1;
}
//
@@ -100,14 +112,42 @@ struct FileInfoLess: public std::binary_function<const FileInfo&, const FileInfo
Ice::Int rsz = rhs.size > 0 ? 0 : rhs.size;
if(lsz < rsz)
{
- return true;
+ return -1;
}
else if(rsz < lsz)
{
+ return 1;
+ }
+
+ if(lhs.checksum < rhs.checksum)
+ {
+ return -1;
+ }
+ else if(rhs.checksum < lhs.checksum)
+ {
+ return 1;
+ }
+
+ return 0;
+ }
+};
+
+struct FileInfoLess : public FileInfoWithoutFlagsLess
+{
+ bool
+ operator()(const FileInfo& lhs, const FileInfo& rhs)
+ {
+ int rc = compareWithoutFlags(lhs, rhs);
+ if(rc < 0)
+ {
+ return true;
+ }
+ else if(rc > 0)
+ {
return false;
}
- return lhs.checksum < rhs.checksum;
+ return lhs.executable < rhs.executable;
}
};