Hello! The following STC hints at a problem in strptime:
-----------------------8<---------------------------- #include <stdio.h> #include <time.h> int main(void) { /* seed tm with some garbage */ struct tm tm = { 0, 0, 0, /* s m h */ 0, 0, 0, /* d m y */ 290774, 2280577, 81 }; const char date[] = "2011-05-11 14:06:11"; if (!strptime(date, "%Y - %m - %d %T", &tm)) { fprintf(stderr, "strptime error\n"); return 1; } printf("%s", asctime(&tm)); printf("tm_yday %d\n", tm.tm_yday); printf("tm_wday %d\n", tm.tm_wday); printf("tm_isdst %d\n", tm.tm_isdst); return 0; } -----------------------8<---------------------------- I get this output with Cygwin 1.7.9-1: May 11 14:06:11 2011 tm_yday 2280577 tm_wday 290774 tm_isdst 81 I expect: Wed May 11 14:06:11 2011 tm_yday 130 tm_wday 3 tm_isdst whatever I get the expected output on the Linux host I tried (with tm_isdst=81), but not on Solaris 10. On Solaris 10 I get (for completeness): Sun May 11 14:06:11 2011 tm_yday 0 tm_wday 0 tm_isdst 0 Opengroup has this to say about only filling in some fields: "It is unspecified whether multiple calls to strptime() using the same tm structure will update the current contents of the structure or overwrite all contents of the structure. Conforming applications should make a single call to strptime() with a format and all data needed to completely specify the date and time being converted." but I don't think it applies since indeed I do completely specify the date in my strptime call. In my "real" program, the call to asctime with the crippled tm causes a seg-fault instead of "just" missing weekday output, I guess it depends... Cheers, Peter -- Problem reports: http://cygwin.com/problems.html FAQ: http://cygwin.com/faq/ Documentation: http://cygwin.com/docs.html Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple