Mendeley Import: Prevent tmp path > 260 chars

This commit is contained in:
Tom Najdek 2021-05-20 12:42:34 +02:00
parent 63205a73e8
commit 7582147dd5
No known key found for this signature in database
GPG key ID: EEC61A7B4C667D77

View file

@ -706,8 +706,18 @@ Zotero_Import_Mendeley.prototype._getDocumentFilesAPI = async function (document
for (let doc of documents) {
const files = [];
for (let file of (doc.files || [])) {
const fileName = Zotero.File.getValidFileName(file.file_name || 'file');
const tmpFile = OS.Path.join(Zotero.getTempDirectory().path, `m-api-${this.timestamp}-${file.id}`, fileName);
var fileName = Zotero.File.truncateFileName(Zotero.File.getValidFileName(file.file_name || 'file'), 255); // most filesystems limit filename to 255 characters
var tmpFile = OS.Path.join(Zotero.getTempDirectory().path, `m-api-${this.timestamp}-${file.id}`, fileName);
if (tmpFile.length >= 260) {
const surplus = tmpFile.length - 260;
if (surplus >= fileName.length) {
Zotero.logError(`File ${fileName} will be skipped due to path exceeding filesystem limits: ${tmpFile}`);
continue;
}
Zotero.debug(`${fileName} will be truncated by ${surplus} characters`);
fileName = Zotero.File.truncateFileName(fileName, fileName.length - surplus);
tmpFile = OS.Path.join(Zotero.getTempDirectory().path, `m-api-${this.timestamp}-${file.id}`, fileName);
}
this._tmpFilesToDelete.push(tmpFile);
caller.add(this._fetchFile.bind(this, file.id, tmpFile));
files.push({