projects
/
git.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
update-index: read --show-index-info output from standard input.
[git.git]
/
date.c
diff --git
a/date.c
b/date.c
index
8ec6d0b
..
b21cadc
100644
(file)
--- a/
date.c
+++ b/
date.c
@@
-224,7
+224,7
@@
static int is_date(int year, int month, int day, struct tm *tm)
return 0;
}
return 0;
}
-static int match_multi_number(unsigned long num, char c, char *date, char *end, struct tm *tm)
+static int match_multi_number(unsigned long num, char c, c
onst c
har *date, char *end, struct tm *tm)
{
long num2, num3;
{
long num2, num3;
@@
-270,7
+270,7
@@
static int match_multi_number(unsigned long num, char c, char *date, char *end,
/*
* We've seen a digit. Time? Year? Date?
*/
/*
* We've seen a digit. Time? Year? Date?
*/
-static int match_digit(char *date, struct tm *tm, int *offset, int *tm_gmt)
+static int match_digit(c
onst c
har *date, struct tm *tm, int *offset, int *tm_gmt)
{
int n;
char *end;
{
int n;
char *end;
@@
-361,7
+361,7
@@
static int match_digit(char *date, struct tm *tm, int *offset, int *tm_gmt)
return n;
}
return n;
}
-static int match_tz(char *date, int *offp)
+static int match_tz(c
onst c
har *date, int *offp)
{
char *end;
int offset = strtoul(date+1, &end, 10);
{
char *end;
int offset = strtoul(date+1, &end, 10);
@@
-386,12
+386,23
@@
static int match_tz(char *date, int *offp)
return end - date;
}
return end - date;
}
+static int date_string(unsigned long date, int offset, char *buf, int len)
+{
+ int sign = '+';
+
+ if (offset < 0) {
+ offset = -offset;
+ sign = '-';
+ }
+ return snprintf(buf, len, "%lu %c%02d%02d", date, sign, offset / 60, offset % 60);
+}
+
/* Gr. strptime is crap for this; it doesn't have a way to require RFC2822
(i.e. English) day/month names, and it doesn't work correctly with %z. */
/* Gr. strptime is crap for this; it doesn't have a way to require RFC2822
(i.e. English) day/month names, and it doesn't work correctly with %z. */
-
void parse_date(
char *date, char *result, int maxlen)
+
int parse_date(const
char *date, char *result, int maxlen)
{
struct tm tm;
{
struct tm tm;
- int offset,
sign,
tm_gmt;
+ int offset, tm_gmt;
time_t then;
memset(&tm, 0, sizeof(tm));
time_t then;
memset(&tm, 0, sizeof(tm));
@@
-431,18
+442,11
@@
void parse_date(char *date, char *result, int maxlen)
offset = (then - mktime(&tm)) / 60;
if (then == -1)
offset = (then - mktime(&tm)) / 60;
if (then == -1)
- return;
+ return
-1
;
if (!tm_gmt)
then -= offset * 60;
if (!tm_gmt)
then -= offset * 60;
-
- sign = '+';
- if (offset < 0) {
- offset = -offset;
- sign = '-';
- }
-
- snprintf(result, maxlen, "%lu %c%02d%02d", then, sign, offset/60, offset % 60);
+ return date_string(then, offset, result, maxlen);
}
void datestamp(char *buf, int bufsize)
}
void datestamp(char *buf, int bufsize)
@@
-455,5
+459,5
@@
void datestamp(char *buf, int bufsize)
offset = my_mktime(localtime(&now)) - now;
offset /= 60;
offset = my_mktime(localtime(&now)) - now;
offset /= 60;
-
snprintf(buf, bufsize, "%lu %+05d", now, offset/60*100 + offset%60
);
+
date_string(now, offset, buf, bufsize
);
}
}