| 612 | } |
| 613 | |
| 614 | static int ambiguous_path(const char *path, int len) |
| 615 | { |
| 616 | int slash = 1; |
| 617 | int cnt; |
| 618 | |
| 619 | for (cnt = 0; cnt < len; cnt++) { |
| 620 | switch (*path++) { |
| 621 | case '\0': |
| 622 | break; |
| 623 | case '/': |
| 624 | if (slash) |
| 625 | break; |
| 626 | slash = 1; |
| 627 | continue; |
| 628 | case '.': |
| 629 | continue; |
| 630 | default: |
| 631 | slash = 0; |
| 632 | continue; |
| 633 | } |
| 634 | break; |
| 635 | } |
| 636 | return slash; |
| 637 | } |
| 638 | |
| 639 | static inline int at_mark(const char *string, int len, |
| 640 | const char **suffix, int nr) |