[Libreoffice-commits] online.git: Branch 'distro/collabora/milestone-5' - 9 commits - loolwsd/configure.ac loolwsd/LoadTest.cpp loolwsd/LOOLSession.cpp loolwsd/LOOLSession.hpp loolwsd/LOOLWSD.cpp loolwsd/Makefile.am loolwsd/protocol.txt
Miklos Vajna
vmiklos at collabora.co.uk
Tue Oct 20 06:48:00 PDT 2015
loolwsd/LOOLSession.cpp | 75 ++++++++++++++++++++++++++++++++------------
loolwsd/LOOLSession.hpp | 9 +++++
loolwsd/LOOLWSD.cpp | 81 +++++++++++++++++++++++++++++++++++++-----------
loolwsd/LoadTest.cpp | 2 -
loolwsd/Makefile.am | 3 -
loolwsd/configure.ac | 2 -
loolwsd/protocol.txt | 5 ++
7 files changed, 136 insertions(+), 41 deletions(-)
New commits:
commit 95a29c2a2bc57f641d23c3773ac073f5fe2168da
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Oct 20 15:41:42 2015 +0200
loolwsd convert-to: implement actual conversion
(cherry picked from commit 8f90c38844ba6840acd97c6a72eb104d1171dc8d)
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index c945251..c241e08 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -252,7 +252,27 @@ public:
if (!fromPath.empty() && !format.empty())
{
- // TODO implement actual conversion
+ // Load the document.
+ std::shared_ptr<WebSocket> ws;
+ LOOLSession::Kind kind = LOOLSession::Kind::ToClient;
+ std::shared_ptr<MasterProcessSession> session(new MasterProcessSession(ws, kind));
+ const std::string filePrefix("file://");
+ std::string load = "load url=" + filePrefix + fromPath;
+ session->handleInput(load.data(), load.size());
+
+ // Convert it to the requested format.
+ Path toPath(fromPath);
+ toPath.setExtension(format);
+ std::string toJailURL = filePrefix + LOOLSession::jailDocumentURL + Path::separator() + toPath.getFileName();
+ std::string saveas = "saveas url=" + toJailURL + " format=" + format + " options=";
+ session->handleInput(saveas.data(), saveas.size());
+ std::string toURL = session->getSaveAs();
+
+ // Send it back to the client.
+ std::string mimeType = "application/octet-stream";
+ if (toURL.find(filePrefix) == 0)
+ toURL = toURL.substr(filePrefix.length());
+ response.sendFile(toURL, mimeType);
}
else
{
commit 9df7529493c449f8c94645a29f1deb455b4ee264
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Oct 20 15:35:43 2015 +0200
loolwsd convert-to: clean up temp directory in case format would be empty
(cherry picked from commit 355362f5198da3b51539b77d5d9a03fd451f3cbe)
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 21256be..c945251 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -253,15 +253,18 @@ public:
if (!fromPath.empty() && !format.empty())
{
// TODO implement actual conversion
-
- Path tempDirectory(fromPath);
- tempDirectory.setFileName("");
- File(tempDirectory).remove(/*recursive=*/true);
+ }
+ else
+ {
+ response.setStatus(HTTPResponse::HTTP_BAD_REQUEST);
+ response.setContentLength(0);
+ response.send();
}
- response.setStatus(HTTPResponse::HTTP_OK);
- response.setContentLength(0);
- response.send();
+ // Clean up the temporary directory the HTMLForm ctor created.
+ Path tempDirectory(fromPath);
+ tempDirectory.setFileName("");
+ File(tempDirectory).remove(/*recursive=*/true);
}
else if (tokens.count() >= 4)
{
commit 2e0bc2af09bf5565382f57ae40e2f4a1f8215181
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Oct 20 15:00:05 2015 +0200
LOOLWSD: put file we get from convert-to to a temp. dir
Having a URL like file:///tmp/tmp13630baaaaa/test.txt allows retaining
the filename given by the user and still work with a URL.
We could try carrying around a memory buffer, but we would still have to
send it over the WS, so it's easier if we always work with URLs instead.
(cherry picked from commit cdc0783c27a4b2b36c1f5ffc972f618be33f1ed7)
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index b37c1b3..21256be 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -98,6 +98,8 @@ DEALINGS IN THE SOFTWARE.
#include <Poco/ThreadLocal.h>
#include <Poco/NamedMutex.h>
#include <Poco/FileStream.h>
+#include <Poco/TemporaryFile.h>
+#include <Poco/StreamCopier.h>
#include "LOOLProtocol.hpp"
@@ -183,16 +185,15 @@ private:
class ConvertToPartHandler : public Poco::Net::PartHandler
{
std::string& _filename;
- std::vector<char>& _buffer;
public:
- ConvertToPartHandler(std::string& filename, std::vector<char>& buffer)
- : _filename(filename),
- _buffer(buffer)
+ ConvertToPartHandler(std::string& filename)
+ : _filename(filename)
{
}
virtual void handlePart(const Poco::Net::MessageHeader& header, std::istream& stream) override
{
+ // Extract filename and put it to a temporary directory.
std::string disp;
Poco::Net::NameValueCollection params;
if (header.has("Content-Disposition"))
@@ -200,12 +201,19 @@ public:
std::string cd = header.get("Content-Disposition");
Poco::Net::MessageHeader::splitParameters(cd, disp, params);
}
- if (params.has("filename"))
- _filename = params.get("filename");
+ if (!params.has("filename"))
+ return;
+
+ Path tempPath = Path::forDirectory(Poco::TemporaryFile().tempName() + Path::separator());
+ File(tempPath).createDirectories();
+ tempPath.setFileName(params.get("filename"));
+ _filename = tempPath.toString();
- char c;
- while (stream.get(c))
- _buffer.push_back(c);
+ // Copy the stream to _filename.
+ std::ofstream fileStream;
+ fileStream.open(_filename);
+ Poco::StreamCopier::copyStream(stream, fileStream);
+ fileStream.close();
}
};
@@ -235,17 +243,20 @@ public:
StringTokenizer tokens(request.getURI(), "/?");
if (tokens.count() >= 2 && tokens[1] == "convert-to")
{
- std::string filename;
- std::vector<char> buffer;
- ConvertToPartHandler handler(filename, buffer);
+ std::string fromPath;
+ ConvertToPartHandler handler(fromPath);
Poco::Net::HTMLForm form(request, request.stream(), handler);
std::string format;
if (form.has("format"))
format = form.get("format");
- if (!format.empty() && !buffer.empty())
+ if (!fromPath.empty() && !format.empty())
{
// TODO implement actual conversion
+
+ Path tempDirectory(fromPath);
+ tempDirectory.setFileName("");
+ File(tempDirectory).remove(/*recursive=*/true);
}
response.setStatus(HTTPResponse::HTTP_OK);
commit 738fab56aa4b5bfd56bfa93b4ea1532f2ecfff07
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Oct 20 14:44:47 2015 +0200
LOOLSession: handle file:// in the ToPrisoner saveas input handler
(cherry picked from commit 847c65cb1c4f80e6a0fbec56715ad857d6b78472)
diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index 4bee505..15a2825 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -192,9 +192,19 @@ bool MasterProcessSession::handleInput(const char *buffer, int length)
return true;
if (peer)
+ {
// Save as completed, inform the other (Kind::ToClient)
// MasterProcessSession about it.
+
+ const std::string filePrefix("file:///");
+ if (url.find(filePrefix) == 0)
+ {
+ // Rewrite file:// URLs, as they are visible to the outside world.
+ Path path(MasterProcessSession::getJailPath(_childId), url.substr(filePrefix.length()));
+ url = filePrefix + path.toString().substr(1);
+ }
peer->_saveAsQueue.put(url);
+ }
return true;
}
commit 32827d684f4c81b604466c3541892ecab6ab60ac
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Oct 20 14:17:58 2015 +0200
loolwsd: don't try to exclude jails from tags
Don't pretend that we know where jails will be, the may be elsewhere. If
indexing jails/systemplate is problem, configure them outside the build
tree instead.
(cherry picked from commit dc56637e1133c7b3c5c45158582755a2d85a32cc)
diff --git a/loolwsd/Makefile.am b/loolwsd/Makefile.am
index 9e1f143..e0e3fb9 100644
--- a/loolwsd/Makefile.am
+++ b/loolwsd/Makefile.am
@@ -36,5 +36,4 @@ all-local: loolwsd
fi
tags:
- ctags --c++-kinds=+p --fields=+iaS --extra=+q -R --totals=yes \
- --exclude=jails *
+ ctags --c++-kinds=+p --fields=+iaS --extra=+q -R --totals=yes *
commit 688256f5c59586eb6def9dae45d20ba15761cba0
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Tue Oct 20 14:03:31 2015 +0200
LOOLSession: inform to-client session about completed save-as
(cherry picked from commit 4feb29d1dfaf05a3c1f15dd05bab443a08211f0f)
diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index 1f1a2da..4bee505 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -184,6 +184,20 @@ bool MasterProcessSession::handleInput(const char *buffer, int length)
{
return true;
}
+
+ if (tokens.count() == 2 && tokens[0] == "saveas:")
+ {
+ std::string url;
+ if (!getTokenString(tokens[1], "url", url))
+ return true;
+
+ if (peer)
+ // Save as completed, inform the other (Kind::ToClient)
+ // MasterProcessSession about it.
+ peer->_saveAsQueue.put(url);
+
+ return true;
+ }
}
if (_kind == Kind::ToPrisoner && peer && peer->_tileCache)
@@ -486,6 +500,11 @@ bool MasterProcessSession::getPartPageRectangles(const char *buffer, int length)
return true;
}
+std::string MasterProcessSession::getSaveAs()
+{
+ return _saveAsQueue.get();
+}
+
void MasterProcessSession::sendTile(const char *buffer, int length, StringTokenizer& tokens)
{
int part, width, height, tilePosX, tilePosY, tileWidth, tileHeight;
@@ -1204,6 +1223,8 @@ bool ChildProcessSession::saveAs(const char* /*buffer*/, int /*length*/, StringT
format.size() == 0 ? NULL :format.c_str(),
filterOptions.size() == 0 ? NULL : filterOptions.c_str());
+ sendTextFrame("saveas: url=" + url);
+
return true;
}
diff --git a/loolwsd/LOOLSession.hpp b/loolwsd/LOOLSession.hpp
index 70210ae..85d9d5a 100644
--- a/loolwsd/LOOLSession.hpp
+++ b/loolwsd/LOOLSession.hpp
@@ -30,6 +30,7 @@
#include <Poco/Types.h>
#include "TileCache.hpp"
+#include "tsqueue.h"
// We have three kinds of Websocket sessions
// 1) Between the master loolwsd server to the end-user LOOL client
@@ -117,6 +118,12 @@ public:
virtual bool getPartPageRectangles(const char *buffer, int length) override;
+ /**
+ * Return the URL of the saved-as document when it's ready. If called
+ * before it's ready, the call blocks till then.
+ */
+ std::string getSaveAs();
+
protected:
bool invalidateTiles(const char *buffer, int length, Poco::StringTokenizer& tokens);
@@ -151,6 +158,8 @@ private:
static std::mutex _rngMutex;
int _curPart;
int _loadPart;
+ /// Kind::ToClient instances store URLs of completed 'save as' documents.
+ tsqueue<std::string> _saveAsQueue;
};
class ChildProcessSession final : public LOOLSession
diff --git a/loolwsd/protocol.txt b/loolwsd/protocol.txt
index bc7c453..ede153d 100644
--- a/loolwsd/protocol.txt
+++ b/loolwsd/protocol.txt
@@ -181,3 +181,8 @@ nextmessage: size=<upperlimit>
messages that can be "large".) Once we depend on Poco 1.6.1, where
one doesn't need to use a pre-allocated buffer when receiving
WebSocket messages, this will go away.
+
+saveas: url=<url>
+
+ <url> is a URL of the destination, encoded. Sent from the child to the
+ parent after a saveAs() completed.
commit 8be342d1da29390be1849430837bcfdb97f72c43
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon Oct 19 16:03:16 2015 +0200
loolwsd: extraft filename from convert-to parameters
(cherry picked from commit cc18cc702f1de1dc2d133c81a0595f7ecf73517c)
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 89bc579..b37c1b3 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -182,15 +182,27 @@ private:
/// Handles the filename part of the convert-to POST request payload.
class ConvertToPartHandler : public Poco::Net::PartHandler
{
+ std::string& _filename;
std::vector<char>& _buffer;
public:
- ConvertToPartHandler(std::vector<char>& buffer)
- : _buffer(buffer)
+ ConvertToPartHandler(std::string& filename, std::vector<char>& buffer)
+ : _filename(filename),
+ _buffer(buffer)
{
}
- virtual void handlePart(const Poco::Net::MessageHeader& /*header*/, std::istream& stream) override
+ virtual void handlePart(const Poco::Net::MessageHeader& header, std::istream& stream) override
{
+ std::string disp;
+ Poco::Net::NameValueCollection params;
+ if (header.has("Content-Disposition"))
+ {
+ std::string cd = header.get("Content-Disposition");
+ Poco::Net::MessageHeader::splitParameters(cd, disp, params);
+ }
+ if (params.has("filename"))
+ _filename = params.get("filename");
+
char c;
while (stream.get(c))
_buffer.push_back(c);
@@ -223,8 +235,9 @@ public:
StringTokenizer tokens(request.getURI(), "/?");
if (tokens.count() >= 2 && tokens[1] == "convert-to")
{
+ std::string filename;
std::vector<char> buffer;
- ConvertToPartHandler handler(buffer);
+ ConvertToPartHandler handler(filename, buffer);
Poco::Net::HTMLForm form(request, request.stream(), handler);
std::string format;
if (form.has("format"))
commit 531161dac6652a5d82525fd33cab5cb2193314d0
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Mon Oct 19 10:58:21 2015 +0200
LOOLSession: check for 0 _ws
(cherry picked from commit f0ba09f3dda980f46bad9c63b0fef5b8078ea99a)
diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index 3296139..1f1a2da 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -106,7 +106,8 @@ LOOLSession::LOOLSession(std::shared_ptr<WebSocket> ws, Kind kind) :
LOOLSession::~LOOLSession()
{
std::cout << Util::logPrefix() << "LOOLSession dtor this=" << this << " " << _kind << std::endl;
- Util::shutdownWebSocket(*_ws);
+ if (_ws)
+ Util::shutdownWebSocket(*_ws);
}
void LOOLSession::sendTextFrame(const std::string& text)
@@ -123,10 +124,12 @@ void LOOLSession::sendBinaryFrame(const char *buffer, int length)
if (length > 1000)
{
std::string nextmessage = "nextmessage: size=" + std::to_string(length);
- _ws->sendFrame(nextmessage.data(), nextmessage.size());
+ if (_ws)
+ _ws->sendFrame(nextmessage.data(), nextmessage.size());
}
- _ws->sendFrame(buffer, length, WebSocket::FRAME_BINARY);
+ if (_ws)
+ _ws->sendFrame(buffer, length, WebSocket::FRAME_BINARY);
}
std::map<Process::PID, UInt64> MasterProcessSession::_childProcesses;
@@ -149,7 +152,8 @@ MasterProcessSession::MasterProcessSession(std::shared_ptr<WebSocket> ws, Kind k
MasterProcessSession::~MasterProcessSession()
{
std::cout << Util::logPrefix() << "MasterProcessSession dtor this=" << this << " _peer=" << _peer.lock().get() << std::endl;
- Util::shutdownWebSocket(*_ws);
+ if (_ws)
+ Util::shutdownWebSocket(*_ws);
auto peer = _peer.lock();
if (_kind == Kind::ToClient && peer)
{
commit d9ec17d774d73963f0303c821932b988b1485ce2
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date: Fri Oct 16 17:45:03 2015 +0200
loolwsd: -Werror=unused-parameter
(cherry picked from commit fed0cbc77c1c103e46105298c4af456a65d514cb)
diff --git a/loolwsd/LOOLSession.cpp b/loolwsd/LOOLSession.cpp
index c731bd9..3296139 100644
--- a/loolwsd/LOOLSession.cpp
+++ b/loolwsd/LOOLSession.cpp
@@ -370,7 +370,7 @@ Path MasterProcessSession::getJailPath(UInt64 childId)
return Path::forDirectory(LOOLWSD::childRoot + Path::separator() + std::to_string(childId));
}
-bool MasterProcessSession::invalidateTiles(const char *buffer, int length, StringTokenizer& tokens)
+bool MasterProcessSession::invalidateTiles(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
int part, tilePosX, tilePosY, tileWidth, tileHeight;
@@ -393,7 +393,7 @@ bool MasterProcessSession::invalidateTiles(const char *buffer, int length, Strin
return true;
}
-bool MasterProcessSession::loadDocument(const char *buffer, int length, StringTokenizer& tokens)
+bool MasterProcessSession::loadDocument(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
if (tokens.count() < 2 || tokens.count() > 4)
{
@@ -912,7 +912,7 @@ bool ChildProcessSession::loadDocument(const char *buffer, int length, StringTok
return true;
}
-bool ChildProcessSession::getStatus(const char *buffer, int length)
+bool ChildProcessSession::getStatus(const char* /*buffer*/, int /*length*/)
{
std::string status = "status: " + LOKitHelper::documentStatus(_loKitDocument);
StringTokenizer tokens(status, " ", StringTokenizer::TOK_IGNORE_EMPTY | StringTokenizer::TOK_TRIM);
@@ -925,7 +925,7 @@ bool ChildProcessSession::getStatus(const char *buffer, int length)
return true;
}
-bool ChildProcessSession::getCommandValues(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::getCommandValues(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
std::string command;
if (tokens.count() != 2 || !getTokenString(tokens[1], "command", command))
@@ -943,7 +943,7 @@ bool ChildProcessSession::getPartPageRectangles(const char* /*buffer*/, int /*le
return true;
}
-void ChildProcessSession::sendTile(const char *buffer, int length, StringTokenizer& tokens)
+void ChildProcessSession::sendTile(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
int part, width, height, tilePosX, tilePosY, tileWidth, tileHeight;
@@ -996,7 +996,7 @@ void ChildProcessSession::sendTile(const char *buffer, int length, StringTokeniz
sendBinaryFrame(output.data(), output.size());
}
-bool ChildProcessSession::downloadAs(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::downloadAs(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
std::string name, id, format, filterOptions;
@@ -1039,7 +1039,7 @@ bool ChildProcessSession::downloadAs(const char *buffer, int length, StringToken
return true;
}
-bool ChildProcessSession::getTextSelection(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::getTextSelection(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
std::string mimeType;
@@ -1056,7 +1056,7 @@ bool ChildProcessSession::getTextSelection(const char *buffer, int length, Strin
return true;
}
-bool ChildProcessSession::keyEvent(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::keyEvent(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
int type, charcode, keycode;
@@ -1076,7 +1076,7 @@ bool ChildProcessSession::keyEvent(const char *buffer, int length, StringTokeniz
return true;
}
-bool ChildProcessSession::mouseEvent(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::mouseEvent(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
int type, x, y, count, buttons, modifier;
@@ -1101,7 +1101,7 @@ bool ChildProcessSession::mouseEvent(const char *buffer, int length, StringToken
return true;
}
-bool ChildProcessSession::unoCommand(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::unoCommand(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
if (tokens.count() == 1)
{
@@ -1121,7 +1121,7 @@ bool ChildProcessSession::unoCommand(const char *buffer, int length, StringToken
return true;
}
-bool ChildProcessSession::selectText(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::selectText(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
int type, x, y;
@@ -1143,7 +1143,7 @@ bool ChildProcessSession::selectText(const char *buffer, int length, StringToken
return true;
}
-bool ChildProcessSession::selectGraphic(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::selectGraphic(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
int type, x, y;
@@ -1164,7 +1164,7 @@ bool ChildProcessSession::selectGraphic(const char *buffer, int length, StringTo
return true;
}
-bool ChildProcessSession::resetSelection(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::resetSelection(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
if (tokens.count() != 1)
{
@@ -1177,7 +1177,7 @@ bool ChildProcessSession::resetSelection(const char *buffer, int length, StringT
return true;
}
-bool ChildProcessSession::saveAs(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::saveAs(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
std::string url, format, filterOptions;
@@ -1203,7 +1203,7 @@ bool ChildProcessSession::saveAs(const char *buffer, int length, StringTokenizer
return true;
}
-bool ChildProcessSession::setClientPart(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::setClientPart(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
if (tokens.count() < 2 ||
!getTokenInteger(tokens[1], "part", _clientPart))
@@ -1213,7 +1213,7 @@ bool ChildProcessSession::setClientPart(const char *buffer, int length, StringTo
return true;
}
-bool ChildProcessSession::setPage(const char *buffer, int length, StringTokenizer& tokens)
+bool ChildProcessSession::setPage(const char* /*buffer*/, int /*length*/, StringTokenizer& tokens)
{
int page;
if (tokens.count() < 2 ||
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index 4b2e9c8..89bc579 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -656,9 +656,9 @@ namespace
ThreadLocal<Path> destinationForLinkOrCopy;
int linkOrCopyFunction(const char *fpath,
- const struct stat *sb,
+ const struct stat* /*sb*/,
int typeflag,
- struct FTW *ftwbuf)
+ struct FTW* /*ftwbuf*/)
{
if (strcmp(fpath, sourceForLinkOrCopy->c_str()) == 0)
return 0;
@@ -1115,7 +1115,7 @@ void LOOLWSD::startupDesktop(int nDesktops)
}
}
-int LOOLWSD::main(const std::vector<std::string>& args)
+int LOOLWSD::main(const std::vector<std::string>& /*args*/)
{
#ifdef __linux
char *locale = setlocale(LC_ALL, NULL);
diff --git a/loolwsd/LoadTest.cpp b/loolwsd/LoadTest.cpp
index b146ed2..a1f0442 100644
--- a/loolwsd/LoadTest.cpp
+++ b/loolwsd/LoadTest.cpp
@@ -367,7 +367,7 @@ void LoadTest::displayHelp()
helpFormatter.format(std::cout);
}
-int LoadTest::main(const std::vector<std::string>& args)
+int LoadTest::main(const std::vector<std::string>& /*args*/)
{
Thread *clients[_numClients];
diff --git a/loolwsd/configure.ac b/loolwsd/configure.ac
index 87af596..50a5edd 100644
--- a/loolwsd/configure.ac
+++ b/loolwsd/configure.ac
@@ -57,7 +57,7 @@ AS_IF([test "$enable_debug" = yes],
# Test for build environment
CXXFLAGS="$CXXFLAGS -std=c++11"
-CXXFLAGS="$CXXFLAGS -Wall -Werror"
+CXXFLAGS="$CXXFLAGS -Wall -Wextra -Werror"
AS_IF([test -n "$with_lokit_path"],
[CPPFLAGS="$CPPFLAGS -I${with_lokit_path}"])
More information about the Libreoffice-commits
mailing list