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 <johannes.sixt@telecom.at>
This commit is contained in:
Johannes Sixt 2007-11-30 21:36:00 +01:00
parent 25fe217b86
commit 8385abfda5

View File

@ -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)