Mercurial > projects > ldc
comparison dmd/root/root.c @ 1195:e961851fb8be
Merged DMD 1.042.
author | Tomas Lindquist Olsen <tomas.l.olsen gmail.com> |
---|---|
date | Fri, 03 Apr 2009 17:59:34 +0200 |
parents | 1853dcd9b944 |
children | 7af860e4f403 |
comparison
equal
deleted
inserted
replaced
1194:1853dcd9b944 | 1195:e961851fb8be |
---|---|
581 | 581 |
582 case '/': | 582 case '/': |
583 return e + 1; | 583 return e + 1; |
584 | 584 |
585 #if _WIN32 | 585 #if _WIN32 |
586 case '/': | |
586 case '\\': | 587 case '\\': |
588 return e + 1; | |
587 case ':': | 589 case ':': |
588 return e + 1; | 590 /* The ':' is a drive letter only if it is the second |
591 * character or the last character, | |
592 * otherwise it is an ADS (Alternate Data Stream) separator. | |
593 * Consider ADS separators as part of the file name. | |
594 */ | |
595 if (e == str + 1 || e == str + len - 1) | |
596 return e + 1; | |
589 #endif | 597 #endif |
590 default: | 598 default: |
591 if (e == str) | 599 if (e == str) |
592 break; | 600 break; |
593 e--; | 601 e--; |
618 | 626 |
619 if (n[-1] == '/') | 627 if (n[-1] == '/') |
620 n--; | 628 n--; |
621 | 629 |
622 #if _WIN32 | 630 #if _WIN32 |
623 if (n[-1] == '\\') | 631 if (n[-1] == '\\' || n[-1] == '/') |
624 n--; | 632 n--; |
625 #endif | 633 #endif |
626 } | 634 } |
627 pathlen = n - str; | 635 pathlen = n - str; |
628 path = (char *)mem.malloc(pathlen + 1); | 636 path = (char *)mem.malloc(pathlen + 1); |
820 { | 828 { |
821 char *p = FileName::path(path); | 829 char *p = FileName::path(path); |
822 if (*p) | 830 if (*p) |
823 { | 831 { |
824 #if _WIN32 | 832 #if _WIN32 |
825 size_t len = strlen(p); | 833 size_t len = strlen(path); |
826 if (len > 2 && p[-1] == ':') | 834 if (len > 2 && p[-1] == ':' && path + 2 == p) |
827 { mem.free(p); | 835 { mem.free(p); |
828 return; | 836 return; |
829 } | 837 } |
830 #endif | 838 #endif |
831 ensurePathExists(p); | 839 ensurePathExists(p); |