[haiku-commits] BRANCH mmadia-github.separate-build-environment - src/build/libroot headers/build/posix_target/sys

  • From: mmadia-github.separate-build-environment <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 9 Aug 2012 04:49:19 +0200 (CEST)

added 1 changeset to branch 
'refs/remotes/mmadia-github/separate-build-environment'
old head: 801d46ec2c481cef601771f271efa0816a4cf081
new head: 9479a5c77407b9406b405fa2cf0ab3d4e72aca30

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

9479a5c: Updated src/build/libroot/find_directory.cpp
  
  Added some TODO: handle struct stat and stat().

                                        [ Matt Madia <mattmadia@xxxxxxxxx> ]

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

Commit:      9479a5c77407b9406b405fa2cf0ab3d4e72aca30

Author:      Matt Madia <mattmadia@xxxxxxxxx>
Date:        Thu Aug  9 01:49:05 2012 UTC

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

2 files changed, 27 insertions(+), 22 deletions(-)
headers/build/posix_target/sys/target_stat.h |    2 +
src/build/libroot/find_directory.cpp         |   47 ++++++++++++----------

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

diff --git a/headers/build/posix_target/sys/target_stat.h 
b/headers/build/posix_target/sys/target_stat.h
index 56768cf..1839fc9 100644
--- a/headers/build/posix_target/sys/target_stat.h
+++ b/headers/build/posix_target/sys/target_stat.h
@@ -10,6 +10,7 @@
 #include <target_time.h>
 
 
+// TODO: #8730 -- how to handle 'stat'?
 struct stat {
        _haiku_build_dev_t                      st_dev;                 /* 
device ID that this file resides on */
        _haiku_build_ino_t                      st_ino;                 /* this 
file's serial inode ID */
@@ -114,6 +115,7 @@ _HAIKU_BUILD_DECLARE_FUNCTION(int, chmod,
 _HAIKU_BUILD_DECLARE_FUNCTION(int, fchmod, (int fd, _haiku_build_mode_t mode))
 _HAIKU_BUILD_DECLARE_FUNCTION(int, fchmodat,
        (int fd, const char *path, _haiku_build_mode_t mode, int flag))
+// TODO: #8730 -- how to handle 'stat'?
 _HAIKU_BUILD_DECLARE_FUNCTION(int, stat, (const char *path, struct stat *st))
 _HAIKU_BUILD_DECLARE_FUNCTION(int, fstat, (int fd, struct stat *st))
 _HAIKU_BUILD_DECLARE_FUNCTION(int, lstat, (const char *path, struct stat *st))
diff --git a/src/build/libroot/find_directory.cpp 
b/src/build/libroot/find_directory.cpp
index c04b0b2..bd86032 100644
--- a/src/build/libroot/find_directory.cpp
+++ b/src/build/libroot/find_directory.cpp
@@ -25,31 +25,32 @@
 
 /*! make dir and its parents if needed */
 static int
-create_path(const char *path, mode_t mode)
+create_path(const char *path, _haiku_build_mode_t mode)
 {
-       char buffer[B_PATH_NAME_LENGTH + 1];
+       char buffer[_HAIKU_BUILD_B_PATH_NAME_LENGTH + 1];
        int pathLength;
        int i = 0;
 
-       if (path == NULL || ((pathLength = strlen(path)) > B_PATH_NAME_LENGTH))
-               return EINVAL;
+       if (path == _HAIKU_BUILD_NULL || ((pathLength = 
_haiku_build_strlen(path)) > _HAIKU_BUILD_B_PATH_NAME_LENGTH))
+               return _HAIKU_BUILD_EINVAL;
 
        while (++i < pathLength) {
-               const char *slash = strchr(&path[i], '/');
+               const char *slash = _haiku_build_strchr(&path[i], '/');
+               // TODO: #8730 -- how to handle 'stat'?
                struct stat st;
 
-               if (slash == NULL)
+               if (slash == _HAIKU_BUILD_NULL)
                        i = pathLength;
                else if (i != slash - path)
                        i = slash - path;
                else
                        continue;
 
-               strlcpy(buffer, path, i + 1);
+               _haiku_build_strlcpy(buffer, path, i + 1);
                if (stat(buffer, &st) < 0) {
-                       errno = 0;
-                       if (mkdir(buffer, mode) < 0)
-                               return errno;
+                       _haiku_build_errno = 0;
+                       if (_haiku_build_mkdir(buffer, mode) < 0)
+                               return _haiku_build_errno;
                }
        }
 
@@ -57,40 +58,42 @@ create_path(const char *path, mode_t mode)
 }
 
 
-status_t
-find_directory(directory_which which, dev_t device, bool createIt,
-       char *returnedPath, int32 pathLength)
+_haiku_build_status_t
+find_directory(_HAIKU_BUILD_IDENTIFIER(directory_which) which,
+       _haiku_build_dev_t device, bool createIt, char *returnedPath,
+               _haiku_build_int32 pathLength)
 {
        // we support only the handful of paths we need
        const char* path;
        switch (which) {
-               case B_COMMON_TEMP_DIRECTORY:
+               case _HAIKU_BUILD_IDENTIFIER(B_COMMON_TEMP_DIRECTORY):
                        path = HAIKU_BUILD_GENERATED_DIRECTORY "/tmp";
                        break;
-               case B_COMMON_SETTINGS_DIRECTORY:
+               case _HAIKU_BUILD_IDENTIFIER(B_COMMON_SETTINGS_DIRECTORY):
                        path = HAIKU_BUILD_GENERATED_DIRECTORY 
"/common/settings";
                        break;
-               case B_COMMON_CACHE_DIRECTORY:
+               case _HAIKU_BUILD_IDENTIFIER(B_COMMON_CACHE_DIRECTORY):
                        path = HAIKU_BUILD_GENERATED_DIRECTORY "/common/cache";
                        break;
-               case B_USER_SETTINGS_DIRECTORY:
+               case _HAIKU_BUILD_IDENTIFIER(B_USER_SETTINGS_DIRECTORY):
                        path = HAIKU_BUILD_GENERATED_DIRECTORY "/user/settings";
                        break;
-               case B_USER_CACHE_DIRECTORY:
+               case _HAIKU_BUILD_IDENTIFIER(B_USER_CACHE_DIRECTORY):
                        path = HAIKU_BUILD_GENERATED_DIRECTORY "/user/cache";
                        break;
                default:
-                       return B_BAD_VALUE;
+                       return _HAIKU_BUILD_B_BAD_VALUE;
        }
 
        // create, if necessary
-       status_t error = B_OK;
+       _haiku_build_status_t error = _HAIKU_BUILD_B_OK;
+       // TODO: #8730 -- how to handle 'stat'?
        struct stat st;
        if (createIt && stat(path, &st) < 0)
                error = create_path(path, 0755);
 
-       if (error == B_OK)
-               strlcpy(returnedPath, path, pathLength);
+       if (error == _HAIKU_BUILD_B_OK)
+               _haiku_build_strlcpy(returnedPath, path, pathLength);
 
        return error;
 }


Other related posts: