[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [41478] trunk/blender: patch [#28947] Patches for #28943 (Support for XDG Base Directory Specification)
Campbell Barton
ideasman42 at gmail.com
Wed Nov 2 23:00:23 CET 2011
Revision: 41478
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=41478
Author: campbellbarton
Date: 2011-11-02 22:00:22 +0000 (Wed, 02 Nov 2011)
Log Message:
-----------
patch [#28947] Patches for #28943 (Support for XDG Base Directory Specification)
from Cosme
Modified Paths:
--------------
trunk/blender/CMakeLists.txt
trunk/blender/intern/ghost/CMakeLists.txt
trunk/blender/intern/ghost/intern/GHOST_SystemPathsX11.cpp
trunk/blender/source/blender/blenlib/CMakeLists.txt
trunk/blender/source/blender/blenlib/intern/path_util.c
Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt 2011-11-02 21:35:00 UTC (rev 41477)
+++ trunk/blender/CMakeLists.txt 2011-11-02 22:00:22 UTC (rev 41478)
@@ -157,6 +157,8 @@
if(UNIX AND NOT APPLE)
option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
option(WITH_BUILTIN_GLEW "Use GLEW OpenGL wrapper library bundled with blender" ON)
+ option(WITH_XDG_USER_DIRS "Build with XDG Base Directory Specification (only config and documents for now)" OFF)
+ mark_as_advanced(WITH_XDG_USER_DIRS)
else()
# not an option for other OS's
set(WITH_BUILTIN_GLEW ON)
Modified: trunk/blender/intern/ghost/CMakeLists.txt
===================================================================
--- trunk/blender/intern/ghost/CMakeLists.txt 2011-11-02 21:35:00 UTC (rev 41477)
+++ trunk/blender/intern/ghost/CMakeLists.txt 2011-11-02 22:00:22 UTC (rev 41478)
@@ -108,6 +108,10 @@
)
endif()
+if(WITH_XDG_USER_DIRS)
+ add_definitions(-DWITH_XDG_USER_DIRS)
+endif()
+
if(WITH_HEADLESS OR WITH_GHOST_SDL)
if(WITH_HEADLESS)
list(APPEND SRC
Modified: trunk/blender/intern/ghost/intern/GHOST_SystemPathsX11.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemPathsX11.cpp 2011-11-02 21:35:00 UTC (rev 41477)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemPathsX11.cpp 2011-11-02 22:00:22 UTC (rev 41478)
@@ -41,6 +41,11 @@
#include <stdio.h> // for fprintf only
#include <cstdlib> // for exit
+#ifdef WITH_XDG_USER_DIRS
+# include <pwd.h> // for get home without use getenv()
+# include <limits.h> // for PATH_MAX
+#endif
+
#ifdef PREFIX
static const char *static_path= PREFIX "/share" ;
#else
@@ -63,7 +68,27 @@
const GHOST_TUns8* GHOST_SystemPathsX11::getUserDir() const
{
+#ifndef WITH_XDG_USER_DIRS
return (const GHOST_TUns8 *)getenv("HOME");
+#else /* WITH_XDG_USER_DIRS */
+ const char *home= getenv("XDG_CONFIG_HOME");
+
+ if (home) {
+ return (const GHOST_TUns8 *)home;
+ }
+ else {
+ static char user_path[PATH_MAX];
+
+ home= getenv("HOME");
+
+ if (home == NULL) {
+ home= getpwuid(getuid())->pw_dir;
+ }
+
+ snprintf(user_path, sizeof(user_path), "%s/.config", home);
+ return (const GHOST_TUns8 *)user_path;
+ }
+#endif /* WITH_XDG_USER_DIRS */
}
const GHOST_TUns8* GHOST_SystemPathsX11::getBinaryDir() const
Modified: trunk/blender/source/blender/blenlib/CMakeLists.txt
===================================================================
--- trunk/blender/source/blender/blenlib/CMakeLists.txt 2011-11-02 21:35:00 UTC (rev 41477)
+++ trunk/blender/source/blender/blenlib/CMakeLists.txt 2011-11-02 22:00:22 UTC (rev 41478)
@@ -148,4 +148,8 @@
add_definitions(-DPARALLEL=1)
endif()
+if(WITH_XDG_USER_DIRS)
+ add_definitions(-DWITH_XDG_USER_DIRS)
+endif()
+
blender_add_lib(bf_blenlib "${SRC}" "${INC}" "${INC_SYS}")
Modified: trunk/blender/source/blender/blenlib/intern/path_util.c
===================================================================
--- trunk/blender/source/blender/blenlib/intern/path_util.c 2011-11-02 21:35:00 UTC (rev 41477)
+++ trunk/blender/source/blender/blenlib/intern/path_util.c 2011-11-02 22:00:22 UTC (rev 41478)
@@ -52,7 +52,7 @@
#include "GHOST_Path-api.h"
#if defined WIN32 && !defined _LIBC
-# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */
+# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */
#else
# ifndef _GNU_SOURCE
# define _GNU_SOURCE
@@ -61,35 +61,34 @@
#endif
#ifdef WIN32
-#include <io.h>
-
-#ifdef _WIN32_IE
-#undef _WIN32_IE
-#endif
-#define _WIN32_IE 0x0501
-#include <windows.h>
-#include <shlobj.h>
-
-#include "BLI_winstuff.h"
-
+# include <io.h>
+# ifdef _WIN32_IE
+# undef _WIN32_IE
+# endif
+# define _WIN32_IE 0x0501
+# include <windows.h>
+# include <shlobj.h>
+# include "BLI_winstuff.h"
#else /* non windows */
-
-#ifdef WITH_BINRELOC
-#include "binreloc.h"
-#endif
-
+# ifdef WITH_BINRELOC
+# include "binreloc.h"
+# endif
#endif /* WIN32 */
/* standard paths */
#ifdef WIN32
-#define BLENDER_USER_FORMAT "%s\\Blender Foundation\\Blender\\%s"
-#define BLENDER_SYSTEM_FORMAT "%s\\Blender Foundation\\Blender\\%s"
+# define BLENDER_USER_FORMAT "%s\\Blender Foundation\\Blender\\%s"
+# define BLENDER_SYSTEM_FORMAT "%s\\Blender Foundation\\Blender\\%s"
#elif defined(__APPLE__)
-#define BLENDER_USER_FORMAT "%s/Blender/%s"
-#define BLENDER_SYSTEM_FORMAT "%s/Blender/%s"
-#else
-#define BLENDER_USER_FORMAT "%s/.blender/%s"
-#define BLENDER_SYSTEM_FORMAT "%s/blender/%s"
+# define BLENDER_USER_FORMAT "%s/Blender/%s"
+# define BLENDER_SYSTEM_FORMAT "%s/Blender/%s"
+#else /* UNIX */
+# ifndef WITH_XDG_USER_DIRS /* oldschool unix ~/.blender/ */
+# define BLENDER_USER_FORMAT "%s/.blender/%s"
+# else /* new XDG ~/blender/.config/ */
+# define BLENDER_USER_FORMAT "%s/blender/%s"
+# endif // WITH_XDG_USER_DIRS
+# define BLENDER_SYSTEM_FORMAT "%s/blender/%s"
#endif
/* local */
@@ -797,10 +796,18 @@
as default location to save documents */
const char *BLI_getDefaultDocumentFolder(void)
{
- #if !defined(WIN32)
+#ifndef WIN32
+
+#ifdef WITH_XDG_USER_DIRS
+ const char *xdg_documents_dir= getenv("XDG_DOCUMENTS_DIR");
+ if (xdg_documents_dir) {
+ return xdg_documents_dir;
+ }
+#endif
+
return getenv("HOME");
- #else /* Windows */
+#else /* Windows */
const char * ret;
static char documentfolder[MAXPATHLEN];
HRESULT hResult;
@@ -825,7 +832,7 @@
}
return NULL;
- #endif
+#endif /* WIN32 */
}
/* NEW stuff, to be cleaned up when fully migrated */
More information about the Bf-blender-cvs
mailing list