Re: [PATCH] apply: Recognize epoch timestamps with : in the timezone

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Jonathan Nieder <jrnieder@xxxxxxxxx> writes:

> Junio C Hamano wrote:
>> Junio C Hamano <gitster@xxxxxxxxx> writes:
>
>>> Neither the patch nor your suggestion makes much sense to me.  With the
>>> patch, the regexp is now
>>>
>>>     ^(1969-12-31|1970-01-01) <time>(\.0+)? ([-+][0-2][0-9]):?([0-5][0-9])
> [...]
>> Well, I was missing that without ':' strtol() goes through to parse $3$4
>> as a single integer
>
> So maybe something like the following would make this easier to follow.

Yeah, this feels much more natural.

> diff --git a/builtin/apply.c b/builtin/apply.c
> index 0fa9a8d..000d3e5 100644
> --- a/builtin/apply.c
> +++ b/builtin/apply.c
> @@ -733,8 +733,8 @@ static int has_epoch_timestamp(const char *nameline)
>  		" "
>  		"[0-2][0-9]:[0-5][0-9]:00(\\.0+)?"
>  		" "
> -		"([-+][0-2][0-9]):?([0-5][0-9])\n";
> +		"([-+][0-2][0-9]:?[0-5][0-9])\n";
> -	const char *timestamp = NULL, *cp;
> +	const char *timestamp = NULL, *cp, *colon;
>  	static regex_t *stamp;
>  	regmatch_t m[10];
>  	int zoneoffset;
> @@ -764,10 +764,11 @@ static int has_epoch_timestamp(const char *nameline)
>  		return 0;
>  	}
>  
> -	zoneoffset = strtol(timestamp + m[3].rm_so + 1, NULL, 10);
> +	zoneoffset = strtol(timestamp + m[3].rm_so + 1, (char **) &colon, 10);
> -	if (m[4].rm_so == m[3].rm_so + 3)
> -		zoneoffset /= 100;
> -	zoneoffset = zoneoffset * 60 + strtol(timestamp + m[4].rm_so, NULL, 10);
> +	if (*colon == ':')
> +		zoneoffset = zoneoffset * 60 + strtol(colon + 1, NULL, 10);
> +	else
> +		zoneoffset = (zoneoffset / 100) * 60 + (zoneoffset % 100);
>  	if (timestamp[m[3].rm_so] == '-')
>  		zoneoffset = -zoneoffset;
>  
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]