|
9 | 9 | #include "refs.h"
|
10 | 10 | #include "utf8.h"
|
11 | 11 |
|
| 12 | +#define FSCK_FATAL -1 |
| 13 | + |
12 | 14 | #define FOREACH_MSG_ID(FUNC) \
|
| 15 | + /* fatal errors */ \ |
| 16 | + FUNC(NUL_IN_HEADER, FATAL) \ |
| 17 | + FUNC(UNTERMINATED_HEADER, FATAL) \ |
13 | 18 | /* errors */ \
|
14 | 19 | FUNC(BAD_DATE, ERROR) \
|
15 | 20 | FUNC(BAD_DATE_OVERFLOW, ERROR) \
|
|
39 | 44 | FUNC(MISSING_TYPE, ERROR) \
|
40 | 45 | FUNC(MISSING_TYPE_ENTRY, ERROR) \
|
41 | 46 | FUNC(MULTIPLE_AUTHORS, ERROR) \
|
42 |
| - FUNC(NUL_IN_HEADER, ERROR) \ |
43 | 47 | FUNC(TAG_OBJECT_NOT_TAG, ERROR) \
|
44 | 48 | FUNC(TREE_NOT_SORTED, ERROR) \
|
45 | 49 | FUNC(UNKNOWN_TYPE, ERROR) \
|
46 |
| - FUNC(UNTERMINATED_HEADER, ERROR) \ |
47 | 50 | FUNC(ZERO_PADDED_DATE, ERROR) \
|
48 | 51 | /* warnings */ \
|
49 | 52 | FUNC(BAD_FILEMODE, WARN) \
|
@@ -149,6 +152,9 @@ void fsck_set_msg_type(struct fsck_options *options,
|
149 | 152 | die("Unhandled message id: %s", msg_id);
|
150 | 153 | type = parse_msg_type(msg_type);
|
151 | 154 |
|
| 155 | + if (type != FSCK_ERROR && msg_id_info[id].msg_type == FSCK_FATAL) |
| 156 | + die("Cannot demote %s to %s", msg_id, msg_type); |
| 157 | + |
152 | 158 | if (!options->msg_type) {
|
153 | 159 | int i;
|
154 | 160 | int *msg_type = xmalloc(sizeof(int) * FSCK_MSG_MAX);
|
@@ -216,6 +222,9 @@ static int report(struct fsck_options *options, struct object *object,
|
216 | 222 | struct strbuf sb = STRBUF_INIT;
|
217 | 223 | int msg_type = fsck_msg_type(id, options), result;
|
218 | 224 |
|
| 225 | + if (msg_type == FSCK_FATAL) |
| 226 | + msg_type = FSCK_ERROR; |
| 227 | + |
219 | 228 | append_msg_id(&sb, msg_id_info[id].id_string);
|
220 | 229 |
|
221 | 230 | va_start(ap, fmt);
|
|
0 commit comments