X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=ls-files.c;h=e42119c5ee1d0ceffca3d36462fc09cd53d2eef5;hb=84a9b58c421f9b2d1cc6c195ed441fac48e60392;hp=c533059d0a0cf5969b6d7309ed7840e935eebfe0;hpb=77e56ac4cc31034f06ae00542d33228820436576;p=git.git diff --git a/ls-files.c b/ls-files.c index c533059d..e42119c5 100644 --- a/ls-files.c +++ b/ls-files.c @@ -92,11 +92,12 @@ static int add_excludes_from_file_1(const char *fname, close(fd); return 0; } - buf = xmalloc(size); + buf = xmalloc(size+1); if (read(fd, buf, size) != size) goto err; close(fd); + buf[size++] = '\n'; entry = buf; for (i = 0; i < size; i++) { if (buf[i] == '\n') { @@ -279,8 +280,11 @@ static void read_directory(const char *path, const char *base, int baselen) continue; len = strlen(de->d_name); memcpy(fullname + baselen, de->d_name, len+1); - if (excluded(fullname) != show_ignored) - continue; + if (excluded(fullname) != show_ignored) { + if (!show_ignored || DTYPE(de) != DT_DIR) { + continue; + } + } switch (DTYPE(de)) { struct stat st; @@ -778,6 +782,7 @@ int main(int argc, const char **argv) continue; error("pathspec '%s' did not match any.", pathspec[num] + prefix_offset); + errors++; } return errors ? 1 : 0; }