~mdw
/
tig
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Improve handling of 'bogus' author lines
[tig]
/
tig.c
diff --git
a/tig.c
b/tig.c
index
a3b92c8
..
f110dae
100644
(file)
--- a/
tig.c
+++ b/
tig.c
@@
-12,7
+12,7
@@
*/
#ifndef VERSION
*/
#ifndef VERSION
-#define VERSION "tig-0.
3
"
+#define VERSION "tig-0.
4.git
"
#endif
#ifndef DEBUG
#endif
#ifndef DEBUG
@@
-80,7
+80,7
@@
static size_t utf8_length(const char *string, size_t max_width, int *coloffset,
"git log --cc --stat -n100 %s"
#define TIG_MAIN_CMD \
"git log --cc --stat -n100 %s"
#define TIG_MAIN_CMD \
- "git log --topo-order --
stat --
pretty=raw %s"
+ "git log --topo-order --pretty=raw %s"
/* XXX: Needs to be defined to the empty string. */
#define TIG_HELP_CMD ""
/* XXX: Needs to be defined to the empty string. */
#define TIG_HELP_CMD ""
@@
-770,6
+770,7
@@
static struct key key_table[] = {
{ "Down", KEY_DOWN },
{ "Insert", KEY_IC },
{ "Delete", KEY_DC },
{ "Down", KEY_DOWN },
{ "Insert", KEY_IC },
{ "Delete", KEY_DC },
+ { "Hash", '#' },
{ "Home", KEY_HOME },
{ "End", KEY_END },
{ "PageUp", KEY_PPAGE },
{ "Home", KEY_HOME },
{ "End", KEY_END },
{ "PageUp", KEY_PPAGE },
@@
-1046,7
+1047,7
@@
read_option(char *opt, int optlen, char *value, int valuelen)
/* Check for comment markers, since read_properties() will
* only ensure opt and value are split at first " \t". */
/* Check for comment markers, since read_properties() will
* only ensure opt and value are split at first " \t". */
- optlen = strcspn(opt, "#
;
");
+ optlen = strcspn(opt, "#");
if (optlen == 0)
return OK;
if (optlen == 0)
return OK;
@@
-1056,7
+1057,7
@@
read_option(char *opt, int optlen, char *value, int valuelen)
} else {
/* Look for comment endings in the value. */
} else {
/* Look for comment endings in the value. */
- int len = strcspn(value, "#
;
");
+ int len = strcspn(value, "#");
if (len < valuelen) {
valuelen = len;
if (len < valuelen) {
valuelen = len;
@@
-2285,10
+2286,22
@@
main_read(struct view *view, char *line)
break;
if (end) {
break;
if (end) {
+ char *email = end + 1;
+
for (; end > ident && isspace(end[-1]); end--) ;
for (; end > ident && isspace(end[-1]); end--) ;
+
+ if (end == ident && *email) {
+ ident = email;
+ end = strchr(ident, '>');
+ for (; end > ident && isspace(end[-1]); end--) ;
+ }
*end = 0;
}
*end = 0;
}
+ /* End is NULL or ident meaning there's no author. */
+ if (end <= ident)
+ ident = "Unknown";
+
string_copy(commit->author, ident);
/* Parse epoch and timezone */
string_copy(commit->author, ident);
/* Parse epoch and timezone */
@@
-2582,6
+2595,8
@@
init_display(void)
/* Leave stdin and stdout alone when acting as a pager. */
FILE *io = fopen("/dev/tty", "r+");
/* Leave stdin and stdout alone when acting as a pager. */
FILE *io = fopen("/dev/tty", "r+");
+ if (!io)
+ die("Failed to open /dev/tty");
cursed = !!newterm(NULL, io, io);
}
cursed = !!newterm(NULL, io, io);
}