[MediaWiki-commits] [Gerrit] Fix issue #2 Zimdump crashes on long titles. - change (openzim)

2016-07-03 Thread Kelson (Code Review)
Kelson has submitted this change and it was merged.

Change subject: Fix issue #2 Zimdump crashes on long titles.
..


Fix issue #2 Zimdump crashes on long titles.

Most of filesystems have a filename limited to 255 bytes.
If the filename is > 255 bytes truncate it.
Postfix the truncated filename with a counter to avoid name collision.

Change-Id: I0475aaa2d1221be46c48c5a52814ca6659cc7940
---
M zimlib/src/tools/zimDump.cpp
1 file changed, 8 insertions(+), 0 deletions(-)

Approvals:
  Kelson: Verified; Looks good to me, approved



diff --git a/zimlib/src/tools/zimDump.cpp b/zimlib/src/tools/zimDump.cpp
index 65d13b8..7c0149d 100644
--- a/zimlib/src/tools/zimDump.cpp
+++ b/zimlib/src/tools/zimDump.cpp
@@ -394,6 +394,7 @@
 
 void ZimDumper::dumpFiles(const std::string& directory)
 {
+  unsigned int truncatedFiles = 0;
   ::mkdir(directory.c_str(), 0777);
 
   std::set ns;
@@ -406,6 +407,13 @@
 std::string::size_type p;
 while ((p = t.find('/')) != std::string::npos)
   t.replace(p, 1, "%2f");
+if ( t.length() > 255 )
+{
+  std::ostringstream sspostfix, sst;
+  sspostfix << (++truncatedFiles);
+  sst << t.substr(0, 254-sspostfix.tellp()) << "~" << sspostfix.str();
+  t = sst.str();
+}
 std::string f = d + '/' + t;
 std::ofstream out(f.c_str());
 out << it->getData();

-- 
To view, visit https://gerrit.wikimedia.org/r/296931
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I0475aaa2d1221be46c48c5a52814ca6659cc7940
Gerrit-PatchSet: 1
Gerrit-Project: openzim
Gerrit-Branch: master
Gerrit-Owner: Mgautierfr 
Gerrit-Reviewer: Kelson 

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits


[MediaWiki-commits] [Gerrit] Fix issue #2 Zimdump crashes on long titles. - change (openzim)

2016-07-01 Thread Mgautierfr (Code Review)
Mgautierfr has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/296931

Change subject: Fix issue #2 Zimdump crashes on long titles.
..

Fix issue #2 Zimdump crashes on long titles.

Most of filesystems have a filename limited to 255 bytes.
If the filename is > 255 bytes truncate it.
Postfix the truncated filename with a counter to avoid name collision.

Change-Id: I0475aaa2d1221be46c48c5a52814ca6659cc7940
---
M zimlib/src/tools/zimDump.cpp
1 file changed, 8 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/openzim refs/changes/31/296931/1

diff --git a/zimlib/src/tools/zimDump.cpp b/zimlib/src/tools/zimDump.cpp
index 65d13b8..7c0149d 100644
--- a/zimlib/src/tools/zimDump.cpp
+++ b/zimlib/src/tools/zimDump.cpp
@@ -394,6 +394,7 @@
 
 void ZimDumper::dumpFiles(const std::string& directory)
 {
+  unsigned int truncatedFiles = 0;
   ::mkdir(directory.c_str(), 0777);
 
   std::set ns;
@@ -406,6 +407,13 @@
 std::string::size_type p;
 while ((p = t.find('/')) != std::string::npos)
   t.replace(p, 1, "%2f");
+if ( t.length() > 255 )
+{
+  std::ostringstream sspostfix, sst;
+  sspostfix << (++truncatedFiles);
+  sst << t.substr(0, 254-sspostfix.tellp()) << "~" << sspostfix.str();
+  t = sst.str();
+}
 std::string f = d + '/' + t;
 std::ofstream out(f.c_str());
 out << it->getData();

-- 
To view, visit https://gerrit.wikimedia.org/r/296931
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I0475aaa2d1221be46c48c5a52814ca6659cc7940
Gerrit-PatchSet: 1
Gerrit-Project: openzim
Gerrit-Branch: master
Gerrit-Owner: Mgautierfr 

___
MediaWiki-commits mailing list
MediaWiki-commits@lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits