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 */


--------------------------------------------------------------

Reply via email to