https://github.com/git/git
Revision 906fc557b70b2b2995785c9b37e212d2f86b469e authored by Elijah Newren on 27 May 2021, 04:53:56 UTC, committed by Junio C Hamano on 27 May 2021, 05:02:37 UTC
Many places in the code were doing
    while ((d = readdir(dir)) != NULL) {
        if (is_dot_or_dotdot(d->d_name))
            continue;
        ...process d...
    }
Introduce a readdir_skip_dot_and_dotdot() helper to make that a one-liner:
    while ((d = readdir_skip_dot_and_dotdot(dir)) != NULL) {
        ...process d...
    }

This helper particularly simplifies checks for empty directories.

Also use this helper in read_cached_dir() so that our statistics are
consistent across platforms.  (In other words, read_cached_dir() should
have been using is_dot_or_dotdot() and skipping such entries, but did
not and left it to treat_path() to detect and mark such entries as
path_none.)

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
1 parent eef8148
Raw File
Tip revision: 906fc557b70b2b2995785c9b37e212d2f86b469e authored by Elijah Newren on 27 May 2021, 04:53:56 UTC
dir: introduce readdir_skip_dot_and_dotdot() helper
Tip revision: 906fc55
shortlog.h
#ifndef SHORTLOG_H
#define SHORTLOG_H

#include "string-list.h"

struct commit;

struct shortlog {
	struct string_list list;
	int summary;
	int wrap_lines;
	int sort_by_number;
	int wrap;
	int in1;
	int in2;
	int user_format;
	int abbrev;

	enum {
		SHORTLOG_GROUP_AUTHOR = (1 << 0),
		SHORTLOG_GROUP_COMMITTER = (1 << 1),
		SHORTLOG_GROUP_TRAILER = (1 << 2),
	} groups;
	struct string_list trailers;

	int email;
	struct string_list mailmap;
	FILE *file;
};

void shortlog_init(struct shortlog *log);

void shortlog_add_commit(struct shortlog *log, struct commit *commit);

void shortlog_output(struct shortlog *log);

#endif
back to top