Re: [PATCH 2/2] read-cache: use time_t instead of unsigned long
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Nov 12, 2018, 14:54 UTC
- Message-ID
- <nycvar.QRO.7.76.6.1811121554060.39@tvgsbejvaqbjf.bet>
- In-Reply-To
- <xmqqftw61sa0.fsf@gitster-ct.c.googlers.com>
Hi,
On Mon, 12 Nov 2018, Junio C Hamano wrote:
Show 46 quoted lines
> Carlo Marcelo Arenas Belón <carenas@gmail.com> writes:
>
> > b968372279 ("read-cache: unlink old sharedindex files", 2017-03-06)
> > introduced get_shared_index_expire_date using unsigned long to track
> > the modification times of a shared index.
> >
> > dddbad728c ("timestamp_t: a new data type for timestamps", 2017-04-26)
> > shows why that might problematic so move to time_t instead.
> >
> > Signed-off-by: Carlo Marcelo Arenas Belón <carenas@gmail.com>
> > ---
> > read-cache.c | 6 +++---
> > 1 file changed, 3 insertions(+), 3 deletions(-)
> >
> > diff --git a/read-cache.c b/read-cache.c
> > index 7b1354d759..5525d8e679 100644
> > --- a/read-cache.c
> > +++ b/read-cache.c
> > @@ -2625,9 +2625,9 @@ static int write_split_index(struct index_state *istate,
> >
> > static const char *shared_index_expire = "2.weeks.ago";
> >
> > -static unsigned long get_shared_index_expire_date(void)
> > +static time_t get_shared_index_expire_date(void)
> > {
> > - static unsigned long shared_index_expire_date;
> > + static time_t shared_index_expire_date;
> > static int shared_index_expire_date_prepared;
> >
> > if (!shared_index_expire_date_prepared) {
>
> After this line, the post-context reads like this:
>
> git_config_get_expiry("splitindex.sharedindexexpire",
> &shared_index_expire);
> shared_index_expire_date = approxidate(shared_index_expire);
> shared_index_expire_date_prepared = 1;
> }
>
> return shared_index_expire_date;
>
> Given that the function returns the value obtained from
> approxidate(), which is approxidate_careful() in disguise, time_t is
> not as appropriate as timestamp_t, no?
>
> IOW, what if time_t were narrower than timestamp_t?Riiiight. From the patch, I had assumed that the return type of `approxidate()` is `time_t`, but it is `timestamp_t`.
Ciao, Johannes
Show 12 quoted lines
>
>
> > @@ -2643,7 +2643,7 @@ static unsigned long get_shared_index_expire_date(void)
> > static int should_delete_shared_index(const char *shared_index_path)
> > {
> > struct stat st;
> > - unsigned long expiration;
> > + time_t expiration;
> >
> > /* Check timestamp */
> > expiration = get_shared_index_expire_date();
>