t9300: use perl "head -c" clone in place of "dd bs=1 count=16000" kluge
[gitweb.git] / dir.c
diff --git a/dir.c b/dir.c
index 58ec1a11d9807598bd5004d63cc87e7ecd0f1776..38f3e3eb9770a9f3d85f175881bd2dd4ced6548b 100644 (file)
--- a/dir.c
+++ b/dir.c
@@ -262,7 +262,7 @@ int add_excludes_from_file_to_list(const char *fname,
 {
        struct stat st;
        int fd, i;
-       size_t size;
+       size_t size = 0;
        char *buf, *entry;
 
        fd = open(fname, O_RDONLY);
@@ -390,7 +390,8 @@ int excluded_from_list(const char *pathname,
 
                        if (x->flags & EXC_FLAG_MUSTBEDIR) {
                                if (!dtype) {
-                                       if (!prefixcmp(pathname, exclude))
+                                       if (!prefixcmp(pathname, exclude) &&
+                                           pathname[x->patternlen] == '/')
                                                return to_exclude;
                                        else
                                                continue;
@@ -1032,6 +1033,12 @@ char *get_relative_cwd(char *buffer, int size, const char *dir)
        case '/':
                return cwd + 1;
        default:
+               /*
+                * dir can end with a path separator when it's root
+                * directory. Return proper prefix in that case.
+                */
+               if (dir[-1] == '/')
+                       return cwd;
                return NULL;
        }
 }