On Wed, Sep 29, 2010 at 5:45 PM, Philip Martin <philip.mar...@wandisco.com> wrote:
> Please write a log message: --------- This patch makes use of find_directory() on Haiku to locate the proper directories to use. Currently B_USER_SETTINGS_DIRECTORY points to /boot/home/config/settings, so this puts the .subversion directory in /boot/home/config/settings/subversion instead of $HOME/subversion or $HOME/.subversion. Patch by: Scott McCreary <scott...@gmail.com> (HaikuPorts) Found by: Chris Roberts <cpr...@gmail.com> (HaikuPorts) Review by: ------- > http://subversion.apache.org/docs/community-guide/conventions.html#log-messages > > Please use spaces rather than tabs for indentation. > >> Index: subversion/libsvn_subr/config_file.c >> =================================================================== >> --- subversion/libsvn_subr/config_file.c (revision 1002716) >> +++ subversion/libsvn_subr/config_file.c (working copy) >> @@ -38,6 +38,11 @@ >> >> #include "svn_private_config.h" >> >> +#ifdef __HAIKU__ >> +# include <FindDirectory.h> >> +# include <StorageDefs.h> >> +#endif >> + >> /* Used to terminate lines in large multi-line string literals. */ >> #define NL APR_EOL_STR >> >> @@ -331,7 +336,19 @@ >> SVN_CONFIG__SUBDIRECTORY, fname, NULL); >> } >> >> -#else /* ! WIN32 */ >> +#elif defined(__HAIKU__) >> +{ >> + char folder[B_PATH_NAME_LENGTH]; >> + >> + status_t error = find_directory (B_USER_SETTINGS_DIRECTORY, -1, false, >> + folder, >> sizeof(folder)); >> + if (error) >> + return SVN_NO_ERROR; >> + >> + *path_p = svn_path_join_many (pool, folder, >> + >> SVN_CONFIG__USR_DIRECTORY, fname, NULL); > > Why is that using SVN_CONFIG__USR_DIRECTORY? Should that be __SYS_? Using __USR_ seems to have the desired effect, perhaps I'm using it wrong. See other reply below. > >> +} >> +#else /* ! WIN32 && !__HAIKU__ */ >> >> *path_p = svn_dirent_join_many(pool, SVN_CONFIG__SYS_DIRECTORY, fname, >> NULL); >> >> @@ -1116,8 +1133,21 @@ >> *path = svn_dirent_join_many(pool, folder, >> SVN_CONFIG__SUBDIRECTORY, fname, NULL); >> } >> + >> +#elif defined(__HAIKU__) >> +{ >> + char folder[B_PATH_NAME_LENGTH]; >> + >> + status_t error = find_directory (B_USER_SETTINGS_DIRECTORY, -1, false, >> + folder, >> sizeof(folder)); >> + if (error) >> + return SVN_NO_ERROR; >> + >> + *path = svn_path_join_many (pool, folder, >> + >> SVN_CONFIG__USR_DIRECTORY, fname, NULL); >> +} >> +#else /* ! WIN32 && !__HAIKU__ */ >> >> -#else /* ! WIN32 */ >> { >> const char *homedir = svn_user_get_homedir(pool); >> if (! homedir) >> Index: subversion/libsvn_subr/config_impl.h >> =================================================================== >> --- subversion/libsvn_subr/config_impl.h (revision 1002716) >> +++ subversion/libsvn_subr/config_impl.h (working copy) >> @@ -114,8 +114,11 @@ >> or svn_config_get_user_config_path() instead. */ >> #ifdef WIN32 >> # define SVN_CONFIG__SUBDIRECTORY "Subversion" >> -#else /* ! WIN32 */ >> +#elif defined __HAIKU__ /* HAIKU */ >> # define SVN_CONFIG__SYS_DIRECTORY "/etc/subversion" > > Should this be used in svn_config__sys_config_path? > I'm unclear on what SVN_CONFIG__SYS_DIRECTORY is used for. Through several attempts I was able to move the $HOME/.subversion directory to /boot/home/config/settings/subversion which fits in better with how Haiku stores users' settings. So I left SVN_CONFIG__SYS_DIRECTORY the same as other OSes for now. >> +# define SVN_CONFIG__USR_DIRECTORY "subversion" >> +#else /* ! WIN32 && ! __HAIKU__ */ >> +# define SVN_CONFIG__SYS_DIRECTORY "/etc/subversion" >> # define SVN_CONFIG__USR_DIRECTORY ".subversion" >> #endif /* WIN32 */ >> > > -- > Philip > Attached is an updated version of the patch, fixing the tabs/spaces issue, and a renamed function that I caught. -scottmc Index: libsvn_subr/config_file.c =================================================================== --- libsvn_subr/config_file.c (revision 1002735) +++ libsvn_subr/config_file.c (working copy) @@ -38,6 +38,11 @@ #include "svn_private_config.h" +#ifdef __HAIKU__ +# include <FindDirectory.h> +# include <StorageDefs.h> +#endif + /* Used to terminate lines in large multi-line string literals. */ #define NL APR_EOL_STR @@ -331,8 +336,20 @@ SVN_CONFIG__SUBDIRECTORY, fname, NULL); } -#else /* ! WIN32 */ +#elif defined(__HAIKU__) + { + char folder[B_PATH_NAME_LENGTH]; + status_t error = find_directory(B_USER_SETTINGS_DIRECTORY, -1, false, + folder, sizeof(folder)); + if (error) + return SVN_NO_ERROR; + + *path_p = svn_dirent_join_many(pool, folder, + SVN_CONFIG__USR_DIRECTORY, fname, NULL); + } +#else /* ! WIN32 && !__HAIKU__ */ + *path_p = svn_dirent_join_many(pool, SVN_CONFIG__SYS_DIRECTORY, fname, NULL); #endif /* WIN32 */ @@ -1117,8 +1134,21 @@ SVN_CONFIG__SUBDIRECTORY, fname, NULL); } -#else /* ! WIN32 */ +#elif defined(__HAIKU__) { + char folder[B_PATH_NAME_LENGTH]; + + status_t error = find_directory(B_USER_SETTINGS_DIRECTORY, -1, false, + folder, sizeof(folder)); + if (error) + return SVN_NO_ERROR; + + *path = svn_dirent_join_many(pool, folder, + SVN_CONFIG__USR_DIRECTORY, fname, NULL); + } +#else /* ! WIN32 && !__HAIKU__ */ + + { const char *homedir = svn_user_get_homedir(pool); if (! homedir) return SVN_NO_ERROR; Index: libsvn_subr/config_impl.h =================================================================== --- libsvn_subr/config_impl.h (revision 1002735) +++ libsvn_subr/config_impl.h (working copy) @@ -114,8 +114,11 @@ or svn_config_get_user_config_path() instead. */ #ifdef WIN32 # define SVN_CONFIG__SUBDIRECTORY "Subversion" -#else /* ! WIN32 */ +#elif defined __HAIKU__ /* HAIKU */ # define SVN_CONFIG__SYS_DIRECTORY "/etc/subversion" +# define SVN_CONFIG__USR_DIRECTORY "subversion" +#else /* ! WIN32 && ! __HAIKU__ */ +# define SVN_CONFIG__SYS_DIRECTORY "/etc/subversion" # define SVN_CONFIG__USR_DIRECTORY ".subversion" #endif /* WIN32 */ --------------------------------------------------------------