X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=ls-files.c;h=e42119c5ee1d0ceffca3d36462fc09cd53d2eef5;hb=8978d043c35ad068e280dbbdc31e06524ea0ab56;hp=c533059d0a0cf5969b6d7309ed7840e935eebfe0;hpb=8c0db2f5193153ea8a51bb45b0512c5a3889023b;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; }