diff options
author | Benoit Foucher <benoit@zeroc.com> | 2005-08-26 10:57:14 +0000 |
---|---|---|
committer | Benoit Foucher <benoit@zeroc.com> | 2005-08-26 10:57:14 +0000 |
commit | 7517883e56547e284826802174b83ffe36a03d59 (patch) | |
tree | 6487620c9b4812d18e2b80b2663ac7bb47b1a3ce /cpp/include/IcePatch2/Util.h | |
parent | Fix for http://www.zeroc.com/vbulletin/showthread.php?t=1612 (diff) | |
download | ice-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.h | 50 |
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; } }; |