+#define SHOW_MASKED 1 << 0
+#define SHOW_EQUIV 1 << 1
+#define SHOW_REDIR 1 << 2
+#define SHOW_OVERRIDEN 1 << 3
+#define SHOW_UNCHANGED 1 << 4
+#define SHOW_DIFF 1 << 5
+
+#define SHOW_DEFAULTS \
+ (SHOW_MASKED | SHOW_EQUIV | SHOW_REDIR | SHOW_OVERRIDEN | SHOW_DIFF)
+
+static int notify_override_masked(int flags, const char *top, const char *bottom) {
+ if (!(flags & SHOW_MASKED))
+ return 0;
+
+ printf(ANSI_HIGHLIGHT_RED_ON "[MASK]" ANSI_HIGHLIGHT_OFF " %s → %s\n", top, bottom);
+ return 1;
+}
+
+static int notify_override_equiv(int flags, const char *top, const char *bottom) {
+ if (!(flags & SHOW_EQUIV))
+ return 0;
+
+ printf(ANSI_HIGHLIGHT_GREEN_ON "[EQUIVALENT]" ANSI_HIGHLIGHT_OFF " %s → %s\n", top, bottom);
+ return 1;
+}
+
+static int notify_override_redir(int flags, const char *top, const char *bottom) {
+ if (!(flags & SHOW_REDIR))
+ return 0;
+
+ printf(ANSI_HIGHLIGHT_ON "[REDIRECT]" ANSI_HIGHLIGHT_OFF " %s → %s\n", top, bottom);
+ return 1;
+}
+
+static int notify_override_overriden(int flags, const char *top, const char *bottom) {
+ if (!(flags & SHOW_OVERRIDEN))
+ return 0;
+
+ printf(ANSI_HIGHLIGHT_ON "[OVERRIDE]" ANSI_HIGHLIGHT_OFF " %s → %s\n", top, bottom);
+ return 1;
+}
+
+static int notify_override_unchanged(int flags, const char *top, const char *bottom) {
+ if (!(flags & SHOW_UNCHANGED))
+ return 0;
+
+ printf(ANSI_HIGHLIGHT_ON "[UNCHANGED]" ANSI_HIGHLIGHT_OFF " %s → %s\n", top, bottom);
+ return 1;
+}
+
+static int found_override(int flags, const char *top, const char *bottom) {