On Wed, Sep 29, 2010 at 5:45 PM, Philip Martin
<philip.martin_at_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 <scottmc2_at_gmail.com> (HaikuPorts)
Found by: Chris Roberts <cpr420_at_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 */
--------------------------------------------------------------
Received on 2010-09-29 21:58:34 CEST