Giter Site home page Giter Site logo

libcmis's People

Contributors

a17r avatar adconrad avatar aslip avatar beppec56 avatar bjoernmichaelsen avatar bzzzil avatar caocuongngo avatar caolanm avatar cloph avatar dimstar77 avatar dtardon avatar eszkadev avatar fridrich avatar jcorrius avatar jwakely avatar kendy avatar mihai-varga avatar mikekaganski avatar mistmist avatar reneengelhard avatar sanjaymsh avatar schnitzeltony avatar serval2412 avatar sgn avatar stbergmann avatar thorstenb avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

libcmis's Issues

CMIS Query, search for filename

Hi,
is it possible to execute a query on a repository like this:
"select * from cmis:document where cmis:name like 'name'"
Or is there a way to search for an objects 'cmis:name' property?

Failure logging into some Google Drive accounts, but not into others

Maybe somebody here can help me with the following problem: Using LibreOffice (which internally uses libcmis) to log into Google Drive (in LibreOffice, "File - Open Remote... - Add service - Type: Google Drive", enter "User" and "Password" and click "OK"), with two different @googlemail.com accounts, it consistently succeeds for one of them while it consistently fails with the other. (This is with #20 "Properly encode OAuth2 credentials" included, so it is unlikely that this is due to differences like e.g. the exact password spelling.)
Debugging into OAuth2Providers::OAuth2Gdrive in src/libcmis/oauth2-providers.cxx (with passing verbose = true into SessionFactory::createSession in src/libcmis/session-factory.cxx, plus some printf), the two cases proceed the same up until sending loginPasswdPost as POST request (in // STEP 3: password page). In both cases, loginPasswdPost looks like (broken up for better readability)

Page=PasswordSeparationSignIn
&GALX=XXXXXXXXXXX
&gxf=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXQ%3AXXXXXXXXXXXXX
&continue=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Fauth%3Fscope%3Dhttps%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%26redirect_uri%3Durn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob%26response_type%3Dcode%26client_id%3D280867422816-9jc83t6phkfb2q8p94dtk8kr5fa8af3r.apps.googleusercontent.com%26from_login%3D1%26as%3DXXXXXXXXXXXXXXXXXXXXXX
&followup=https%3A%2F%2Faccounts.google.com%2Fo%2Foauth2%2Fauth%3Fscope%3Dhttps%3A%2F%2Fwww.googleapis.com%2Fauth%2Fdrive%26redirect_uri%3Durn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob%26response_type%3Dcode%26client_id%3D280867422816-9jc83t6phkfb2q8p94dtk8kr5fa8af3r.apps.googleusercontent.com%26from_login%3D1%26as%3DXXXXXXXXXXXXXXXXXXXXXX
&ltmpl=nosignup
&scc=1
&sarp=1
&oauth=1
&flowName=GlifWebSignIn
&ProfileInformation=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
&SessionState=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
&_utf8=%E2%98%83
&bgresponse=js_disabled
&Email=XXXXXXXXXXXXXXXXXXXXXXXXXX%40googlemail.com
&signIn=Anmelden
&PersistentCookie=yes
&Passwd=XXXXXXXXXX

However, the responses from the server differ. In the successful case, we get a 302 Moved Temporarily response with Location: https://accounts.google.de/accounts/SetSID?ssdc=..., ultimately GETing a /o/oauth2/auth?scope=https://www.googleapis.com/auth/drive&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=... HTML page titled "Request for Permission" and which is apparently as expected by the next call into parseResponse, causing OAuth2Providers::OAuth2Gdrive to return successfully with some non-empty code.
But in the failing case, we directly get a 200 OK HTML page titled "Anmelden – Google Konten" (stuff is apparently localized on the server end, I'm doing this from Germany) which is apparently not as expected by the next call into parseResponse, and which causes OAuth2Providers::OAuth2Gdrive to fail returning an empty code.
(And when deliberately trying with a bad user name, or with the otherwise successful user name and a wrong password, behavior is different still, ruling out the assumption that the failing case's user name or password is bad: For a bad user name, the HTML page retrieved in // STEP 2: send email already is different, containing some has-error stuff. And for a bad password, the HTML page retrieved in // STEP 3: password page contains such has-error stuff.)
This may not even be an issue with libcmis. It smells like something is set up differently for those two Google accounts, but I have no idea what that could be. (And I get reports from other people too that their accounts don't work, in the same way.) Does anybody have an idea what might go wrong?

handle issues found by cppcheck

Run "make cppcheck" (requires cppcheck to be installed, obviously), pick an issue, fix it (unless it's a false positive, of course). Lather, rinse, repeat :-)

Note: don't touch inc/, unless it's absolutely clear that the change doesn't change API/ABI!

libcmis build failure with boost-1.68.0

When building libcmis with boost-1.68.0 it will fail with this error.

xml-utils.cxx:33:10: fatal error: boost/uuid/sha1.hpp: No such file or directory
 #include <boost/uuid/sha1.hpp>
          ^~~~~~~~~~~~~~~~~~~~~
compilation terminated.
rlibtool: error logged in slbt_exec_compile(), line 95: Success.
make[2]: *** [Makefile:765: xml-utils.lo] Error 2
make[2]: *** Waiting for unfinished jobs....

I was able to build libcmis with this hack.

sed -i 's|boost/uuid/sha1.hpp|boost/uuid/detail/sha1.hpp|' src/libcmis/xml-utils.cxx

OS: Slackware64-current

modernize the code

There are many places in the code that could be improved by using C++11 features. E.g., foreach loops, smart pointers, auto (especially for iterator variables), etc. (This somewhat overlaps with issue #26.)

Note: stay clear from inc/ to avoid accidental API/ABI breaks!

Unexpected libcmis exception: Object not found

Hi. I'm trying to use libreoffice 5.3.0.3 to open files from google drive. At any attempt I receive: "generic input / output error" in lirebreoffice. I've built it with debugging enabled, and all I found is:

info:ucb.ucp.cmis:15923:1:ucb/source/ucp/cmis/cmis_content.cxx:584: Unexpected libcmis exception: Object not found
info:sal.file:15923:1:sal/osl/unx/file.cxx:483: FileHandle_Impl::readFileAt(24, 1154, 1024)
info:sal.file:15923:1:sal/osl/unx/file.cxx:483: FileHandle_Impl::readFileAt(24, 1170, 2926)
warn:uui:15923:1:uui/source/iahndl.cxx:246: replaceMessageWithArguments: No arguments passed!

I've tried different version of libcmis (0.5.2_pre20160820 and as of today git) but problem persists. Is there any way to debug libcmis library? How to understand what caused this excetion?

This problem also reported at libreoffice bugzilla: https://bugs.documentfoundation.org/show_bug.cgi?id=97898 and many time in different places on the internet. Currently the only resolution people found is to use .deb package from LibreOffice site. Yet I'd like to understand what causes this issue and be able use my build of libreoffice.

Build failure with dev-libs/libxml2-2.12.0

Downstream report: https://bugs.gentoo.org/917523

I got the same build failure with 0.6.2.

Snippet:

atom-document.cxx: In member function 'virtual std::vector<boost::shared_ptr<libcmis::Folder> > AtomDocument::getParents()':
atom-document.cxx:88:21: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
   88 |     xmlDocPtr doc = xmlReadMemory( buf.c_str(), buf.size(), parentsLink->getHref( ).c_str(), NULL, 0 );
      |                     ^~~~~~~~~~~~~
      |                     xmlInitMemory
atom-document.cxx: In member function 'virtual libcmis::DocumentPtr AtomDocument::checkOut()':
atom-document.cxx:282:21: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  282 |     xmlDocPtr doc = xmlReadMemory( respBuf.c_str(), respBuf.size(), checkedOutUrl.c_str(), NULL, 0 );
      |                     ^~~~~~~~~~~~~
      |                     xmlInitMemory
atom-folder.cxx: In member function 'virtual std::vector<boost::shared_ptr<libcmis::Object> > AtomFolder::getChildren()':
atom-folder.cxx:90:25: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
   90 |         xmlDocPtr doc = xmlReadMemory( buf.c_str(), buf.size(), pageUrl.c_str(), NULL, 0 );
      |                         ^~~~~~~~~~~~~
      |                         xmlInitMemory
atom-object-type.cxx: In member function 'void AtomObjectType::refreshImpl(xmlDocPtr)':
atom-object-type.cxx:128:15: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  128 |         doc = xmlReadMemory( buf.c_str(), buf.size(), m_selfUrl.c_str(), NULL, 0 );
      |               ^~~~~~~~~~~~~
      |               xmlInitMemory
atom-object.cxx: In member function 'virtual libcmis::ObjectPtr AtomObject::updateProperties(const libcmis::PropertyPtrMap&)':
atom-object.cxx:152:21: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  152 |     xmlDocPtr doc = xmlReadMemory( respBuf.c_str(), respBuf.size(), getInfosUrl().c_str(), NULL, 0 );
      |                     ^~~~~~~~~~~~~
      |                     xmlInitMemory
atom-document.cxx: In member function 'virtual libcmis::DocumentPtr AtomDocument::checkIn(bool, std::string, const libcmis::PropertyPtrMap&, boost::shared_ptr<std::basic_ostream<char> >, std::string, std::string)':
atom-document.cxx:378:21: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  378 |     xmlDocPtr doc = xmlReadMemory( respBuf.c_str(), respBuf.size(), checkInUrl.c_str(), NULL, 0 );
      |                     ^~~~~~~~~~~~~
      |                     xmlInitMemory
atom-folder.cxx: In member function 'virtual libcmis::FolderPtr AtomFolder::createFolder(const libcmis::PropertyPtrMap&)':
atom-folder.cxx:177:21: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  177 |     xmlDocPtr doc = xmlReadMemory( respBuf.c_str(), respBuf.size(), getInfosUrl().c_str(), NULL, 0 );
      |                     ^~~~~~~~~~~~~
      |                     xmlInitMemory
atom-object.cxx: In member function 'virtual libcmis::AllowableActionsPtr AtomObject::getAllowableActions()':
atom-object.cxx:176:33: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  176 |                 xmlDocPtr doc = xmlReadMemory( buf.c_str(), buf.size(), link->getHref().c_str(), NULL, 0 );
      |                                 ^~~~~~~~~~~~~
      |                                 xmlInitMemory
atom-object.cxx: In member function 'virtual void AtomObject::refreshImpl(xmlDocPtr)':
atom-object.cxx:207:15: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  207 |         doc = xmlReadMemory( buf.c_str(), buf.size(), getInfosUrl().c_str(), NULL, 0 );
      |               ^~~~~~~~~~~~~
      |               xmlInitMemory
atom-document.cxx: In member function 'virtual std::vector<boost::shared_ptr<libcmis::Document> > AtomDocument::getAllVersions()':
atom-document.cxx:414:25: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  414 |         xmlDocPtr doc = xmlReadMemory( buf.c_str(), buf.size(), pageUrl.c_str(), NULL, 0 );
      |                         ^~~~~~~~~~~~~
      |                         xmlInitMemory
atom-folder.cxx: In member function 'virtual libcmis::DocumentPtr AtomFolder::createDocument(const libcmis::PropertyPtrMap&, boost::shared_ptr<std::basic_ostream<char> >, std::string, std::string)':
atom-folder.cxx:223:115: error: 'XML_PARSE_NOERROR' was not declared in this scope; did you mean 'XML_ERR_ERROR'?
  223 |     boost::shared_ptr< xmlDoc > doc( xmlReadMemory( respBuf.c_str(), respBuf.size(), getInfosUrl().c_str(), NULL, XML_PARSE_NOERROR ), xmlFreeDoc );
      |                                                                                                                   ^~~~~~~~~~~~~~~~~
      |                                                                                                                   XML_ERR_ERROR
atom-object.cxx: In member function 'virtual void AtomObject::move(boost::shared_ptr<libcmis::Folder>, boost::shared_ptr<libcmis::Folder>)':
atom-object.cxx:305:21: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  305 |     xmlDocPtr doc = xmlReadMemory( respBuf.c_str(), respBuf.size(), getInfosUrl().c_str(), NULL, 0 );
      |                     ^~~~~~~~~~~~~
      |                     xmlInitMemory
atom-folder.cxx:223:38: error: 'xmlReadMemory' was not declared in this scope; did you mean 'xmlInitMemory'?
  223 |     boost::shared_ptr< xmlDoc > doc( xmlReadMemory( respBuf.c_str(), respBuf.size(), getInfosUrl().c_str(), NULL, XML_PARSE_NOERROR ), xmlFreeDoc );
      |                                      ^~~~~~~~~~~~~
      |                                      xmlInitMemory

libcmis does not build with icu 64.1

I get the following error:

Making all in libcmis-c
make[2]: Entering directory '/home/lfs/libcmis/src/libcmis-c'
CXX libcmis_c_0.5_la-repository.lo
In file included from /usr/include/c++/8.3.0/bits/stl_algobase.h:63,
from /usr/include/c++/8.3.0/memory:62,
from /usr/include/unicode/localpointer.h:45,
from /usr/include/unicode/uenum.h:23,
from /usr/include/unicode/ucnv.h:53,
from /usr/include/libxml2/libxml/encoding.h:31,
from /usr/include/libxml2/libxml/parser.h:810,
from /usr/include/libxml2/libxml/globals.h:18,
from /usr/include/libxml2/libxml/threads.h:35,
from /usr/include/libxml2/libxml/xmlmemory.h:218,
from /usr/include/libxml2/libxml/tree.h:1307,
from ../../inc/libcmis-c/repository.h:35,
from repository.cxx:29:
/usr/include/c++/8.3.0/ext/numeric_traits.h:54:3: error: template with C linkage
template
^~~~~~~~
In file included from repository.cxx:29:
../../inc/libcmis-c/repository.h:32:1: note: ‘extern "C"’ linkage started here
extern "C" {
^~~~~~~~~~
In file included from /usr/include/c++/8.3.0/bits/stl_algobase.h:63,
from /usr/include/c++/8.3.0/memory:62,
from /usr/include/unicode/localpointer.h:45,
from /usr/include/unicode/uenum.h:23,
from /usr/include/unicode/ucnv.h:53,
from /usr/include/libxml2/libxml/encoding.h:31,
from /usr/include/libxml2/libxml/parser.h:810,
from /usr/include/libxml2/libxml/globals.h:18,
from /usr/include/libxml2/libxml/threads.h:35,
from /usr/include/libxml2/libxml/xmlmemory.h:218,
from /usr/include/libxml2/libxml/tree.h:1307,
from ../../inc/libcmis-c/repository.h:35,
from repository.cxx:29:
/usr/include/c++/8.3.0/ext/numeric_traits.h:67:3: error: template with C linkage
template
^~~~~~~~
n file included from repository.cxx:29:
../../inc/libcmis-c/repository.h:32:1: note: ‘extern "C"’ linkage started here
extern "C" {
^~~~~~~~~~
In file included from /usr/include/c++/8.3.0/bits/stl_algobase.h:63,
from /usr/include/c++/8.3.0/memory:62,
from /usr/include/unicode/localpointer.h:45,
from /usr/include/unicode/uenum.h:23,
from /usr/include/unicode/ucnv.h:53,
from /usr/include/libxml2/libxml/encoding.h:31,
from /usr/include/libxml2/libxml/parser.h:810,
from /usr/include/libxml2/libxml/globals.h:18,
from /usr/include/libxml2/libxml/threads.h:35,
from /usr/include/libxml2/libxml/xmlmemory.h:218,
from /usr/include/libxml2/libxml/tree.h:1307,
from ../../inc/libcmis-c/repository.h:35,
from repository.cxx:29:
/usr/include/c++/8.3.0/ext/numeric_traits.h:70:3: error: template with C linkage
template
^~~~~~~~
In file included from repository.cxx:29:
../../inc/libcmis-c/repository.h:32:1: note: ‘extern "C"’ linkage started here
extern "C" {
^~~~~~~~~~
In file included from /usr/include/c++/8.3.0/bits/stl_algobase.h:63,
from /usr/include/c++/8.3.0/memory:62,
from /usr/include/unicode/localpointer.h:45,
from /usr/include/unicode/uenum.h:23,
from /usr/include/unicode/ucnv.h:53,
from /usr/include/libxml2/libxml/encoding.h:31,
from /usr/include/libxml2/libxml/parser.h:810,
from /usr/include/libxml2/libxml/globals.h:18,
from /usr/include/libxml2/libxml/threads.h:35,
from /usr/include/libxml2/libxml/xmlmemory.h:218,
from /usr/include/libxml2/libxml/tree.h:1307,
from ../../inc/libcmis-c/repository.h:35,
from repository.cxx:29:
/usr/include/c++/8.3.0/ext/numeric_traits.h:73:3: error: template with C linkage
template
^~~~~~~~

.... etc

In file included from repository.cxx:29:
../../inc/libcmis-c/repository.h:32:1: note: ‘extern "C"’ linkage started here
extern "C" {
^~~~~~~~~~
In file included from /usr/include/unicode/localpointer.h:45,
from /usr/include/unicode/uenum.h:23,
from /usr/include/unicode/ucnv.h:53,
from /usr/include/libxml2/libxml/encoding.h:31,
from /usr/include/libxml2/libxml/parser.h:810,
from /usr/include/libxml2/libxml/globals.h:18,
from /usr/include/libxml2/libxml/threads.h:35,
from /usr/include/libxml2/libxml/xmlmemory.h:218,
from /usr/include/libxml2/libxml/tree.h:1307,
from ../../inc/libcmis-c/repository.h:35,
from repository.cxx:29:
/usr/include/c++/8.3.0/memory:135:1: error: template with C linkage
template
^~~~~~~~
In file included from repository.cxx:29:
../../inc/libcmis-c/repository.h:32:1: note: ‘extern "C"’ linkage started here
extern "C" {
^~~~~~~~~~
make[2]: *** [Makefile:614: libcmis_c_0.5_la-repository.lo] Error 1
make[2]: Leaving directory '/home/lfs/libcmis/src/libcmis-c'
make[1]: *** [Makefile:522: all-recursive] Error 1
make[1]: Leaving directory '/home/lfs/libcmis/src'
make: *** [Makefile:536: all-recursive] Error 1

Make or specify where to find API documentation

I'm interested in using libcmis-c but it doesn't seem like there's documentation anywhere, and the libcmis-c headers mostly seem to not have any comments. What's the most practical way for someone to get going with it?

Many c++ deprecation warnings

Many warnings same as:
./libcmis/session.hxx:80:61: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
virtual ObjectTypePtr getType( std::string id ) throw ( Exception ) = 0;

../../src/libcmis/folder.hxx:62:70: warning: dynamic exception specifications are deprecated in C++11 [-Wdeprecated]
virtual ::boost::shared_ptr< Folder > getFolderParent( ) throw ( Exception );

New release with dynamic exception specifications dropped

LibreOffice master requires a C++17 compiler now, so configuring it --with-system-libcmis fails when including libcmis headers that still use dynamic exception specifications. (The LibreOffice --without-system-libcmis case is covered through a local external/libcmis/c++17.patch.0.)
Therefore, it would be helpful if there were an official libcmis release that includes 172e837 "Merge pull request #16 from vmiklos/dynexcspec: Remove dynamic exception specifications".

Automake should be declared foreign

Otherwise the autoreconf by default would fail for not finding the gnu files like README document.

Index: libcmis-0.5.1/configure.ac
===================================================================
--- libcmis-0.5.1.orig/configure.ac
+++ libcmis-0.5.1/configure.ac
@@ -10,7 +10,7 @@ m4_define([libcmis_version],[libcmis_api

 AC_PREREQ([2.63])
 AC_INIT([libcmis], [libcmis_version])
-AM_INIT_AUTOMAKE()
+AM_INIT_AUTOMAKE([1.10 foreign dist-xz])
 m4_ifdef([AM_SILENT_RULES],[AM_SILENT_RULES([yes])])

 # Checks for programs.

Libcmis fails cppcheck-test

Since upgrading to version 1.72 of cppcheck, the cppcheck test fails:

FAIL: cppcheck-test.sh

[src/libcmis/oauth2-providers.cxx:163]: (performance) Inefficient usage of string::find() in condition; string::compare() would be faster.
[src/libcmis/oauth2-providers.cxx:167]: (performance) Inefficient usage of string::find() in condition; string::compare() would be faster.
[src/libcmis/oauth2-providers.cxx:169]: (performance) Inefficient usage of string::find() in condition; string::compare() would be faster.
[src/libcmis/ws-relatedmultipart.cxx:125]: (performance) Inefficient usage of string::find() in condition; string::compare() would be faster.
[src/libcmis/ws-relatedmultipart.cxx:146]: (performance) Inefficient usage of string::find() in condition; string::compare() would be faster.
[src/libcmis/ws-relatedmultipart.cxx:203]: (performance) Inefficient usage of string::find() in condition; string::compare() would be faster.
[*]: (information) Unmatched suppression: noExplicitCopyMoveConstructor
(information) Cppcheck cannot find all the include files (use --check-config for details)
FAIL cppcheck-test.sh (exit status: 1)

Last known working cppcheck version was 1.69. I've tried with all versions of cppcheck from 1.72 to 1.75 and with git master and they do not work.

See relevant Gentoo bug: https://bugs.gentoo.org/show_bug.cgi?id=577926

MS SharePoint REST API and root path

To use MS SharePoint 2013 REST API in LibreOffice, I choose SharePoint 2013 type and get this host template string:
http://<host>/_api/Web
I need to substitute <host> with my sharepoint site path, like this: sharepoint2013/sites/mysite, so the overall result looks like this:
http://sharepoint2013/sites/mysite/_api/Web
Then I choose the repository, that is SharePoint. That repository is defined in libcmis's src/libcmis/sharepoint-repository.[hc]xx
In it, the m_rootId is defined as baseUrl + "/getFolderByServerRelativeUrl('/')"
But that's incorrect, because this will try to get the object http://sharepoint2013/, while the real root for this site is http://sharepoint2013/sites/mysite/. (You know, that getFolderByServerRelativeUrl API is used, that is server-relative as the name suggests, not site-relative; see e.g. http://stackoverflow.com/questions/21254703/web-getfilebyserverrelativeurl-throws-value-does-not-fall-within-expected-range). Sharepoint does throw the "Value does not fall within expected range" error for that URL.
So, ideally, there should be baseUrl + "/getFolderByServerRelativeUrl('/sites/mysite/')", but that's unclear how to do that reliably, because that requires parsing the baseURL and stripping both server (which is easy) and API part like "_api/Web", and I don't know if that's good to search for that string hard-coded.
However, I found out that using just baseUrl + "/getFolderByServerRelativeUrl('')" works OK instead. I don't know if that is OK to do that, and wouldn't that be context-dependent. Could you please advise me how to best deal with this to make a patch.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.