index 65973d2bcb4ea659170d73ee25f9782b6082953d..e60b717c90d0d4f9be73f76aee418c214fce4731 100644 (file)
--- a/tig.c
+++ b/tig.c
return initials;
}
+#define author_trim(cols) (cols == 0 || cols > 5)
+
+static const char *
+mkauthor(const char *text, int cols, enum author author)
+{
+ bool trim = author_trim(cols);
+ bool abbreviate = author == AUTHOR_ABBREVIATED || !trim;
+
+ if (!author)
+ return "";
+ if (abbreviate && text)
+ return get_author_initials(text);
+ return text;
+}
+
+static const char *
+mkmode(mode_t mode)
+{
+ if (S_ISDIR(mode))
+ return "drwxr-xr-x";
+ else if (S_ISLNK(mode))
+ return "lrwxrwxrwx";
+ else if (S_ISGITLINK(mode))
+ return "m---------";
+ else if (S_ISREG(mode) && mode & S_IXUSR)
+ return "-rwxr-xr-x";
+ else if (S_ISREG(mode))
+ return "-rw-r--r--";
+ else
+ return "----------";
+}
+
/*
* User requests
static bool
draw_author(struct view *view, const char *author)
{
- bool trim = opt_author_cols == 0 || opt_author_cols > 5;
- bool abbreviate = opt_author == AUTHOR_ABBREVIATED || !trim;
+ bool trim = author_trim(opt_author_cols);
+ const char *text = mkauthor(author, opt_author_cols, opt_author);
- if (opt_author == AUTHOR_NO)
- return FALSE;
-
- if (abbreviate && author)
- author = get_author_initials(author);
-
- return draw_field(view, LINE_AUTHOR, author, opt_author_cols, trim);
+ return draw_field(view, LINE_AUTHOR, text, opt_author_cols, trim);
}
static bool
draw_mode(struct view *view, mode_t mode)
{
- const char *str;
-
- if (S_ISDIR(mode))
- str = "drwxr-xr-x";
- else if (S_ISLNK(mode))
- str = "lrwxrwxrwx";
- else if (S_ISGITLINK(mode))
- str = "m---------";
- else if (S_ISREG(mode) && mode & S_IXUSR)
- str = "-rwxr-xr-x";
- else if (S_ISREG(mode))
- str = "-rw-r--r--";
- else
- str = "----------";
+ const char *str = mkmode(mode);
return draw_field(view, LINE_MODE, str, STRING_SIZE("-rw-r--r-- "), FALSE);
}