(file) Return to CIMDateTimeUnix.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

 1 karl  1.21 //%2006////////////////////////////////////////////////////////////////////////
 2 kumpf 1.1  //
 3 karl  1.15 // Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
 4            // Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
 5            // Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
 6 karl  1.11 // IBM Corp.; EMC Corporation, The Open Group.
 7 karl  1.15 // Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
 8            // IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
 9 karl  1.17 // Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
10            // EMC Corporation; VERITAS Software Corporation; The Open Group.
11 karl  1.21 // Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
12            // EMC Corporation; Symantec Corporation; The Open Group.
13 kumpf 1.1  //
14            // Permission is hereby granted, free of charge, to any person obtaining a copy
15 kumpf 1.6  // of this software and associated documentation files (the "Software"), to
16            // deal in the Software without restriction, including without limitation the
17            // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
18 kumpf 1.1  // sell copies of the Software, and to permit persons to whom the Software is
19            // furnished to do so, subject to the following conditions:
20            // 
21 kumpf 1.6  // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
22 kumpf 1.1  // ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
23            // "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
24 kumpf 1.6  // LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
25            // PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
26            // HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
27 kumpf 1.1  // ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
28            // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
29            //
30 kumpf 1.6  //==============================================================================
31 kumpf 1.1  //
32            // Author: Sushma Fernandes, Hewlett Packard Company (sushma_fernandes@hp.com)
33            //
34 kumpf 1.18 // Modified By: Roger Kumpf, Hewlett Packard Company (roger_kumpf@hp.com)
35            //
36 kumpf 1.1  //%////////////////////////////////////////////////////////////////////////////
37            
38            #include <Pegasus/Common/CIMDateTime.h>
39            
40 kumpf 1.2  #include <sys/time.h>
41 kumpf 1.8  #include <cstring>
42 kumpf 1.1  
43            PEGASUS_USING_STD;
44            
45            PEGASUS_NAMESPACE_BEGIN
46            
47            CIMDateTime CIMDateTime::getCurrentDateTime()
48            {
49 kumpf 1.18     char dateTimeBuffer[26];
50                time_t systemTime;
51                struct tm* tmval;
52                struct tm tmvalBuffer;
53                int tzMinutesEast;
54            
55 kumpf 1.1      // Get the system date and time
56 kumpf 1.18     systemTime = time(NULL);
57 kumpf 1.3  
58                // Get the localtime
59 kumpf 1.18     tmval = localtime_r(&systemTime, &tmvalBuffer);
60 kumpf 1.12     PEGASUS_ASSERT(tmval != 0);
61 kumpf 1.18 
62 kumpf 1.19     // Get the UTC offset
63 jim.wunderlich 1.20 
64                     #if defined(PEGASUS_OS_SOLARIS)
65 kumpf          1.18     tzMinutesEast =
66                             - (int)((tmval->tm_isdst > 0 && daylight) ? altzone : timezone) / 60;
67                     #elif defined(PEGASUS_OS_HPUX)
68                         tzMinutesEast = - (int) timezone / 60;
69                         if ((tmval->tm_isdst > 0) && daylight)
70                         {
71                             // ATTN: It is unclear how to determine the DST offset.  Assume 1 hour.
72                             tzMinutesEast += 60;
73                         }
74 denise.eckstein 1.16 #elif defined(PEGASUS_OS_LINUX)
75 kumpf           1.18     tzMinutesEast = (int) tmval->tm_gmtoff/60;
76 keith.petley    1.9  #else
77 kumpf           1.19     struct timeval tv;
78                          struct timezone tz;
79 kumpf           1.18     gettimeofday(&tv, &tz);
80                          tzMinutesEast = -tz.tz_minuteswest;
81 keith.petley    1.9  #endif
82 kumpf           1.1  
83                          // Format the date
84 kumpf           1.18     sprintf(
85                              dateTimeBuffer,
86                              "%04d%02d%02d%02d%02d%02d.%06ld%+04d",
87                              1900 + tmval->tm_year,
88                              tmval->tm_mon + 1,
89                              tmval->tm_mday,
90                              tmval->tm_hour,
91                              tmval->tm_min,
92                              tmval->tm_sec,
93 kumpf           1.19         0L,    // localtime_r does not return sub-second data
94 kumpf           1.18         tzMinutesEast);
95 kumpf           1.1  
96 kumpf           1.18     return CIMDateTime(dateTimeBuffer);
97 kumpf           1.1  }
98                      
99                      PEGASUS_NAMESPACE_END

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2