[PATCH v3 3/5] Move offset_1st_component() to path.c
- From
=?UTF-8?q?Nguy=E1=BB=85n=20Th=C3=A1i=20Ng=E1=BB=8Dc=20Duy?= <pclouds@gmail.com>
- Date
- Feb 16, 2010, 05:22 UTC
- Message-ID
- <20100216052208.GA18438@do>
- In-Reply-To
- <4B79A3ED.4090308@kdbg.org>
The implementation is also lightly modified to use is_dir_sep() instead of hardcoding '/'.
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
On Mon, Feb 15, 2010 at 08:43:41PM +0100, Johannes Sixt wrote:
> Nguyễn Thái Ngọc Duy schrieb:
>> +int offset_1st_component(const char *path)
>> +{
>> + if (has_dos_drive_prefix(path))
>> + return 2 + (path[2] == '/');
>> + return *path == '/';
>> +}
>
> I'd have expected that you future-proofed this function by using
> is_dir_sep() or even use your previous implementation of is_root_path
> (because this implementation is a bit cryptic).
>
> But if the new callers of this function will only pass the results of
> normalize_path_copy() and getcwd() (both return only forward-slashes on
> Windows), then I'm fine with this version. Do they?They do. But future-proofing can never be a bad thing.
cache.h | 1 + path.c | 10 ++++++++++ sha1_file.c | 7 ------- 3 files changed, 11 insertions(+), 7 deletions(-)
diff --git a/cache.h b/cache.h index d478eff..ff23cd1 100644 --- a/cache.h +++ b/cache.h @@ -675,6 +675,7 @@ int normalize_path_copy(char *dst, const char *src); int longest_ancestor_length(const char *path, const char *prefix_list); char *strip_path_suffix(const char *path, const char *suffix); int daemon_avoid_alias(const char *path); +int offset_1st_component(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 0005df3..6304805 100644 --- a/path.c +++ b/path.c @@ -649,3 +649,13 @@ int daemon_avoid_alias(const char *p) } } } + +int offset_1st_component(const char *path) +{ + int len = 0; + if (has_dos_drive_prefix(path)) + len += 2; + if (is_dir_sep(path[len])) + return len++; + return len; +} diff --git a/sha1_file.c b/sha1_file.c index 657825e..52052b9 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -35,13 +35,6 @@ static size_t sz_fmt(size_t s) { return s; } const unsigned char null_sha1[20]; -static inline int offset_1st_component(const char *path) -{ - if (has_dos_drive_prefix(path)) - return 2 + (path[2] == '/'); - return *path == '/'; -} - int safe_create_leading_directories(char *path) { char *pos = path + offset_1st_component(path);
-- 1.7.0.195.g637a2