Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender-addons.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'io_scene_obj')
-rw-r--r--io_scene_obj/__init__.py2
-rw-r--r--io_scene_obj/import_obj.py22
2 files changed, 23 insertions, 1 deletions
diff --git a/io_scene_obj/__init__.py b/io_scene_obj/__init__.py
index ae3780bd..fdcb3021 100644
--- a/io_scene_obj/__init__.py
+++ b/io_scene_obj/__init__.py
@@ -21,7 +21,7 @@
bl_info = {
"name": "Wavefront OBJ format",
"author": "Campbell Barton, Bastien Montagne",
- "version": (3, 5, 9),
+ "version": (3, 5, 10),
"blender": (2, 80, 0),
"location": "File > Import-Export",
"description": "Import-Export OBJ, Import OBJ mesh, UV's, materials and textures",
diff --git a/io_scene_obj/import_obj.py b/io_scene_obj/import_obj.py
index c565bd05..78d80872 100644
--- a/io_scene_obj/import_obj.py
+++ b/io_scene_obj/import_obj.py
@@ -62,7 +62,21 @@ def filenames_group_by_ext(line, ext):
"""
Splits material libraries supporting spaces, so:
b'foo bar.mtl baz spam.MTL' -> (b'foo bar.mtl', b'baz spam.MTL')
+ Also handle " chars (some softwares use those to protect filenames with spaces, see T67266... sic).
"""
+ # Note that we assume that if there are some " in that line,
+ # then all filenames are properly enclosed within those...
+ start = line.find(b'"') + 1
+ if start != 0:
+ while start != 0:
+ end = line.find(b'"', start)
+ if end != -1:
+ yield line[start:end]
+ start = line.find(b'"', end + 1) + 1
+ else:
+ break
+ return
+
line_lower = line.lower()
i_prev = 0
while i_prev != -1 and i_prev < len(line):
@@ -79,8 +93,16 @@ def obj_image_load(context_imagepath_map, line, DIR, recursive, relpath):
But we try all space-separated items from current line when file is not found with last one
(users keep generating/using image files with spaces in a format that does not support them, sigh...)
Also tries to replace '_' with ' ' for Max's exporter replaces spaces with underscores.
+ Also handle " chars (some softwares use those to protect filenames with spaces, see T67266... sic).
"""
filepath_parts = line.split(b' ')
+
+ start = line.find(b'"') + 1
+ if start != 0:
+ end = line.find(b'"', start)
+ if end != 0:
+ filepath_parts = (line[start:end],)
+
image = None
for i in range(-1, -len(filepath_parts), -1):
imagepath = os.fsdecode(b" ".join(filepath_parts[i:]))