[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: [PATCH] for building subversion 1.6.12 for haiku

From: scott mc <scottmc2_at_gmail.com>
Date: Wed, 29 Sep 2010 19:57:50 +0000

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

This is an archived mail posted to the Subversion Dev mailing list.