This is the mail archive of the cygwin mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch] patch -Z not working if timestamp contains seconds >=59.5


Corinna Vinschen wrote:
On Apr 25 16:17, Christian Franke wrote:
Corinna Vinschen wrote:
Can you tell me exactly where the problem
happens which leads to this patch, please?
partime.c:
...
parse_pattern_letter (s, c, t)
...
case 's': /* second [00-60 followed by optional fraction] */
  {
    int frac;
    s = parse_decimal (s, 2, 0, 60, 1, &t->tm.tm_sec, &frac);
    t->tm.tm_sec += frac;
  }

parse_decimal("59.50001", ...) returns tm_sec = 59 and frac=1 which
results in tm_sec=60, but maketime({...; tm.tm_sec=60;...}, .) returns
-1 always.

Yeah, these are exactly the lines which you patch. When I asked for
where exactly the problem happens, I was asking where maketime makes the
mistake of not taking denormalized timestamps into account, where the
condition is which let it return -1.

IMO maketime() does not make any mistake.



Don't get me wrong, I appreciate the patch, but since you provided a
patch, I assumed you already debugged this problem, so you can point to
the place where it happens.

According to the algorithm used and the comment in line 295:
"ISO 8601 day-of-year and week numbers are not yet supported."
maketime() is (unlike mktime()) simply not designed to accept denormalized timestamps.


This is OK for the purpose maketime() used inside of patch, except for this one rare case described.


Yes, I'm a lazy chicken and I'm just trying
to avoid double work ;-)

I took the (lazy) approach to fullfill maketime's interface contract and allow a < 0.5s round error ;-)


Christian


-- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]