[PATCH 1/3] Add is_absolute_path() and make_absolute_path() functions
From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:23
Subsystem:
the rest · Maintainer:
Linus Torvalds
This patch adds convenience functions to work with absolute paths. The function is_absolute_path() should help the efforts to integrate the MinGW fork. Note that make_absolute_path() returns a pointer to a static buffer. Signed-off-by: Johannes Schindelin <redacted> --- I am in the middle of so many things, otherwise I would have tried to find all places that can use these functions. But maybe a helpful soul out there wants to do that? cache.h | 5 +++++ path.c | 18 ++++++++++++++++++ 2 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/cache.h b/cache.h
index 53801b8..98af530 100644
--- a/cache.h
+++ b/cache.h@@ -358,6 +358,11 @@ int git_config_perm(const char *var, const char *value); int adjust_shared_perm(const char *path); int safe_create_leading_directories(char *path); char *enter_repo(char *path, int strict); +static inline int is_absolute_path(const char *path) +{ + return path[0] == '/'; +} +const char *make_absolute_path(const char *path); /* Read and unpack a sha1 file into memory, write memory to a sha1 file */ extern int sha1_object_info(const unsigned char *, unsigned long *);
diff --git a/path.c b/path.c
index c4ce962..b5b1959 100644
--- a/path.c
+++ b/path.c@@ -292,3 +292,21 @@ int adjust_shared_perm(const char *path) return -2; return 0; } + +const char *make_absolute_path(const char *path) +{ + static char buf[PATH_MAX]; + const int size = sizeof(buf); + int len; + + if (is_absolute_path(path)) + return path; + + if (!getcwd(buf, size)) + die ("Could not get current working directory"); + len = strlen(buf); + if (snprintf(buf + len, size - len, "/%s", path) > size - 1) + die ("Could not make absolute path from '%s'", path); + return buf; +} +
--
1.5.3.rc2.29.gc4640f