changed qse_ntime_t to a structure and made related changes

This commit is contained in:
2012-11-11 16:07:34 +00:00
parent d6a3bfea8d
commit b94dd042c5
29 changed files with 460 additions and 304 deletions

View File

@ -37,7 +37,7 @@ static void list (qse_fs_t* fs, const qse_char_t* name)
break;
}
qse_localtime (ent->time.modify, &bt);
qse_localtime (&ent->time.modify, &bt);
qse_printf (QSE_T("%s %16lu %04d-%02d-%02d %02d:%02d %s\n"),
((ent->type == QSE_FS_ENT_SUBDIR)? QSE_T("<D>"): QSE_T(" ")),
(unsigned long)ent->size,

View File

@ -17,14 +17,14 @@
if (f() == -1) return -1; \
} while (0)
void print_time (qse_ntime_t nt, const qse_btime_t* bt)
void print_time (const qse_ntime_t* nt, const qse_btime_t* bt)
{
#if defined(_WIN32)
qse_printf (QSE_T("TIME: %I64d\n"), (__int64)nt);
qse_printf (QSE_T("TIME: %I64d.%I64d\n"), (__int64)nt->sec, (__int64)nt->nsec);
#elif (QSE_SIZEOF_LONG_LONG > 0)
qse_printf (QSE_T("TIME: %lld\n"), (long long)nt);
qse_printf (QSE_T("TIME: %lld.%lld\n"), (long long)nt->sec, (long long)nt->nsec);
#else
qse_printf (QSE_T("TIME: %ld\n"), (long)nt);
qse_printf (QSE_T("TIME: %ld.%ld\n"), (long)nt->sec, (long)nt->nsec);
#endif
qse_printf (QSE_T("year: %d\n"), bt->year + QSE_BTIME_YEAR_BASE);
qse_printf (QSE_T("mon: %d\n"), bt->mon + 1);
@ -33,13 +33,14 @@ void print_time (qse_ntime_t nt, const qse_btime_t* bt)
qse_printf (QSE_T("hour: %d\n"), bt->hour);
qse_printf (QSE_T("min: %d\n"), bt->min);
qse_printf (QSE_T("sec: %d\n"), bt->sec);
qse_printf (QSE_T("msec: %d\n"), bt->msec);
/*qse_printf (QSE_T("msec: %d\n"), bt->msec);*/
}
static int test1 (void)
{
qse_ntime_t nt;
qse_btime_t bt;
int count = 0;
if (qse_gettime (&nt) == -1)
{
@ -47,67 +48,76 @@ static int test1 (void)
return -1;
}
qse_gmtime (nt, &bt);
print_time (nt, &bt);
qse_printf (QSE_T("-------------------------------\n"));
nt = 9999999;
if (qse_timegm (&bt, &nt) == -1)
do
{
qse_printf (QSE_T("cannot covert back to ntime\n"));
qse_gmtime (&nt, &bt);
print_time (&nt, &bt);
qse_printf (QSE_T("-------------------------------\n"));
}
else
{
if (qse_timegm (&bt, &nt) == -1)
{
qse_printf (QSE_T("cannot covert back to ntime\n"));
qse_printf (QSE_T("===================================\n"));
}
else
{
/* note that nt.nsec is set to 0 after qse_timegm()
* since qse_btime_t doesn't have the nsec field. */
#ifdef _WIN32
qse_printf (QSE_T("back to ntime: %I64d\n"), (__int64)nt);
qse_printf (QSE_T("back to ntime: %I64d.%I64d\n"), (__int64)nt.sec, (__int64)nt.nsec);
#elif (QSE_SIZEOF_LONG_LONG > 0)
qse_printf (QSE_T("back to ntime: %lld\n"), (long long)nt);
qse_printf (QSE_T("back to ntime: %lld.%lld\n"), (long long)nt.sec, (long long)nt.nsec);
#else
qse_printf (QSE_T("back to ntime: %ld\n"), (long)nt);
qse_printf (QSE_T("back to ntime: %ld\.%ldn"), (long)nt.sec, (long)nt.nsec);
#endif
qse_gmtime (nt, &bt);
print_time (nt, &bt);
qse_printf (QSE_T("-------------------------------\n"));
}
qse_gmtime (&nt, &bt);
print_time (&nt, &bt);
qse_printf (QSE_T("===================================\n"));
}
nt *= -1;
qse_gmtime (nt, &bt);
print_time (nt, &bt);
qse_printf (QSE_T("-------------------------------\n"));
if (count > 0) break;
nt.sec *= -1;
count++;
}
while (1);
nt.nsec = 0;
#if (QSE_SIZEOF_LONG_LONG > 0)
for (nt = (qse_ntime_t)QSE_TYPE_MIN(int); nt <= (qse_ntime_t)QSE_TYPE_MAX(int); nt += QSE_SECS_PER_DAY)
for (nt.sec = (qse_long_t)QSE_TYPE_MIN(int); nt.sec <= (qse_long_t)QSE_TYPE_MAX(int); nt.sec += QSE_SECS_PER_DAY)
#else
for (nt = QSE_TYPE_MIN(int); nt < (QSE_TYPE_MAX(int) - QSE_SECS_PER_DAY * 2); nt += QSE_SECS_PER_DAY)
for (nt.sec = QSE_TYPE_MIN(int); nt.sec < (QSE_TYPE_MAX(int) - QSE_SECS_PER_DAY * 2); nt.sec += QSE_SECS_PER_DAY)
#endif
{
#ifdef _WIN32
__time64_t t = (__time64_t)nt;
__time64_t t = (__time64_t)nt.sec;
#else
time_t t = (time_t)nt;
time_t t = (time_t)nt.sec;
#endif
qse_ntime_t qnt = nt * 1000;
qse_ntime_t qnt;
struct tm* tm;
qse_ntime_t xx;
if (qnt >= 0) qnt += rand() % 1000;
else qnt -= rand() % 1000;
qnt = nt;
#if 0
if (qnt.sec >= 0) qnt.sec += rand() % 1000;
else qnt.sec -= rand() % 1000;
#endif
#ifdef _WIN32
tm = _gmtime64 (&t);
#else
tm = gmtime (&t);
#endif
qse_gmtime (qnt, &bt);
qse_gmtime (&qnt, &bt);
#ifdef _WIN32
qse_printf (QSE_T(">>> time %I64d: "), (__int64)qnt);
qse_printf (QSE_T(">>> time %I64d.%I64d: "), (__int64)qnt.sec, (__int64)qnt.nsec);
#elif (QSE_SIZEOF_LONG_LONG > 0)
qse_printf (QSE_T(">>> time %lld: "), (long long)qnt);
qse_printf (QSE_T(">>> time %lld.%lld: "), (long long)qnt.sec, (long long)qnt.nsec);
#else
qse_printf (QSE_T(">>> time %ld: "), (long)qnt);
qse_printf (QSE_T(">>> time %ld.%ld: "), (long)qnt.sec, (long)qnt.nsec);
#endif
if (tm == QSE_NULL ||
@ -127,7 +137,7 @@ static int test1 (void)
qse_printf (QSE_T("[GMTIME ERROR %ld]\n"), (long)t);
#endif
if (tm == QSE_NULL) qse_printf (QSE_T(">> GMTIME RETURNED NULL\n"));
print_time (qnt, &bt);
print_time (&qnt, &bt);
qse_printf (QSE_T("-------------------------------\n"));
}
else
@ -141,18 +151,18 @@ static int test1 (void)
}
else
{
if (xx == qnt)
if (xx.sec == qnt.sec && xx.nsec == qnt.nsec)
{
qse_printf (QSE_T("[TIMEGM OK %d/%d/%d %d:%d:%d]\n"), bt.year + QSE_BTIME_YEAR_BASE, bt.mon + 1, bt.mday, bt.hour, bt.min, bt.sec);
}
else
{
#ifdef _WIN32
qse_printf (QSE_T("[TIMEGM ERROR %I64d, %d/%d/%d %d:%d:%d]\n"), (__int64)xx, bt.year + QSE_BTIME_YEAR_BASE, bt.mon + 1, bt.mday, bt.hour, bt.min, bt.sec);
qse_printf (QSE_T("[TIMEGM ERROR %I64d.%I64d, %d/%d/%d %d:%d:%d]\n"), (__int64)xx.sec, (__int64)xx.nsec, bt.year + QSE_BTIME_YEAR_BASE, bt.mon + 1, bt.mday, bt.hour, bt.min, bt.sec);
#elif (QSE_SIZEOF_LONG_LONG > 0)
qse_printf (QSE_T("[TIMEGM ERROR %lld, %d/%d/%d %d:%d:%d]\n"), (long long)xx, bt.year + QSE_BTIME_YEAR_BASE, bt.mon + 1, bt.mday, bt.hour, bt.min, bt.sec);
qse_printf (QSE_T("[TIMEGM ERROR %lld.%lld, %d/%d/%d %d:%d:%d]\n"), (long long)xx.sec, (long long)xx.nsec, bt.year + QSE_BTIME_YEAR_BASE, bt.mon + 1, bt.mday, bt.hour, bt.min, bt.sec);
#else
qse_printf (QSE_T("[TIMEGM ERROR %ld, %d/%d/%d %d:%d:%d]\n"), (long)xx, bt.year + QSE_BTIME_YEAR_BASE, bt.mon + 1, bt.mday, bt.hour, bt.min, bt.sec);
qse_printf (QSE_T("[TIMEGM ERROR %ld.%ld, %d/%d/%d %d:%d:%d]\n"), (long)xx.sec, (long)xx.nsec, bt.year + QSE_BTIME_YEAR_BASE, bt.mon + 1, bt.mday, bt.hour, bt.min, bt.sec);
#endif
}
}

View File

@ -41,6 +41,7 @@ static void sigint (int sig)
static int httpd_main (int argc, qse_char_t* argv[])
{
qse_httpd_t* httpd = QSE_NULL;
qse_ntime_t tmout;
int ret = -1, i;
if (argc <= 1)
@ -79,7 +80,10 @@ static int httpd_main (int argc, qse_char_t* argv[])
signal (SIGPIPE, SIG_IGN);
qse_httpd_setoption (httpd, QSE_HTTPD_CGIERRTONUL);
ret = qse_httpd_loopstd (httpd, 10000);
tmout.sec = 10;
tmout.nsec = 0;
ret = qse_httpd_loopstd (httpd, &tmout);
signal (SIGINT, SIG_DFL);
signal (SIGPIPE, SIG_DFL);

View File

@ -184,6 +184,7 @@ static qse_httpd_server_t* attach_server (
static int httpd_main (int argc, qse_char_t* argv[])
{
qse_httpd_t* httpd = QSE_NULL;
qse_ntime_t tmout;
int ret = -1, i;
static qse_httpd_server_cbstd_t cbstd = { makersrc, freersrc };
@ -217,7 +218,10 @@ static int httpd_main (int argc, qse_char_t* argv[])
qse_httpd_setname (httpd, QSE_MT("httpd02/qse 1.0"));
qse_httpd_setoption (httpd, QSE_HTTPD_CGIERRTONUL);
ret = qse_httpd_loopstd (httpd, 10000);
tmout.sec = 10;
tmout.nsec = 0;
ret = qse_httpd_loopstd (httpd, &tmout);
signal (SIGINT, SIG_DFL);
signal (SIGPIPE, SIG_DFL);