[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [30380] trunk/blender/source/blender/ blenlib/intern/path_util.c: Fix for use of path environment variables, was not appending subfolder.

Brecht Van Lommel brecht at blender.org
Thu Jul 15 17:03:42 CEST 2010


Revision: 30380
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=30380
Author:   blendix
Date:     2010-07-15 17:03:42 +0200 (Thu, 15 Jul 2010)

Log Message:
-----------
Fix for use of path environment variables, was not appending subfolder.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/intern/path_util.c

Modified: trunk/blender/source/blender/blenlib/intern/path_util.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/path_util.c	2010-07-15 13:34:14 UTC (rev 30379)
+++ trunk/blender/source/blender/blenlib/intern/path_util.c	2010-07-15 15:03:42 UTC (rev 30380)
@@ -947,13 +947,13 @@
 	}
 }
 
-static int test_env_path(char *path, char *envvar)
+static int test_env_path(char *path, char *subfolder_name, char *envvar)
 {
 	char *env = envvar?getenv(envvar):NULL;
 	if (!env) return 0;
 	
 	if (BLI_is_dir(env)) {
-		BLI_strncpy(path, env, FILE_MAX);
+		BLI_make_file_string("/", path, env, subfolder_name);
 		return 1;
 	} else {
 		path[0] = '\0';
@@ -1002,14 +1002,14 @@
 	return 0;
 }
 
-static int get_path_user(char *targetpath, char *folder_name, char *envvar)
+static int get_path_user(char *targetpath, char *folder_name, char *subfolder_name, char *envvar)
 {
 	char user_path[FILE_MAX];
 	const char *user_base_path;
 	
 	user_path[0] = '\0';
 
-	if (test_env_path(targetpath, envvar))
+	if (test_env_path(targetpath, subfolder_name, envvar))
 		return 1;
 	
 	user_base_path = (const char *)GHOST_getUserDir();
@@ -1028,14 +1028,14 @@
 	return test_path(targetpath, user_path, NULL, folder_name);
 }
 
-static int get_path_system(char *targetpath, char *folder_name, char *envvar)
+static int get_path_system(char *targetpath, char *folder_name, char *subfolder_name, char *envvar)
 {
 	char system_path[FILE_MAX];
 	const char *system_base_path;
 
 	system_path[0] = '\0';
 
-	if (test_env_path(targetpath, envvar))
+	if (test_env_path(targetpath, subfolder_name, envvar))
 		return 1;
 
 	system_base_path = (const char *)GHOST_getSystemDir();
@@ -1065,66 +1065,66 @@
 		case BLENDER_DATAFILES:		/* general case */
 			BLI_join_dirfile(search_path, "datafiles", subfolder);
 			if (get_path_local(path, search_path)) break;
-			if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES"))	break;
-			if (get_path_system(path, search_path, "BLENDER_SYSTEM_DATAFILES")) break;
+			if (get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES"))	break;
+			if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_DATAFILES")) break;
 			return NULL;
 			
 		case BLENDER_USER_DATAFILES:
 			BLI_join_dirfile(search_path, "datafiles", subfolder);
 			if (get_path_local(path, search_path)) break;
-			if (get_path_user(path, search_path, "BLENDER_USER_DATAFILES"))	break;
+			if (get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES"))	break;
 			return NULL;
 			
 		case BLENDER_SYSTEM_DATAFILES:
 			BLI_join_dirfile(search_path, "datafiles", subfolder);
-			if (get_path_system(path, search_path, "BLENDER_SYSTEM_DATAFILES"))	break;
+			if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_DATAFILES"))	break;
 			return NULL;
 			
 		case BLENDER_CONFIG:		/* general case */
 			BLI_join_dirfile(search_path, "config", subfolder);
 			if (get_path_local(path, search_path)) break;
-			if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break;
-			if (get_path_system(path, search_path, "BLENDER_SYSTEM_CONFIG")) break;
+			if (get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG")) break;
+			if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_CONFIG")) break;
 			return NULL;
 			
 		case BLENDER_USER_CONFIG:
 			BLI_join_dirfile(search_path, "config", subfolder);
 			if (get_path_local(path, search_path)) break;
-			if (get_path_user(path, search_path, "BLENDER_USER_CONFIG")) break;
+			if (get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG")) break;
 			return NULL;
 			
 		case BLENDER_SYSTEM_CONFIG:
 			BLI_join_dirfile(search_path, "config", subfolder);
-			if (get_path_system(path, search_path, "BLENDER_SYSTEM_CONFIG")) break;
+			if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_CONFIG")) break;
 			return NULL;
 			
 		case BLENDER_SCRIPTS:		/* general case */
 			BLI_join_dirfile(search_path, "scripts", subfolder);
 			if (get_path_local(path, search_path)) break;
-			if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break;		
-			if (get_path_system(path, search_path, "BLENDER_SYSTEM_SCRIPTS")) break;
+			if (get_path_user(path, search_path, subfolder, "BLENDER_USER_SCRIPTS")) break;		
+			if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_SCRIPTS")) break;
 			return NULL;
 			
 		case BLENDER_USER_SCRIPTS:
 			BLI_join_dirfile(search_path, "scripts", subfolder);
 			if (get_path_local(path, search_path)) break;
-			if (get_path_user(path, search_path, "BLENDER_USER_SCRIPTS")) break;
+			if (get_path_user(path, search_path, subfolder, "BLENDER_USER_SCRIPTS")) break;
 			return NULL;
 			
 		case BLENDER_SYSTEM_SCRIPTS:
 			BLI_join_dirfile(search_path, "scripts", subfolder);
-			if (get_path_system(path, search_path, "BLENDER_SYSTEM_SCRIPTS")) break;
+			if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_SCRIPTS")) break;
 			return NULL;
 			
 		case BLENDER_PYTHON:		/* general case */
 			BLI_join_dirfile(search_path, "python", subfolder);
 			if (get_path_local(path, search_path)) break;
-			if (get_path_system(path, search_path, "BLENDER_SYSTEM_PYTHON")) break;
+			if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_PYTHON")) break;
 			return NULL;
 			
 		case BLENDER_SYSTEM_PYTHON:
 			BLI_join_dirfile(search_path, "python", subfolder);
-			if (get_path_system(path, search_path, "BLENDER_SYSTEM_PYTHON")) break;
+			if (get_path_system(path, search_path, subfolder, "BLENDER_SYSTEM_PYTHON")) break;
 			return NULL;
 	}
 	
@@ -1139,11 +1139,11 @@
 	switch (folder_id) {
 		case BLENDER_USER_DATAFILES:
 			BLI_join_dirfile(search_path, "datafiles", subfolder);
-			get_path_user(path, search_path, "BLENDER_USER_DATAFILES");
+			get_path_user(path, search_path, subfolder, "BLENDER_USER_DATAFILES");
 			break;
 		case BLENDER_USER_CONFIG:
 			BLI_join_dirfile(search_path, "config", subfolder);
-			get_path_user(path, search_path, "BLENDER_USER_CONFIG");
+			get_path_user(path, search_path, subfolder, "BLENDER_USER_CONFIG");
 			break;
 	}
 	if ('\0' == path[0]) {





More information about the Bf-blender-cvs mailing list