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: strptime error when setting a different TimeZone with export TZ=UTC


Hi Brian, thanks a lot for your answer. In fact it works initializing the
try struct to {0}.

As you said, I was lucky that until now I never found the problem.
Remain the question why setting the TZ variable make this problem coming
out.

By the way, thanks a lot for the support !!!!!!!

Luca 



> -----Original Message-----
> From: cygwin-owner@cygwin.com 
> [mailto:cygwin-owner@cygwin.com] On Behalf Of Brian Dessent
> Sent: vendredi, 24. juin 2005 21:37
> To: cygwin@cygwin.com
> Subject: Re: strptime error when setting a different TimeZone 
> with export TZ=UTC
> 
> Luca Wullschleger wrote:
> 
> > Hi everybody. I have a very specific problem and I'm looking for 
> > someone giving me a solution.
> 
> I'm afriad this is operator error on your part.
> 
> >         struct tm try;
> 
> Here 'try' starts out as a regular automatic variable, with 
> all of its fields set to arbitrary (undefined) values.
> 
> >         if ((char *)strptime(date,"%d/%b/%Y:%T",&try) == NULL) {
> 
> Here you call strptime() to fill in the values of 'try', 
> however the strptime function has the semantics that it will 
> only fill in the members of struct tm that it is asked to 
> parse.  This means that after the call, some of the members 
> still have undefined values. 
> Specifically, the members tm_wday, tm_yday, and tm_isdst will 
> contain garbage.
> 
> >         ts2 = mktime(&try) - atoi(timezone)*3600;
> 
> And here you pass this value of 'try' that still has 
> uninitialized values to mktime(), the result of which will be 
> undefined as well.  I think you were just lucky that it 
> worked in the case where TZ was not set, but in general once 
> you encounter the situation where you pass uninitialized data 
> to a function, all bets are off because your program is invalid C.
> 
> If you change the line above to "struct tm try = { 0 };" or 
> otherwise initialize it somehow, then I think you will get 
> the desired functionality.
> 
> Brian
> 
> --
> 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/
> 
> 


--
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]