]> git.ipfire.org Git - thirdparty/git.git/commitdiff
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
authorÆvar Arnfjörð Bjarmason <avarab@gmail.com>
Sun, 28 Mar 2021 13:15:40 +0000 (15:15 +0200)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Mar 2021 02:03:10 +0000 (19:03 -0700)
Move the FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} defines into a new
fsck_msg_type enum.

These defines were originally introduced in:

 - ba002f3b28a (builtin-fsck: move common object checking code to
   fsck.c, 2008-02-25)
 - f50c4407305 (fsck: disallow demoting grave fsck errors to warnings,
   2015-06-22)
 - efaba7cc77f (fsck: optionally ignore specific fsck issues
   completely, 2015-06-22)
 - f27d05b1704 (fsck: allow upgrading fsck warnings to errors,
   2015-06-22)

The reason these were defined in two different places is because we
use FSCK_{IGNORE,INFO,FATAL} only in fsck.c, but FSCK_{ERROR,WARN} are
used by external callbacks.

Untangling that would take some more work, since we expose the new
"enum fsck_msg_type" to both. Similar to "enum object_type" it's not
worth structuring the API in such a way that only those who need
FSCK_{ERROR,WARN} pass around a different type.

Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/fsck.c
builtin/index-pack.c
builtin/mktag.c
fsck.c
fsck.h

index ed5f2af6b5c386cfaca229551a698294ca571f1f..17940a4e24aa48dc5f3b3a46a705fb3bf530160f 100644 (file)
@@ -84,7 +84,7 @@ static int objerror(struct object *obj, const char *err)
 static int fsck_error_func(struct fsck_options *o,
                           const struct object_id *oid,
                           enum object_type object_type,
-                          int msg_type, const char *message)
+                          enum fsck_msg_type msg_type, const char *message)
 {
        switch (msg_type) {
        case FSCK_WARN:
index 69f24fe9f7655f9fd725a274d983e1e03d380f97..56b8efaa89ba8a3738b06981a581cfbd18897105 100644 (file)
@@ -1716,7 +1716,8 @@ static void show_pack_info(int stat_only)
 static int print_dangling_gitmodules(struct fsck_options *o,
                                     const struct object_id *oid,
                                     enum object_type object_type,
-                                    int msg_type, const char *message)
+                                    enum fsck_msg_type msg_type,
+                                    const char *message)
 {
        /*
         * NEEDSWORK: Plumb the MSG_ID (from fsck.c) here and use it
index 23c4b8763fa18aeb1d92e4d71ce14c7186cc7a27..052a510ad7f34423e6c75db3ba768ad837d7a87f 100644 (file)
@@ -17,7 +17,8 @@ static struct fsck_options fsck_options = FSCK_OPTIONS_STRICT;
 static int mktag_fsck_error_func(struct fsck_options *o,
                                 const struct object_id *oid,
                                 enum object_type object_type,
-                                int msg_type, const char *message)
+                                enum fsck_msg_type msg_type,
+                                const char *message)
 {
        switch (msg_type) {
        case FSCK_WARN:
diff --git a/fsck.c b/fsck.c
index 8614ee2c2a0713501a86e28276d9539f126d502c..c5a81e4ff05a0558e3e135f479bf298c3b46ede6 100644 (file)
--- a/fsck.c
+++ b/fsck.c
@@ -22,9 +22,6 @@
 static struct oidset gitmodules_found = OIDSET_INIT;
 static struct oidset gitmodules_done = OIDSET_INIT;
 
-#define FSCK_FATAL -1
-#define FSCK_INFO -2
-
 #define FOREACH_MSG_ID(FUNC) \
        /* fatal errors */ \
        FUNC(NUL_IN_HEADER, FATAL) \
@@ -97,7 +94,7 @@ static struct {
        const char *id_string;
        const char *downcased;
        const char *camelcased;
-       int msg_type;
+       enum fsck_msg_type msg_type;
 } msg_id_info[FSCK_MSG_MAX + 1] = {
        FOREACH_MSG_ID(MSG_ID)
        { NULL, NULL, NULL, -1 }
@@ -164,13 +161,13 @@ void list_config_fsck_msg_ids(struct string_list *list, const char *prefix)
                list_config_item(list, prefix, msg_id_info[i].camelcased);
 }
 
-static int fsck_msg_type(enum fsck_msg_id msg_id,
+static enum fsck_msg_type fsck_msg_type(enum fsck_msg_id msg_id,
        struct fsck_options *options)
 {
        assert(msg_id >= 0 && msg_id < FSCK_MSG_MAX);
 
        if (!options->msg_type) {
-               int msg_type = msg_id_info[msg_id].msg_type;
+               enum fsck_msg_type msg_type = msg_id_info[msg_id].msg_type;
 
                if (options->strict && msg_type == FSCK_WARN)
                        msg_type = FSCK_ERROR;
@@ -180,7 +177,7 @@ static int fsck_msg_type(enum fsck_msg_id msg_id,
        return options->msg_type[msg_id];
 }
 
-static int parse_msg_type(const char *str)
+static enum fsck_msg_type parse_msg_type(const char *str)
 {
        if (!strcmp(str, "error"))
                return FSCK_ERROR;
@@ -203,7 +200,8 @@ int is_valid_msg_type(const char *msg_id, const char *msg_type)
 void fsck_set_msg_type(struct fsck_options *options,
                       const char *msg_id_str, const char *msg_type_str)
 {
-       int msg_id = parse_msg_id(msg_id_str), msg_type;
+       int msg_id = parse_msg_id(msg_id_str);
+       enum fsck_msg_type msg_type;
 
        if (msg_id < 0)
                die("Unhandled message id: %s", msg_id_str);
@@ -214,7 +212,7 @@ void fsck_set_msg_type(struct fsck_options *options,
 
        if (!options->msg_type) {
                int i;
-               int *severity;
+               enum fsck_msg_type *severity;
                ALLOC_ARRAY(severity, FSCK_MSG_MAX);
                for (i = 0; i < FSCK_MSG_MAX; i++)
                        severity[i] = fsck_msg_type(i, options);
@@ -275,7 +273,8 @@ static int report(struct fsck_options *options,
 {
        va_list ap;
        struct strbuf sb = STRBUF_INIT;
-       int msg_type = fsck_msg_type(msg_id, options), result;
+       enum fsck_msg_type msg_type = fsck_msg_type(msg_id, options);
+       int result;
 
        if (msg_type == FSCK_IGNORE)
                return 0;
@@ -1247,7 +1246,7 @@ int fsck_object(struct object *obj, void *data, unsigned long size,
 int fsck_error_function(struct fsck_options *o,
                        const struct object_id *oid,
                        enum object_type object_type,
-                       int msg_type, const char *message)
+                       enum fsck_msg_type msg_type, const char *message)
 {
        if (msg_type == FSCK_WARN) {
                warning("object %s: %s", fsck_describe_object(o, oid), message);
diff --git a/fsck.h b/fsck.h
index 30a3acabc50739f6be60b1e76ea7760da262a0f2..baf37620760590c4ca8e3be32a6237fa11412275 100644 (file)
--- a/fsck.h
+++ b/fsck.h
@@ -3,9 +3,13 @@
 
 #include "oidset.h"
 
-#define FSCK_ERROR 1
-#define FSCK_WARN 2
-#define FSCK_IGNORE 3
+enum fsck_msg_type {
+       FSCK_INFO  = -2,
+       FSCK_FATAL = -1,
+       FSCK_ERROR = 1,
+       FSCK_WARN,
+       FSCK_IGNORE
+};
 
 struct fsck_options;
 struct object;
@@ -29,17 +33,17 @@ typedef int (*fsck_walk_func)(struct object *obj, enum object_type object_type,
 /* callback for fsck_object, type is FSCK_ERROR or FSCK_WARN */
 typedef int (*fsck_error)(struct fsck_options *o,
                          const struct object_id *oid, enum object_type object_type,
-                         int msg_type, const char *message);
+                         enum fsck_msg_type msg_type, const char *message);
 
 int fsck_error_function(struct fsck_options *o,
                        const struct object_id *oid, enum object_type object_type,
-                       int msg_type, const char *message);
+                       enum fsck_msg_type msg_type, const char *message);
 
 struct fsck_options {
        fsck_walk_func walk;
        fsck_error error_func;
        unsigned strict:1;
-       int *msg_type;
+       enum fsck_msg_type *msg_type;
        struct oidset skiplist;
        kh_oid_map_t *object_names;
 };