Merge pull request #146 from javerous/dev

OSX build improvements, switch to TinyXML2
This commit is contained in:
Valient Gough 2016-03-23 22:26:22 -07:00
commit d756ad941e
8 changed files with 24 additions and 30 deletions

View File

@ -51,12 +51,6 @@ endif (HAVE_GNU11_FLAG)
find_package (FUSE REQUIRED) find_package (FUSE REQUIRED)
include_directories (${FUSE_INCLUDE_DIR}) include_directories (${FUSE_INCLUDE_DIR})
add_definitions (-D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26) add_definitions (-D_FILE_OFFSET_BITS=64 -DFUSE_USE_VERSION=26)
if (APPLE)
add_definitions (-D__FreeBSD__=10)
# XXX: Fall back to stdc++, due to clang 5.0.1 header file issues
# (missing sys/endian.h, needed by standard c++ header files).
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=10.7")
endif (APPLE)
# Packaging config. # Packaging config.
set (CPACK_PACKAGE_NAME "Encfs") set (CPACK_PACKAGE_NAME "Encfs")

View File

@ -11,12 +11,12 @@ IF( TINYXML_INCLUDE_DIR )
SET( TinyXML_FIND_QUIETLY TRUE ) SET( TinyXML_FIND_QUIETLY TRUE )
ENDIF( TINYXML_INCLUDE_DIR ) ENDIF( TINYXML_INCLUDE_DIR )
FIND_PATH( TINYXML_INCLUDE_DIR "tinyxml.h" FIND_PATH( TINYXML_INCLUDE_DIR "tinyxml2.h"
PATH_SUFFIXES "tinyxml" ) PATH_SUFFIXES "tinyxml2" )
FIND_LIBRARY( TINYXML_LIBRARIES FIND_LIBRARY( TINYXML_LIBRARIES
NAMES "tinyxml" NAMES "tinyxml2"
PATH_SUFFIXES "tinyxml" ) PATH_SUFFIXES "tinyxml2" )
# handle the QUIETLY and REQUIRED arguments and set TINYXML_FOUND to TRUE if # handle the QUIETLY and REQUIRED arguments and set TINYXML_FOUND to TRUE if
# all listed variables are TRUE # all listed variables are TRUE

View File

@ -29,7 +29,7 @@
#include <cstring> #include <cstring>
#include <map> #include <map>
#include <tinyxml.h> #include <tinyxml2.h>
#include <glog/logging.h> #include <glog/logging.h>
#include "base/base64.h" #include "base/base64.h"
@ -124,13 +124,13 @@ bool XmlValue::read(const char *path, Interface *out) const {
return true; return true;
} }
std::string safeValueForNode(const TiXmlElement *element) { std::string safeValueForNode(const tinyxml2::XMLElement *element) {
std::string value; std::string value;
if (element == NULL) return value; if (element == NULL) return value;
const TiXmlNode *child = element->FirstChild(); const tinyxml2::XMLNode *child = element->FirstChild();
if (child) { if (child) {
const TiXmlText *childText = child->ToText(); const tinyxml2::XMLText *childText = child->ToText();
if (childText) value = childText->Value(); if (childText) value = childText->Value();
} }
@ -138,10 +138,10 @@ std::string safeValueForNode(const TiXmlElement *element) {
} }
class XmlNode : virtual public XmlValue { class XmlNode : virtual public XmlValue {
const TiXmlElement *element; const tinyxml2::XMLElement *element;
public: public:
XmlNode(const TiXmlElement *element_) XmlNode(const tinyxml2::XMLElement *element_)
: XmlValue(safeValueForNode(element_)), element(element_) {} : XmlValue(safeValueForNode(element_)), element(element_) {}
virtual ~XmlNode() {} virtual ~XmlNode() {}
@ -154,7 +154,7 @@ class XmlNode : virtual public XmlValue {
else else
return XmlValuePtr(); return XmlValuePtr();
} else { } else {
const TiXmlElement *el = element->FirstChildElement(name); const tinyxml2::XMLElement *el = element->FirstChildElement(name);
if (el) if (el)
return XmlValuePtr(new XmlNode(el)); return XmlValuePtr(new XmlNode(el));
else else
@ -164,7 +164,7 @@ class XmlNode : virtual public XmlValue {
}; };
struct XmlReader::XmlReaderData { struct XmlReader::XmlReaderData {
shared_ptr<TiXmlDocument> doc; shared_ptr<tinyxml2::XMLDocument> doc;
}; };
XmlReader::XmlReader() : pd(new XmlReaderData()) {} XmlReader::XmlReader() : pd(new XmlReaderData()) {}
@ -172,22 +172,22 @@ XmlReader::XmlReader() : pd(new XmlReaderData()) {}
XmlReader::~XmlReader() {} XmlReader::~XmlReader() {}
bool XmlReader::load(const char *fileName) { bool XmlReader::load(const char *fileName) {
pd->doc.reset(new TiXmlDocument(fileName)); pd->doc.reset(new tinyxml2::XMLDocument());
return pd->doc->LoadFile(); return pd->doc->LoadFile(fileName);
} }
XmlValuePtr XmlReader::operator[](const char *name) const { XmlValuePtr XmlReader::operator[](const char *name) const {
TiXmlNode *node = pd->doc->FirstChild(name); tinyxml2::XMLNode *node = pd->doc->FirstChildElement(name);
if (node == NULL) { if (node == NULL) {
LOG(ERROR) << "Xml node " << name << " not found"; LOG(ERROR) << "Xml node " << name << " not found";
return XmlValuePtr(new XmlValue()); return XmlValuePtr(new XmlValue());
} }
TiXmlElement *element = node->ToElement(); tinyxml2::XMLElement *element = node->ToElement();
if (element == NULL) { if (element == NULL) {
LOG(ERROR) << "Xml node " << name LOG(ERROR) << "Xml node " << name
<< " not element, type = " << node->Type(); << " not element";
return XmlValuePtr(new XmlValue()); return XmlValuePtr(new XmlValue());
} }

View File

@ -558,7 +558,7 @@ int main(int argc, char *argv[]) {
encfs_oper.utimens = encfs_utimens; encfs_oper.utimens = encfs_utimens;
// encfs_oper.bmap = encfs_bmap; // encfs_oper.bmap = encfs_bmap;
#if (__FreeBSD__ >= 10) #if (__FreeBSD__ >= 10) || defined(__APPLE__)
// encfs_oper.setvolname // encfs_oper.setvolname
// encfs_oper.exchange // encfs_oper.exchange
// encfs_oper.getxtimes // encfs_oper.getxtimes

View File

@ -72,7 +72,7 @@ void EncFS_Context::setRoot(const shared_ptr<DirNode> &r) {
if (r) rootCipherDir = r->rootDirectory(); if (r) rootCipherDir = r->rootDirectory();
} }
bool EncFS_Context::isMounted() const { return root; } bool EncFS_Context::isMounted() const { return root != NULL; }
int EncFS_Context::getAndResetUsageCounter() { int EncFS_Context::getAndResetUsageCounter() {
Lock lock(contextMutex); Lock lock(contextMutex);

View File

@ -80,7 +80,7 @@ static bool _nextName(struct dirent *&de, const shared_ptr<DIR> &dir,
if (de) { if (de) {
if (fileType) { if (fileType) {
#if defined(_DIRENT_HAVE_D_TYPE) || defined(__FreeBSD__) #if defined(_DIRENT_HAVE_D_TYPE) || defined(__FreeBSD__) || defined(__APPLE__)
*fileType = de->d_type; *fileType = de->d_type;
#else #else
#warning "struct dirent.d_type not supported" #warning "struct dirent.d_type not supported"
@ -157,7 +157,7 @@ class RenameOp {
~RenameOp(); ~RenameOp();
operator bool() const { return renameList; } operator bool() const { return renameList != NULL; }
bool apply(); bool apply();
void undo(); void undo();

View File

@ -245,7 +245,7 @@ int RawFileIO::truncate(off_t size) {
if (fd >= 0 && canWrite) { if (fd >= 0 && canWrite) {
res = ::ftruncate(fd, size); res = ::ftruncate(fd, size);
#ifndef __FreeBSD__ #if !defined(__FreeBSD__) && !defined(__APPLE__)
::fdatasync(fd); ::fdatasync(fd);
#endif #endif
} else } else

View File

@ -1,3 +1,5 @@
=pod
=cut =cut
Copyright (c) 2003-2004, Valient Gough <vgough@pobox.com> Copyright (c) 2003-2004, Valient Gough <vgough@pobox.com>
All rights reserved. All rights reserved.
@ -7,8 +9,6 @@ of the GNU General Public License (GPL), as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later Foundation; either version 2 of the License, or (at your option) any later
version. version.
=pod
=head1 NAME =head1 NAME
encfsctl - administrative tool for working with EncFS filesystems encfsctl - administrative tool for working with EncFS filesystems