[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?= <hidden>
Date: 2016-06-15 22:48:17
Subsystem:
the rest · Maintainer:
Linus Torvalds
The implementation is also lightly modified to use is_dir_sep()
instead of hardcoding '/'.
Signed-off-by: Nguyễn Thái Ngọc Duy <redacted>
---
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