[PATCH 4/4] parse-time-string: fix setting and rounding of seconds

Tomi Ollila tomi.ollila at iki.fi
Mon Mar 2 12:03:55 PST 2015


On Mon, Mar 02 2015, Jani Nikula <jani at nikula.org> wrote:

> If seconds are not specified in the string to be parsed, they're not
> set according to the reference time (in the no rounding case) nor
> rounded properly (in the rounding up cases). Fix this.
>
> The bug caused searches such as date:10:30..10:30 to match messages
> with date exactly 10:30:00 only, and not in range 10:30:00..10:30:59
> (inclusive) as documented.
>
> Note that date searches referring "noon" or "5pm" will still be
> interpreted as exact to the second.

Although I don't fully understands how these changes do the trick (and I
only looked the context) the changes *look* good, and presumably fix
the problem in question (I could check intermediate output but i am just
lazy).

Tests pass and I don't see why anything could get broken by this so +1

Tomi


> ---
>  parse-time-string/parse-time-string.c | 4 ++--
>  test/T490-parse-time-string.sh        | 1 -
>  2 files changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/parse-time-string/parse-time-string.c b/parse-time-string/parse-time-string.c
> index ccad422b3c8d..1cef47d4b0bd 100644
> --- a/parse-time-string/parse-time-string.c
> +++ b/parse-time-string/parse-time-string.c
> @@ -1081,10 +1081,10 @@ parse_time (struct state *state, char sep,
>  	return set_user_tz (state, state->delim, v1, v2);
>      }
>  
> -    if (!is_valid_time (v1, v2, v3))
> +    if (!is_valid_time (v1, v2, n3 ? v3 : 0))
>  	return -PARSE_TIME_ERR_INVALIDTIME;
>  
> -    return set_abs_time (state, v1, v2, n3 ? v3 : 0);
> +    return set_abs_time (state, v1, v2, n3 ? (int) v3 : UNSET);
>  }
>  
>  /* strtoul helper that assigns length. */
> diff --git a/test/T490-parse-time-string.sh b/test/T490-parse-time-string.sh
> index 9247bdf89543..6aa9d433bfd4 100755
> --- a/test/T490-parse-time-string.sh
> +++ b/test/T490-parse-time-string.sh
> @@ -79,7 +79,6 @@ ${TEST_DIRECTORY}/parse-time --ref=${REFERENCE} < INPUT > OUTPUT
>  test_expect_equal_file INPUT OUTPUT
>  
>  test_begin_subtest "Second rounding tests"
> -test_subtest_known_broken
>  REFERENCE=$(_date Tue Jan 11 12:13:14 +0000 2011)
>  cat <<EOF > INPUT
>  9:15         ==> Tue Jan 11 09:15:14 +0000 2011
> -- 
> 2.1.4
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list