diff options
author | uema2 <uema2@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-04-26 05:25:30 +0000 |
---|---|---|
committer | uema2 <uema2@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2003-04-26 05:25:30 +0000 |
commit | 5f0df5186540dd5a6f11063f6e420c86636b235d (patch) | |
tree | 1330399ba14a2e9a26cba8c40db9ebd54ba95441 /wince/time.c | |
parent | 6068cd754095d7f0742438ffd21d201775eda229 (diff) | |
download | ruby-5f0df5186540dd5a6f11063f6e420c86636b235d.tar.gz |
* wince/ : files removed.
(config, dll.mak, exe.mak, mswince-ruby17.def,
io.c, process.c, signal.c, string.c, time.c)
* wince/ : files added.
(assert.c, Makefile.sub, mkexports.rb, io_wce.c,
process_wce.c, signal_wce.c, string_wce.c,
time_wce.c)
* wince/configure.bat : like mswin32 style.
* wince/direct.c : remove "static" at _currentdir.
* wince/io.h : change definition.
* wince/stdio.c : _fdopen -> fdopen.
* wince/process.h : add_P_OVERLAY.
* wince/time.h : change definition.
* wince/wincemain.c : add wce_SetCurrentDir.
* wince/wince.c : add wce_SetCurrentDir and wce_fopen.
fix GetModuleFileNameA to return correct "lpFileName".
* wince/wince.h : remove #ifdef.
* wince/sys/utime.h, utime.c : rename _utime to utime.
* wince/sys/stat.c : expand relative directory in stat.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@3734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'wince/time.c')
-rw-r--r-- | wince/time.c | 299 |
1 files changed, 0 insertions, 299 deletions
diff --git a/wince/time.c b/wince/time.c deleted file mode 100644 index 81afe5152f..0000000000 --- a/wince/time.c +++ /dev/null @@ -1,299 +0,0 @@ -/*************************************************************** - time.c - - author : uema2 - date : Nov 30, 2002 - - You can freely use, copy, modify, and redistribute - the whole contents. -***************************************************************/ - -/*#define __SCRATCH_TIMEC_DEBUG__ */ - -#include <windows.h> -#include <tchar.h> -#include <time.h> - -/* globals */ -const __int64 _onesec_in100ns = (__int64)10000000; -int timezone, _timezone, altzone; -int daylight; -char *tzname[2]; - - -/* __int64 <--> FILETIME */ -static __int64 wce_FILETIME2int64(FILETIME f) -{ - __int64 t; - - t = f.dwHighDateTime; - t <<= 32; - t |= f.dwLowDateTime; - return t; -} - -static FILETIME wce_int642FILETIME(__int64 t) -{ - FILETIME f; - - f.dwHighDateTime = (DWORD)((t >> 32) & 0x00000000FFFFFFFF); - f.dwLowDateTime = (DWORD)( t & 0x00000000FFFFFFFF); - return f; -} - -/* FILETIME utility */ -static FILETIME wce_getFILETIMEFromYear(WORD year) -{ - SYSTEMTIME s={0}; - FILETIME f; - - s.wYear = year; - s.wMonth = 1; - s.wDayOfWeek = 1; - s.wDay = 1; - - SystemTimeToFileTime( &s, &f ); - return f; -} - -static time_t wce_getYdayFromSYSTEMTIME(const SYSTEMTIME* s) -{ - __int64 t; - FILETIME f1, f2; - - f1 = wce_getFILETIMEFromYear( s->wYear ); - SystemTimeToFileTime( s, &f2 ); - - t = wce_FILETIME2int64(f2)-wce_FILETIME2int64(f1); - - return (time_t)((t/_onesec_in100ns)/(60*60*24)); -} - -/* tm <--> SYSTEMTIME */ -static SYSTEMTIME wce_tm2SYSTEMTIME(struct tm *t) -{ - SYSTEMTIME s; - - s.wYear = t->tm_year + 1900; - s.wMonth = t->tm_mon + 1; - s.wDayOfWeek = t->tm_wday; - s.wDay = t->tm_mday; - s.wHour = t->tm_hour; - s.wMinute = t->tm_min; - s.wSecond = t->tm_sec; - s.wMilliseconds = 0; - - return s; -} - -static struct tm wce_SYSTEMTIME2tm(SYSTEMTIME *s) -{ - struct tm t; - - t.tm_year = s->wYear - 1900; - t.tm_mon = s->wMonth- 1; - t.tm_wday = s->wDayOfWeek; - t.tm_mday = s->wDay; - t.tm_yday = wce_getYdayFromSYSTEMTIME(s); - t.tm_hour = s->wHour; - t.tm_min = s->wMinute; - t.tm_sec = s->wSecond; - t.tm_isdst = 0; - - return t; -} - -/* FILETIME <--> time_t */ -time_t wce_FILETIME2time_t(const FILETIME* f) -{ - FILETIME f1601, f1970; - __int64 t, offset; - - f1601 = wce_getFILETIMEFromYear(1601); - f1970 = wce_getFILETIMEFromYear(1970); - - offset = wce_FILETIME2int64(f1970) - wce_FILETIME2int64(f1601); - - t = wce_FILETIME2int64(*f); - - t -= offset; - return (time_t)(t / _onesec_in100ns); -} - -FILETIME wce_time_t2FILETIME(const time_t t) -{ - FILETIME f, f1970; - __int64 time; - - f1970 = wce_getFILETIMEFromYear(1970); - - time = t; - time *= _onesec_in100ns; - time += wce_FILETIME2int64(f1970); - - f = wce_int642FILETIME(time); - - return f; -} - -/* time.h difinition */ -time_t time( time_t *timer ) -{ - SYSTEMTIME s; - FILETIME f; - - GetSystemTime( &s ); - - SystemTimeToFileTime( &s, &f ); - - *timer = wce_FILETIME2time_t(&f); - return *timer; -} - -struct tm *localtime( const time_t *timer ) -{ - SYSTEMTIME ss, ls, s; - FILETIME sf, lf, f; - __int64 t, diff; - static struct tm tms; - - GetSystemTime(&ss); - GetLocalTime(&ls); - - SystemTimeToFileTime( &ss, &sf ); - SystemTimeToFileTime( &ls, &lf ); - - diff = wce_FILETIME2int64(sf) - wce_FILETIME2int64(lf); - - f = wce_time_t2FILETIME(*timer); - t = wce_FILETIME2int64(f) - diff; - f = wce_int642FILETIME(t); - - FileTimeToSystemTime( &f, &s ); - - tms = wce_SYSTEMTIME2tm(&s); - - return &tms; -} - -time_t mktime(struct tm* pt) -{ - SYSTEMTIME ss, ls, s; - FILETIME sf, lf, f; - __int64 diff; - - GetSystemTime(&ss); - GetLocalTime(&ls); - SystemTimeToFileTime( &ss, &sf ); - SystemTimeToFileTime( &ls, &lf ); - - diff = (wce_FILETIME2int64(lf)-wce_FILETIME2int64(sf))/_onesec_in100ns; - - s = wce_tm2SYSTEMTIME(pt); - SystemTimeToFileTime( &s, &f ); - return wce_FILETIME2time_t(&f) - (time_t)diff; -} - -struct tm *gmtime(const time_t *t) -{ - FILETIME f; - SYSTEMTIME s; - static struct tm tms; - - f = wce_time_t2FILETIME(*t); - FileTimeToSystemTime(&f, &s); - tms = wce_SYSTEMTIME2tm(&s); - return &tms; -} - -char* ctime( const time_t *t ) -{ - // Wed Jan 02 02:03:55 1980\n\0 - static char buf[30]={0}; - char week[] = "Sun Mon Tue Wed Thr Fri Sat "; - char month[]= "Jan Feb Mar Apl May Jun Jul Aug Sep Oct Nov Dec "; - struct tm tms; - - tms = *localtime(t); - - strncpy( buf, week+tms.tm_wday*4, 4 ); - strncpy( buf+4, month+tms.tm_mon*4, 4 ); - sprintf( buf+8, "%02d ", tms.tm_mday ); - sprintf( buf+11, "%02d:%02d:%02d %d\n", - tms.tm_hour, tms.tm_min, tms.tm_sec, tms.tm_year+1900 ); - return buf; -} - -char *asctime(const struct tm *pt) -{ - static char buf[30]={0}; - char week[] = "Sun Mon Tue Wed Thr Fri Sat "; - char month[]= "Jan Feb Mar Apl May Jun Jul Aug Sep Oct Nov Dec "; - - strncpy( buf, week+pt->tm_wday*4, 4 ); - strncpy( buf+4, month+pt->tm_mon*4, 4 ); - sprintf( buf+8, "%02d ", pt->tm_mday ); - sprintf( buf+11, "%02d:%02d:%02d %d\n", - pt->tm_hour, pt->tm_min, pt->tm_sec, pt->tm_year+1900 ); - return buf; -} - -void tzset() -{ - daylight = 1; - _timezone = 28800; - timezone = 28800; -} - -int clock(void) -{ - return 1; -} - -//--------------------------------------------------------------- -#ifdef __SCRATCH_TIMEC_DEBUG__ - -int main() -{ - time_t t1, t2; - struct tm tm1, tm2; - - time( &t1 ); - tm1 = *localtime(&t1); - t1 = mktime(&tm1); - tm1 = *gmtime(&t1); - - _time( &t2 ); - tm2 = *_localtime(&t2); - t2 = _mktime(&tm2); - tm2 = *_gmtime(&t2); - - // time, mktime - if( t1==t2 ) - OutputDebugString( "ok\n" ); - else - { - static char buf[128]; - wsprintf( buf, "ng : %d, %d\n", t1, t2 ); - OutputDebugString( buf ); - } - - // localtime, gmtime - if( 0==memcmp( &tm1, &tm2, sizeof(struct tm) ) ) - OutputDebugString( "ok\n" ); - else - OutputDebugString( "ng\n" ); - - // ctime - OutputDebugString( ctime(&t1) ); - OutputDebugString( _ctime(&t2) ); - - // asctime - OutputDebugString( asctime(&tm1) ); - OutputDebugString( _asctime(&tm2) ); - - return 0; -} - -#endif - |