From 60aa32695ab942ae7c4cb5f8b4f072acefb2a6d6 Mon Sep 17 00:00:00 2001 From: Ondrej Flidr Date: Wed, 21 Apr 2021 13:37:10 +0200 Subject: [PATCH] fix path lenght for ecryptfs --- src/Mod/AddonManager/addonmanager_workers.py | 22 ++++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/src/Mod/AddonManager/addonmanager_workers.py b/src/Mod/AddonManager/addonmanager_workers.py index f1fe3bcee4..37c3db0b67 100644 --- a/src/Mod/AddonManager/addonmanager_workers.py +++ b/src/Mod/AddonManager/addonmanager_workers.py @@ -600,8 +600,8 @@ class ShowWorker(QtCore.QThread): name = path.split("/")[-1] if name and path.startswith("http"): storename = os.path.join(store, name) - if len(storename) >= 260: - remainChars = 259 - (len(store) + len(wbName) + 1) + if len(storename) >= fscharlimit: + remainChars = (fscharlimit - 1) - (len(store) + len(wbName) + 1) storename = os.path.join(store, wbName+name[-remainChars:]) if not os.path.exists(storename): try: @@ -611,13 +611,17 @@ class ShowWorker(QtCore.QThread): except Exception: print("AddonManager: Debug: Error retrieving image from", path) else: - f = open(storename, "wb") - f.write(imagedata) - f.close() - - # resize the image to 300x300px if needed - img = QtGui.QImage(storename) - if (img.width() > 300) or (img.height() > 300): + try: + f = open(storename, "wb") + except OSError: + # ecryptfs (and probably not only ecryptfs) has lower length limit for path + storename = storename[-140:] + f = open(storename, "wb") + f.write(imagedata) + f.close() + # resize the image to 300x300px if needed + img = QtGui.QImage(storename) + if (img.width() > 300) or (img.height() > 300): pix = QtGui.QPixmap() pix = pix.fromImage(img.scaled(300, 300, QtCore.Qt.KeepAspectRatio,