[PATCH 11/40] Windows: Handle absolute paths in safe_create_leading_directories().
- From
Johannes Sixt <johannes.sixt@telecom.at>
- Date
- Feb 27, 2008, 18:54 UTC
- Message-ID
- <1204138503-6126-12-git-send-email-johannes.sixt@telecom.at>
- In-Reply-To
- <1204138503-6126-1-git-send-email-johannes.sixt@telecom.at>
In this function we must be careful to handle drive-local paths else there is a danger that it runs into an infinite loop.
Signed-off-by: Johannes Sixt <johannes.sixt@telecom.at> --- sha1_file.c | 14 ++++++++++---- 1 files changed, 10 insertions(+), 4 deletions(-)
diff --git a/sha1_file.c b/sha1_file.c index 453bc43..0c60849 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -83,14 +83,20 @@ int get_sha1_hex(const char *hex, unsigned char *sha1) return 0; } +static inline int offset_1st_component(const char *path) +{ +#ifdef __MINGW32__ + if (isalpha(path[0]) && path[1] == ':') + return 2 + (path[2] == '/'); +#endif + return *path == '/'; +} + int safe_create_leading_directories(char *path) { - char *pos = path; + char *pos = path + offset_1st_component(path); struct stat st; - if (is_absolute_path(path)) - pos++; - while (pos) { pos = strchr(pos, '/'); if (!pos)
-- 1.5.4.1.126.ge5a7d