fixing, once again, a crash wit too long path

This commit is contained in:
Lionel Dricot 2022-02-13 16:35:30 +01:00
parent ed5298b67e
commit 67fbf9902e
2 changed files with 10 additions and 4 deletions

View File

@ -2,7 +2,7 @@
## 0.4 - Unreleased ## 0.4 - Unreleased
- Pictures are now displayed directely in terminal (suggested by kelbot) - Pictures are now displayed directely in terminal (suggested by kelbot)
- Introducing the "open" command to open current page with external handler. - Introducing the "open" command to open current page/image/file with external handler.
- "set width XX" will now work everywhere (thanks kelbot for reporting the bug) - "set width XX" will now work everywhere (thanks kelbot for reporting the bug)
- Improved syncing performances and multiple bug/crash fixes. - Improved syncing performances and multiple bug/crash fixes.

View File

@ -713,7 +713,7 @@ class HtmlRenderer(AbstractRenderer):
size = 40 size = 40
else: else:
size = width size = width
ansi_img = renderer.get_body(width=size) ansi_img = "\n" + renderer.get_body(width=size)
except Exception as err: except Exception as err:
#we sometimes encounter really bad formatted files or URL #we sometimes encounter really bad formatted files or URL
ansi_img += "[BAD IMG] %s"%src ansi_img += "[BAD IMG] %s"%src
@ -780,6 +780,8 @@ class HtmlRenderer(AbstractRenderer):
title = "\x1b[1;34m\x1b[4m" + self.get_title() + "\x1b[0m""\n" title = "\x1b[1;34m\x1b[4m" + self.get_title() + "\x1b[0m""\n"
title = textwrap.fill(title,width) title = textwrap.fill(title,width)
r_body = title + "\n" + r_body r_body = title + "\n" + r_body
#We try to avoid huge empty gaps in the page
r_body = r_body.replace("\n\n\n\n","\n\n").replace("\n\n\n","\n\n")
return r_body,links return r_body,links
# Mapping mimetypes with renderers # Mapping mimetypes with renderers
@ -867,6 +869,9 @@ class GeminiItem():
#if not local, we create a local cache path. #if not local, we create a local cache path.
self._cache_path = os.path.expanduser(_CACHE_PATH + self.scheme +\ self._cache_path = os.path.expanduser(_CACHE_PATH + self.scheme +\
"/" + self.host + self.path) "/" + self.host + self.path)
#Theres an OSlimitation of 260 characters per path.
#We will thus cut the path enough to add the index afterward
self._cache_path = self._cache_path[:249]
# FIXME : this is a gross hack to give a name to # FIXME : this is a gross hack to give a name to
# index files. This will break if the index is not # index files. This will break if the index is not
# index.gmi. I dont know how to know the real name # index.gmi. I dont know how to know the real name
@ -923,7 +928,8 @@ class GeminiItem():
# fetching it. # fetching it.
if len(self._cache_path) > 259: if len(self._cache_path) > 259:
self.links = [] self.links = []
return True print("We return False because path is too long")
return False
if os.path.exists(self._cache_path): if os.path.exists(self._cache_path):
if validity > 0 : if validity > 0 :
last_modification = self.cache_last_modified() last_modification = self.cache_last_modified()
@ -1122,7 +1128,7 @@ class GeminiItem():
path = self._cache_path path = self._cache_path
if path.endswith(".gmi"): if path.endswith(".gmi"):
mime = "text/gemini" mime = "text/gemini"
elif _HAS_MAGIC: elif _HAS_MAGIC :
mime = magic.from_file(path,mime=True) mime = magic.from_file(path,mime=True)
else: else:
mime,encoding = mimetypes.guess_type(path,strict=False) mime,encoding = mimetypes.guess_type(path,strict=False)