Craig,
Based on my reading of Compaq's web site, we're doing the time change correctly, though sloppily. I did find an article on "Issues with mktime and stat function," though the circumstances of their problem were somewhat different than mine. Based on this information, I duplicated the problem in straight "C", and was able to work around it by disabling UTC support. At this point, I'm about ready to throw in the towel and recompile Perl without UTC support, and see how I like it. Have you any advice to give on the best way to convince your procedure to convince MMK to convince CC to define a couple symbols? There are a couple PS's to this note. The first is a list of Compaq urls that I thought might be relevant. The second is the code I used for testing. I also ran the code Compaq posted to test your time change procedure -- it says we did it right. Thank you very much, Tom Wyant PS - Here are the Compaq references, in no particular order: Issues with mktime and stat function: http://www.compaq.com/support/asktima/appl_tools/CHAMP_SRC990518001118.html How to set the time: http://www.compaq.com/support/asktima/operating_systems/009C6814-B1D938A0-1C0186.html How to adjust: http://www.compaq.com/support/askkcs/hpcg/260_0_26164650_3115307.html Time returned by C localtime is off by one hour: http://www.compaq.com/support/asktima/appl_tools/CHAMP_SRC990127002633.html Adjusting system time forward/backward: http://www.compaq.com/support/asktima/operating_systems/009C6814-B1D938A0-1C0186.html Method to Determine if UTC Based Time is Correctly Set: http://www.compaq.com/support/asktima/appl_tools/CHAMP_SRC991104004012.html PPS - The code used to duplicate the problem: /* Defining the following gives us the correct behaviour #define _DECC_V4_SOURCE 1 #define _VMS_V6_SOURCE 1 */ /* Compaq says using decc$stat instead of stat will give the correct behaviour as well, but I can't make it link #define stat decc$stat */ #include <stat.h> #include <stdio.h> #include <stdlib.h> #include <time.h> void main (int argc, char **argv) { stat_t file_info; int iter8; for (iter8 = argc > 1 ? 1 : 0; iter8 < argc; iter8++) { if (!stat (argv[iter8], &file_info)) { printf ("File %s modified %s\n", argv[iter8], ctime (&file_info.st_mtime)); } } }
