diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2011-03-26 16:04:25 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2011-03-28 17:02:57 -0700 |
commit | b892913d51795ee66d825bedd23e5c4ffe85ebb2 (patch) | |
tree | 77bdd69eeae4251d6478746c36dcb531d059eded /dir.c | |
parent | 9b125da490990ae4d08dd1517dc38b188b874fa8 (diff) | |
download | git-b892913d51795ee66d825bedd23e5c4ffe85ebb2.tar.gz |
Kill off get_relative_cwd()
Function dir_inside_of() does something similar (correctly), but looks
easier to understand and does not bundle cwd to its business. Given
get_relative_cwd's only user is is_inside_dir, we can kill it for
good.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'dir.c')
-rw-r--r-- | dir.c | 55 |
1 files changed, 6 insertions, 49 deletions
@@ -1001,53 +1001,6 @@ int file_exists(const char *f) } /* - * get_relative_cwd() gets the prefix of the current working directory - * relative to 'dir'. If we are not inside 'dir', it returns NULL. - * - * As a convenience, it also returns NULL if 'dir' is already NULL. The - * reason for this behaviour is that it is natural for functions returning - * directory names to return NULL to say "this directory does not exist" - * or "this directory is invalid". These cases are usually handled the - * same as if the cwd is not inside 'dir' at all, so get_relative_cwd() - * returns NULL for both of them. - * - * Most notably, get_relative_cwd(buffer, size, get_git_work_tree()) - * unifies the handling of "outside work tree" with "no work tree at all". - */ -char *get_relative_cwd(char *buffer, int size, const char *dir) -{ - char *cwd = buffer; - - if (!dir) - return NULL; - if (!getcwd(buffer, size)) - die_errno("can't find the current directory"); - - if (!is_absolute_path(dir)) - dir = make_absolute_path(dir); - - while (*dir && *dir == *cwd) { - dir++; - cwd++; - } - if (*dir) - return NULL; - switch (*cwd) { - case '\0': - return cwd; - case '/': - return cwd + 1; - default: - /* - * dir can end with a path separator when it's root - * directory. Return proper prefix in that case. - */ - if (dir[-1] == '/') - return cwd; - return NULL; - } -} - * Given two normalized paths (a trailing slash is ok), if subdir is * outside dir, return -1. Otherwise return the offset in subdir that * can be used as relative path to dir. @@ -1081,8 +1034,12 @@ int dir_inside_of(const char *subdir, const char *dir) int is_inside_dir(const char *dir) { - char buffer[PATH_MAX]; - return get_relative_cwd(buffer, sizeof(buffer), dir) != NULL; + char cwd[PATH_MAX]; + if (!dir) + return 0; + if (!getcwd(cwd, sizeof(cwd))) + die_errno("can't find the current directory"); + return dir_inside_of(cwd, dir) >= 0; } int is_empty_dir(const char *path) |