Skip to content

Commit

Permalink
parse_date_format(): convert a format name to an enum date_mode
Browse files Browse the repository at this point in the history
Factor out the code to parse --date=<format> parameter to revision
walkers into a separate function, parse_date_format().  This function
is passed a string and converts it to an enum date_format:

 - "relative"         => DATE_RELATIVE
 - "iso8601" or "iso" => DATE_ISO8601
 - "rfc2822"          => DATE_RFC2822
 - "short"            => DATE_SHORT
 - "local"            => DATE_LOCAL
 - "default"          => DATE_NORMAL

In the event that none of these strings is found, the function die()s.

Signed-off-by: Andy Parkins <[email protected]>
Signed-off-by: Junio C Hamano <[email protected]>
  • Loading branch information
andyparkins authored and gitster committed Sep 30, 2007
1 parent 2a858ee commit 856665f
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 16 deletions.
1 change: 1 addition & 0 deletions cache.h
Original file line number Diff line number Diff line change
Expand Up @@ -432,6 +432,7 @@ const char *show_date(unsigned long time, int timezone, enum date_mode mode);
int parse_date(const char *date, char *buf, int bufsize);
void datestamp(char *buf, int bufsize);
unsigned long approxidate(const char *);
enum date_mode parse_date_format(const char *format);

extern const char *git_author_info(int);
extern const char *git_committer_info(int);
Expand Down
20 changes: 20 additions & 0 deletions date.c
Original file line number Diff line number Diff line change
Expand Up @@ -584,6 +584,26 @@ int parse_date(const char *date, char *result, int maxlen)
return date_string(then, offset, result, maxlen);
}

enum date_mode parse_date_format(const char *format)
{
if (!strcmp(format, "relative"))
return DATE_RELATIVE;
else if (!strcmp(format, "iso8601") ||
!strcmp(format, "iso"))
return DATE_ISO8601;
else if (!strcmp(format, "rfc2822") ||
!strcmp(format, "rfc"))
return DATE_RFC2822;
else if (!strcmp(format, "short"))
return DATE_SHORT;
else if (!strcmp(format, "local"))
return DATE_LOCAL;
else if (!strcmp(format, "default"))
return DATE_NORMAL;
else
die("unknown date format %s", format);
}

void datestamp(char *buf, int bufsize)
{
time_t now;
Expand Down
17 changes: 1 addition & 16 deletions revision.c
Original file line number Diff line number Diff line change
Expand Up @@ -1134,22 +1134,7 @@ int setup_revisions(int argc, const char **argv, struct rev_info *revs, const ch
continue;
}
if (!strncmp(arg, "--date=", 7)) {
if (!strcmp(arg + 7, "relative"))
revs->date_mode = DATE_RELATIVE;
else if (!strcmp(arg + 7, "iso8601") ||
!strcmp(arg + 7, "iso"))
revs->date_mode = DATE_ISO8601;
else if (!strcmp(arg + 7, "rfc2822") ||
!strcmp(arg + 7, "rfc"))
revs->date_mode = DATE_RFC2822;
else if (!strcmp(arg + 7, "short"))
revs->date_mode = DATE_SHORT;
else if (!strcmp(arg + 7, "local"))
revs->date_mode = DATE_LOCAL;
else if (!strcmp(arg + 7, "default"))
revs->date_mode = DATE_NORMAL;
else
die("unknown date format %s", arg);
revs->date_mode = parse_date_format(arg + 7);
continue;
}
if (!strcmp(arg, "--log-size")) {
Expand Down

0 comments on commit 856665f

Please sign in to comment.