[Bf-blender-cvs] [ffb0fc3] asset-experiments: Get rid of BLO_is_a_library.
Bastien Montagne
noreply at git.blender.org
Mon Dec 8 16:43:06 CET 2014
Commit: ffb0fc35a92693b9d7d4e3ce54790982aedf5851
Author: Bastien Montagne
Date: Mon Dec 8 13:59:32 2014 +0100
Branches: asset-experiments
https://developer.blender.org/rBffb0fc35a92693b9d7d4e3ce54790982aedf5851
Get rid of BLO_is_a_library.
===================================================================
M source/blender/blenloader/BLO_readfile.h
M source/blender/blenloader/intern/readfile.c
M source/blender/editors/space_file/file_ops.c
M source/blender/editors/space_file/filelist.c
===================================================================
diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h
index 11f4379..cb0e90b 100644
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@ -207,12 +207,6 @@ bool BLO_has_bfile_extension(const char *str);
*/
bool BLO_library_path_explode(const char *path, char *r_dir, char *r_group, char *r_name);
-/**
- * return ok when a blenderfile, in dir is the filename,
- * in group the type of libdata
- */
-bool BLO_is_a_library(const char *path, char *dir, char *group);
-
/**
* Initialize the BlendHandle for appending or linking library data.
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index e7a6a6a..9072fed 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -1152,7 +1152,7 @@ bool BLO_library_path_explode(const char *path, char *r_dir, char *r_group, char
* then we now next path item is group, and everything else is data name. */
char *slash, *prev_slash = NULL;
- strcpy(r_dir, path);
+ r_dir[0] = '\0';
if (r_group) {
r_group[0] = '\0';
}
@@ -1160,6 +1160,13 @@ bool BLO_library_path_explode(const char *path, char *r_dir, char *r_group, char
r_name[0] = '\0';
}
+ /* if path leads to an existing directory or file, we can be sure we're not in a library */
+ if (BLI_is_dir(path) || BLI_is_file(path)) {
+ return false;
+ }
+
+ strcpy(r_dir, path);
+
while ((slash = (char *)BLI_last_slash(r_dir))) {
*slash = '\0';
if (BLO_has_bfile_extension(r_dir)) {
@@ -1167,7 +1174,7 @@ bool BLO_library_path_explode(const char *path, char *r_dir, char *r_group, char
}
if (prev_slash) {
- *prev_slash = '/';
+ *prev_slash = SEP;
}
prev_slash = slash;
}
@@ -1193,49 +1200,6 @@ bool BLO_library_path_explode(const char *path, char *r_dir, char *r_group, char
return true;
}
-bool BLO_is_a_library(const char *path, char *dir, char *group)
-{
- /* return ok when a blenderfile, in dir is the filename,
- * in group the type of libdata
- */
- int len;
- char *fd;
-
- /* if path leads to a directory we can be sure we're not in a library */
- if (BLI_is_dir(path)) return 0;
-
- strcpy(dir, path);
- len = strlen(dir);
- if (len < 7) return 0;
- if ((dir[len - 1] != '/') && (dir[len - 1] != '\\')) return 0;
-
- group[0] = '\0';
- dir[len - 1] = '\0';
-
- /* Find the last slash */
- fd = (char *)BLI_last_slash(dir);
-
- if (fd == NULL) return 0;
- *fd = 0;
- if (BLO_has_bfile_extension(fd+1)) {
- /* the last part of the dir is a .blend file, no group follows */
- *fd = '/'; /* put back the removed slash separating the dir and the .blend file name */
- }
- else {
- const char * const gp = fd + 1; // in case we have a .blend file, gp points to the group
-
- /* Find the last slash */
- fd = (char *)BLI_last_slash(dir);
- if (!fd || !BLO_has_bfile_extension(fd+1)) return 0;
-
- /* now we know that we are in a blend file and it is safe to
- * assume that gp actually points to a group */
- if (strcmp("Screen", gp) != 0)
- BLI_strncpy(group, gp, BLO_GROUP_MAX);
- }
- return 1;
-}
-
/* ************** OLD POINTERS ******************* */
static void *newdataadr(FileData *fd, void *adr) /* only direct databocks */
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index 577a0c0..02cd76b 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -869,7 +869,7 @@ int file_parent_exec(bContext *C, wmOperator *UNUSED(unused))
/* if not browsing in .blend file, we still want to check whether the path is a directory */
if (sfile->params->type == FILE_LOADLIB) {
char tdir[FILE_MAX], tgroup[FILE_MAX];
- if (BLO_is_a_library(sfile->params->dir, tdir, tgroup)) {
+ if (BLO_library_path_explode(sfile->params->dir, tdir, NULL, NULL)) {
file_change_dir(C, 0);
}
else {
@@ -1350,7 +1350,7 @@ void file_filename_enter_handle(bContext *C, void *UNUSED(arg_unused), void *arg
else if (sfile->params->type == FILE_LOADLIB) {
char tdir[FILE_MAX], tgroup[FILE_MAX];
BLI_add_slash(filepath);
- if (BLO_is_a_library(filepath, tdir, tgroup)) {
+ if (BLO_library_path_explode(filepath, tdir, NULL, NULL)) {
BLI_cleanup_dir(G.main->name, filepath);
BLI_strncpy(sfile->params->dir, filepath, sizeof(sfile->params->dir));
sfile->params->file[0] = '\0';
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index e736dd6..5397a46 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -1375,7 +1375,7 @@ void filelist_sort(struct FileList *filelist, short sort)
bool filelist_islibrary(struct FileList *filelist, char *dir, char *group)
{
- return BLO_is_a_library(filelist->dir, dir, group);
+ return BLO_library_path_explode(filelist->dir, dir, group, NULL);
}
static int groupname_to_code(const char *group)
More information about the Bf-blender-cvs
mailing list