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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2008-09-22 19:37:32 +0400
committerCampbell Barton <ideasman42@gmail.com>2008-09-22 19:37:32 +0400
commite4def00d5bc8c4b2947f74d2b5c3308ae07a4eee (patch)
treec417d2273fb5ac9aa7b89e63f7dd3212a1de4628 /source/blender/blenlib
parentbc151f133478dff9190fae6e63e58dc7cdbfeb75 (diff)
fix for [#15020] File browser: going back from the root of all directories introduces "../" ad libitum + harcoded path?
bug was introduced when fixing BLI_cleanup_dir not to write to negative character indicies. added a BLI_parent_dir(char *path)
Diffstat (limited to 'source/blender/blenlib')
-rw-r--r--source/blender/blenlib/BLI_blenlib.h3
-rw-r--r--source/blender/blenlib/intern/util.c15
2 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/blenlib/BLI_blenlib.h b/source/blender/blenlib/BLI_blenlib.h
index 6a50e2de0e5..4bbda9709d7 100644
--- a/source/blender/blenlib/BLI_blenlib.h
+++ b/source/blender/blenlib/BLI_blenlib.h
@@ -137,6 +137,9 @@ void BLI_dlist_reinit(struct DynamicList *dlist);
void BLI_cleanup_file(const char *relabase, char *dir);
void BLI_cleanup_dir(const char *relabase, char *dir); /* same as above but adds a trailing slash */
+/* go back one directory */
+int BLI_parent_dir(char *path);
+
/**
* Blender's path code replacement function.
* Bases @a path strings leading with "//" by the
diff --git a/source/blender/blenlib/intern/util.c b/source/blender/blenlib/intern/util.c
index 9dfe9557c1b..1630842be05 100644
--- a/source/blender/blenlib/intern/util.c
+++ b/source/blender/blenlib/intern/util.c
@@ -1058,6 +1058,21 @@ void BLI_makestringcode(const char *relfile, char *file)
}
}
+int BLI_parent_dir(char *path)
+{
+ char tmp[FILE_MAXDIR+FILE_MAXFILE+4];
+ BLI_strncpy(tmp, path, sizeof(tmp));
+ BLI_add_slash(tmp);
+ strcat(tmp, "../");
+ BLI_cleanup_dir(NULL, tmp);
+
+ if (!BLI_testextensie(tmp, "../")) {
+ BLI_strncpy(path, tmp, sizeof(tmp));
+ return 1;
+ } else {
+ return 0;
+ }
+}
int BLI_convertstringframe(char *path, int frame)
{