diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2011-05-02 23:02:15 -0500 |
---|---|---|
committer | Jonathan Nieder <jrnieder@gmail.com> | 2011-05-02 23:02:15 -0500 |
commit | 59445b0b02c731872c8665ac7e9cf1226fa616e4 (patch) | |
tree | 93922cf13ed9c62859dac628fa7e376977a23d24 /abspath.c | |
parent | 6908e999468d7eb531a1609cee37673c5d3ca04f (diff) | |
parent | ec014eac0e9e6f30cbbca616090fa2ecf74797e7 (diff) | |
download | git-59445b0b02c731872c8665ac7e9cf1226fa616e4.tar.gz git-59445b0b02c731872c8665ac7e9cf1226fa616e4.tar.xz |
Merge commit 'v1.7.5' into svn-fe
* commit 'v1.7.5': (436 commits)
Git 1.7.5
Git 1.7.5-rc3
Git 1.7.4.5
git-svn.txt: Document --mergeinfo
Revert "run-command: prettify -D_FORTIFY_SOURCE workaround"
...
Diffstat (limited to 'abspath.c')
-rw-r--r-- | abspath.c | 22 |
1 files changed, 20 insertions, 2 deletions
@@ -14,7 +14,14 @@ int is_directory(const char *path) /* We allow "recursive" symbolic links. Only within reason, though. */ #define MAXDEPTH 5 -const char *make_absolute_path(const char *path) +/* + * Use this to get the real path, i.e. resolve links. If you want an + * absolute path but don't mind links, use absolute_path. + * + * If path is our buffer, then return path, as it's already what the + * user wants. + */ +const char *real_path(const char *path) { static char bufs[2][PATH_MAX + 1], *buf = bufs[0], *next_buf = bufs[1]; char cwd[1024] = ""; @@ -24,6 +31,10 @@ const char *make_absolute_path(const char *path) char *last_elem = NULL; struct stat st; + /* We've already done it */ + if (path == buf || path == next_buf) + return path; + if (strlcpy(buf, path, PATH_MAX) >= PATH_MAX) die ("Too long path: %.*s", 60, path); @@ -100,7 +111,14 @@ static const char *get_pwd_cwd(void) return cwd; } -const char *make_nonrelative_path(const char *path) +/* + * Use this to get an absolute path from a relative one. If you want + * to resolve links, you should use real_path. + * + * If the path is already absolute, then return path. As the user is + * never meant to free the return value, we're safe. + */ +const char *absolute_path(const char *path) { static char buf[PATH_MAX + 1]; |