From 80ba074f4163dc8ee4232d64e73a8521edcadc1d Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Mon, 3 Dec 2007 21:55:57 +0100 Subject: Windows: Use the Windows style PATH separator ';'. Signed-off-by: Johannes Sixt --- sha1_file.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'sha1_file.c') diff --git a/sha1_file.c b/sha1_file.c index 191f814e09..6f004ffd09 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -392,7 +392,7 @@ void prepare_alt_odb(void) if (!alt) alt = ""; alt_odb_tail = &alt_odb_list; - link_alt_odb_entries(alt, alt + strlen(alt), ':', NULL, 0); + link_alt_odb_entries(alt, alt + strlen(alt), PATH_SEP, NULL, 0); read_info_alternates(get_object_directory(), 0); } -- cgit v1.2.3 From 8385abfda533819be9fbec436230ccd7be4bcda8 Mon Sep 17 00:00:00 2001 From: Johannes Sixt Date: Fri, 30 Nov 2007 21:36:00 +0100 Subject: Windows: Handle absolute paths in safe_create_leading_directories(). 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 --- sha1_file.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'sha1_file.c') diff --git a/sha1_file.c b/sha1_file.c index 6f004ffd09..0a54eed761 100644 --- a/sha1_file.c +++ b/sha1_file.c @@ -83,14 +83,18 @@ int get_sha1_hex(const char *hex, unsigned char *sha1) return 0; } +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; + char *pos = path + offset_1st_component(path); struct stat st; - if (is_absolute_path(path)) - pos++; - while (pos) { pos = strchr(pos, '/'); if (!pos) -- cgit v1.2.3