diff --git a/c++17.patch.0 b/c++17.patch.0 new file mode 100644 index 0000000..c416dc7 --- /dev/null +++ b/c++17.patch.0 @@ -0,0 +1,412 @@ +--- a/src/libcmis/allowable-actions.cxx ++++ b/src/libcmis/allowable-actions.cxx +@@ -62,7 +62,7 @@ + } + } + +- ObjectAction::Type ObjectAction::parseType( string type ) throw ( Exception ) ++ ObjectAction::Type ObjectAction::parseType( string type ) + { + Type value = DeleteObject; + if ( type == "canDeleteObject" ) +--- a/src/libcmis/allowable-actions.hxx ++++ b/src/libcmis/allowable-actions.hxx +@@ -92,7 +92,7 @@ + /** Parses the permission name into one of the enum values or throws + an exception for invalid input strings. + */ +- static Type parseType( std::string type ) throw ( Exception ); ++ static Type parseType( std::string type ); + + }; + +--- a/src/libcmis/document.hxx ++++ b/src/libcmis/document.hxx +@@ -56,7 +56,7 @@ + + @return the parents folder if any. + */ +- virtual std::vector< boost::shared_ptr< Folder > > getParents( ) throw ( Exception ) = 0; ++ virtual std::vector< boost::shared_ptr< Folder > > getParents( ) = 0; + + /** Get the content stream without using a temporary file. + +@@ -74,7 +74,7 @@ + guaranteed. + */ + virtual boost::shared_ptr< std::istream > getContentStream( std::string streamId = std::string( ) ) +- throw ( Exception ) = 0; ++ = 0; + + /** Set or replace the content stream of the document. + +@@ -88,7 +88,7 @@ + capability. + */ + virtual void setContentStream( boost::shared_ptr< std::ostream > os, std::string contentType, +- std::string filename, bool overwrite = true ) throw ( Exception ) = 0; ++ std::string filename, bool overwrite = true ) = 0; + + /** Get the content mime type. + */ +@@ -107,12 +107,12 @@ + + \return the Private Working Copy document + */ +- virtual boost::shared_ptr< Document > checkOut( ) throw ( Exception ) = 0; ++ virtual boost::shared_ptr< Document > checkOut( ) = 0; + + /** Cancels the checkout if the document is a private working copy, or + throws an exception. + */ +- virtual void cancelCheckout( ) throw ( Exception ) = 0; ++ virtual void cancelCheckout( ) = 0; + + /** Check in the private working copy and create a new version or throw + an exception. +@@ -131,9 +131,9 @@ + virtual boost::shared_ptr< Document > checkIn( bool isMajor, std::string comment, + const std::map< std::string, PropertyPtr >& properties, + boost::shared_ptr< std::ostream > stream, +- std::string contentType, std::string fileName ) throw ( Exception ) = 0; ++ std::string contentType, std::string fileName ) = 0; + +- virtual std::vector< boost::shared_ptr< Document > > getAllVersions( ) throw ( Exception ) = 0; ++ virtual std::vector< boost::shared_ptr< Document > > getAllVersions( ) = 0; + + // virtual methods form Object + virtual std::vector< std::string > getPaths( ); +--- a/src/libcmis/folder.cxx ++++ b/src/libcmis/folder.cxx +@@ -40,7 +40,7 @@ + return paths; + } + +- libcmis::FolderPtr Folder::getFolderParent( ) throw ( libcmis::Exception ) ++ libcmis::FolderPtr Folder::getFolderParent( ) + { + if ( getAllowableActions( ).get() && !getAllowableActions()->isAllowed( libcmis::ObjectAction::GetFolderParent ) ) + throw libcmis::Exception( string( "GetFolderParent not allowed on node " ) + getId() ); +--- a/src/libcmis/folder.hxx ++++ b/src/libcmis/folder.hxx +@@ -59,20 +59,20 @@ + + virtual std::vector< std::string > getPaths( ); + +- virtual ::boost::shared_ptr< Folder > getFolderParent( ) throw ( Exception ); +- virtual std::vector< ObjectPtr > getChildren( ) throw ( Exception ) = 0; ++ virtual ::boost::shared_ptr< Folder > getFolderParent( ); ++ virtual std::vector< ObjectPtr > getChildren( ) = 0; + virtual std::string getParentId( ); + virtual std::string getPath( ); + + virtual bool isRootFolder( ); + + virtual ::boost::shared_ptr< Folder > createFolder( const std::map< std::string, PropertyPtr >& properties ) +- throw ( libcmis::Exception ) = 0; ++ = 0; + virtual ::boost::shared_ptr< Document > createDocument( const std::map< std::string, PropertyPtr >& properties, +- boost::shared_ptr< std::ostream > os, std::string contentType, std::string fileName ) throw ( Exception ) = 0; ++ boost::shared_ptr< std::ostream > os, std::string contentType, std::string fileName ) = 0; + + virtual std::vector< std::string > removeTree( bool allVersion = true, UnfileObjects::Type unfile = UnfileObjects::Delete, +- bool continueOnError = false ) throw ( Exception ) = 0; ++ bool continueOnError = false ) = 0; + + virtual std::string toString( ); + }; +--- a/src/libcmis/object.cxx ++++ b/src/libcmis/object.cxx +@@ -226,7 +226,6 @@ + } + + ObjectPtr Object::addSecondaryType( string id, PropertyPtrMap properties ) +- throw ( Exception ) + { + // First make sure the cmis:secondaryObjectTypeIds property can be defined + map< string, PropertyTypePtr >& propertyTypes = getTypeDescription( )-> +@@ -253,7 +252,7 @@ + return updateProperties( newProperties ); + } + +- ObjectPtr Object::removeSecondaryType( string id ) throw ( Exception ) ++ ObjectPtr Object::removeSecondaryType( string id ) + { + // First make sure the cmis:secondaryObjectTypeIds property can be defined + map< string, PropertyTypePtr >& propertyTypes = getTypeDescription( )-> +@@ -297,12 +296,12 @@ + return m_typeDescription; + } + +- vector< RenditionPtr> Object::getRenditions( string /*filter*/ ) throw ( Exception ) ++ vector< RenditionPtr> Object::getRenditions( string /*filter*/ ) + { + return m_renditions; + } + +- string Object::getThumbnailUrl( ) throw ( Exception ) ++ string Object::getThumbnailUrl( ) + { + string url; + vector< RenditionPtr > renditions = getRenditions( ); +--- a/src/libcmis/object.hxx ++++ b/src/libcmis/object.hxx +@@ -129,8 +129,7 @@ + */ + virtual boost::shared_ptr< Object > addSecondaryType( + std::string id, +- PropertyPtrMap properties ) +- throw ( Exception ); ++ PropertyPtrMap properties ); + + /** Convenience function removing a secondary type from the object. + +@@ -154,8 +153,7 @@ + to throw a constraint exception if it doesn't allow the + operation. + */ +- virtual boost::shared_ptr< Object > removeSecondaryType( std::string id ) +- throw ( Exception ); ++ virtual boost::shared_ptr< Object > removeSecondaryType( std::string id ); + + /** Gives access to the properties of the object. + +@@ -179,8 +177,7 @@ + \attention + The streamId of the rendition is used in getContentStream( ) + */ +- virtual std::vector< RenditionPtr> getRenditions( std::string filter = std::string( ) ) +- throw ( Exception ); ++ virtual std::vector< RenditionPtr> getRenditions( std::string filter = std::string( ) ); + virtual AllowableActionsPtr getAllowableActions( ) { return m_allowableActions; } + + /** Update the object properties and return the updated object. +@@ -191,21 +188,21 @@ + are still two different instances to ease memory handling. + */ + virtual boost::shared_ptr< Object > updateProperties( +- const PropertyPtrMap& properties ) throw ( Exception ) = 0; ++ const PropertyPtrMap& properties ) = 0; + + virtual ObjectTypePtr getTypeDescription( ); + + /** Reload the data from the server. + */ +- virtual void refresh( ) throw ( Exception ) = 0; ++ virtual void refresh( ) = 0; + virtual time_t getRefreshTimestamp( ) { return m_refreshTimestamp; } + +- virtual void remove( bool allVersions = true ) throw ( Exception ) = 0; ++ virtual void remove( bool allVersions = true ) = 0; + +- virtual void move( boost::shared_ptr< Folder > source, boost::shared_ptr< Folder > destination ) throw ( Exception ) = 0; ++ virtual void move( boost::shared_ptr< Folder > source, boost::shared_ptr< Folder > destination ) = 0; + + +- virtual std::string getThumbnailUrl( ) throw ( Exception ); ++ virtual std::string getThumbnailUrl( ); + + /** Dump the object as a string for debugging or display purpose. + */ +--- a/src/libcmis/object-type.cxx ++++ b/src/libcmis/object-type.cxx +@@ -293,22 +293,22 @@ + } + } + +- void ObjectType::refresh( ) throw ( Exception ) ++ void ObjectType::refresh( ) + { + throw Exception( "ObjectType::refresh() shouldn't be called" ); + } + +- ObjectTypePtr ObjectType::getParentType( ) throw ( Exception ) ++ ObjectTypePtr ObjectType::getParentType( ) + { + throw Exception( "ObjectType::getParentType() shouldn't be called" ); + } + +- ObjectTypePtr ObjectType::getBaseType( ) throw ( Exception ) ++ ObjectTypePtr ObjectType::getBaseType( ) + { + throw Exception( "ObjectType::getBaseType() shouldn't be called" ); + } + +- vector< ObjectTypePtr > ObjectType::getChildren( ) throw ( Exception ) ++ vector< ObjectTypePtr > ObjectType::getChildren( ) + { + throw Exception( "ObjectType::getChildren() shouldn't be called" ); + } +--- a/src/libcmis/object-type.hxx ++++ b/src/libcmis/object-type.hxx +@@ -94,7 +94,7 @@ + This method needs to be implemented in subclasses or it will + do nothing + */ +- virtual void refresh( ) throw ( Exception ); ++ virtual void refresh( ); + virtual time_t getRefreshTimestamp( ) const; + + std::string getId( ) const; +@@ -104,9 +104,9 @@ + std::string getQueryName( ) const; + std::string getDescription( ) const; + +- virtual boost::shared_ptr< ObjectType > getParentType( ) throw ( Exception ); +- virtual boost::shared_ptr< ObjectType > getBaseType( ) throw ( Exception ); +- virtual std::vector< boost::shared_ptr< ObjectType > > getChildren( ) throw ( Exception ); ++ virtual boost::shared_ptr< ObjectType > getParentType( ); ++ virtual boost::shared_ptr< ObjectType > getBaseType( ); ++ virtual std::vector< boost::shared_ptr< ObjectType > > getChildren( ); + + /** Get the parent type id without extracting the complete parent type from + the repository. This is mainly provided for performance reasons. +--- a/src/libcmis/session-factory.cxx ++++ b/src/libcmis/session-factory.cxx +@@ -57,7 +57,7 @@ + + Session* SessionFactory::createSession( string bindingUrl, string username, + string password, string repository, bool noSslCheck, +- libcmis::OAuth2DataPtr oauth2, bool verbose ) throw ( Exception ) ++ libcmis::OAuth2DataPtr oauth2, bool verbose ) + { + Session* session = NULL; + +@@ -138,7 +138,7 @@ + } + + vector< RepositoryPtr > SessionFactory::getRepositories( string bindingUrl, +- string username, string password, bool verbose ) throw ( Exception ) ++ string username, string password, bool verbose ) + { + vector< RepositoryPtr > repos; + +--- a/src/libcmis/session-factory.hxx ++++ b/src/libcmis/session-factory.hxx +@@ -128,7 +128,7 @@ + std::string password = std::string( ), + std::string repositoryId = std::string( ), + bool noSslCheck = false, +- OAuth2DataPtr oauth2 = OAuth2DataPtr(), bool verbose = false ) throw ( Exception ); ++ OAuth2DataPtr oauth2 = OAuth2DataPtr(), bool verbose = false ); + + /** + Gets the informations of the repositories on the server. +@@ -142,7 +142,7 @@ + static std::vector< RepositoryPtr > getRepositories( std::string bindingUrl, + std::string username = std::string( ), + std::string password = std::string( ), +- bool verbose = false ) throw ( Exception ); ++ bool verbose = false ); + }; + } + +--- a/src/libcmis/session.hxx ++++ b/src/libcmis/session.hxx +@@ -47,7 +47,7 @@ + + /** Get the current repository. + */ +- virtual RepositoryPtr getRepository( ) throw ( Exception ) = 0; ++ virtual RepositoryPtr getRepository( ) = 0; + + virtual std::vector< RepositoryPtr > getRepositories( ) = 0; + +@@ -61,27 +61,27 @@ + + /** Get the Root folder of the repository + */ +- virtual FolderPtr getRootFolder() throw ( Exception )= 0; ++ virtual FolderPtr getRootFolder() = 0; + + /** Get a CMIS object from its ID. + */ +- virtual ObjectPtr getObject( std::string id ) throw ( Exception ) = 0; ++ virtual ObjectPtr getObject( std::string id ) = 0; + + /** Get a CMIS object from one of its path. + */ +- virtual ObjectPtr getObjectByPath( std::string path ) throw ( Exception ) = 0; ++ virtual ObjectPtr getObjectByPath( std::string path ) = 0; + + /** Get a CMIS folder from its ID. + */ +- virtual libcmis::FolderPtr getFolder( std::string id ) throw ( Exception ) = 0; ++ virtual libcmis::FolderPtr getFolder( std::string id ) = 0; + + /** Get a CMIS object type from its ID. + */ +- virtual ObjectTypePtr getType( std::string id ) throw ( Exception ) = 0; ++ virtual ObjectTypePtr getType( std::string id ) = 0; + + /** Get all the CMIS base object types known by the server. + */ +- virtual std::vector< ObjectTypePtr > getBaseTypes( ) throw ( Exception ) = 0; ++ virtual std::vector< ObjectTypePtr > getBaseTypes( ) = 0; + + /** Enable or disable the SSL certificate verification. + +--- a/src/libcmis/xml-utils.cxx ++++ b/src/libcmis/xml-utils.cxx +@@ -361,7 +361,6 @@ + string getXmlNodeAttributeValue( xmlNodePtr node, + const char* attributeName, + const char* defaultValue ) +- throw ( Exception ) + { + xmlChar* xmlStr = xmlGetProp( node, BAD_CAST( attributeName ) ); + if ( xmlStr == NULL ) +@@ -450,7 +449,7 @@ + return str; + } + +- bool parseBool( string boolStr ) throw ( Exception ) ++ bool parseBool( string boolStr ) + { + bool value = false; + if ( boolStr == "true" || boolStr == "1" ) +@@ -462,7 +461,7 @@ + return value; + } + +- long parseInteger( string intStr ) throw ( Exception ) ++ long parseInteger( string intStr ) + { + char* end; + errno = 0; +@@ -481,7 +480,7 @@ + return value; + } + +- double parseDouble( string doubleStr ) throw ( Exception ) ++ double parseDouble( string doubleStr ) + { + char* end; + errno = 0; +--- a/src/libcmis/xml-utils.hxx ++++ b/src/libcmis/xml-utils.hxx +@@ -132,8 +132,7 @@ + */ + std::string getXmlNodeAttributeValue( xmlNodePtr node, + const char* attributeName, +- const char* defaultValue = NULL ) +- throw ( Exception ); ++ const char* defaultValue = NULL ); + + /** Parse a xsd:dateTime string and return the corresponding UTC posix time. + */ +@@ -142,11 +141,11 @@ + /// Write a UTC time object to an xsd:dateTime string + std::string writeDateTime( boost::posix_time::ptime time ); + +- bool parseBool( std::string str ) throw ( Exception ); ++ bool parseBool( std::string str ); + +- long parseInteger( std::string str ) throw ( Exception ); ++ long parseInteger( std::string str ); + +- double parseDouble( std::string str ) throw ( Exception ); ++ double parseDouble( std::string str ); + + /** Trim spaces on the left and right of a string. + */ diff --git a/libcmis.spec b/libcmis.spec index 1b7ff11..5258111 100644 --- a/libcmis.spec +++ b/libcmis.spec @@ -2,7 +2,7 @@ Name: libcmis Version: 0.5.1 -Release: 13%{?dist} +Release: 14%{?dist} Summary: A C/C++ client library for CM interfaces License: GPLv2+ or LGPLv2+ or MPLv1.1 @@ -28,6 +28,7 @@ Patch6: 0001-rhbz-1410197-limit-the-number-of-redirections.patch Patch7: 0001-do-not-try-to-use-on-an-empty-string.patch Patch8: 0002-return-early-if-the-time-part-is-empty.patch Patch9: 0001-Properly-encode-OAuth2-credentials.patch +Patch10: c++17.patch.0 %description LibCMIS is a C/C++ client library for working with CM (content management) @@ -97,6 +98,9 @@ make %{?_smp_mflags} check %{_mandir}/man1/cmis-client.1* %changelog +* Mon Dec 10 2018 Caolán McNamara - 0.5.1-14 +- allow building with c++17 + * Wed Sep 12 2018 Stephan Bergmann - 0.5.1-13 - fix Google Drive login