forked from enlightenment/efl
parent
d0c5158f5b
commit
819c572d1c
|
@ -42,7 +42,9 @@
|
|||
* @cond LOCAL
|
||||
*/
|
||||
|
||||
static int _eina_hamsters = 7;
|
||||
const char *_eina_hamster_time = __TIME__;
|
||||
const char *_eina_hamster_date = __DATE__;
|
||||
static int _eina_hamsters = -1;
|
||||
|
||||
/**
|
||||
* @endcond
|
||||
|
@ -74,6 +76,56 @@ static int _eina_hamsters = 7;
|
|||
EAPI int
|
||||
eina_hamster_count(void)
|
||||
{
|
||||
if (_eina_hamsters < 0)
|
||||
{
|
||||
int hrs = 0, min = 0, sec = 0;
|
||||
char mon[8] = "";
|
||||
int monnum = 0, day = 0, year = 0;
|
||||
int fields;
|
||||
|
||||
fields = sscanf(_eina_hamster_time, "%02i:%02i:%02i", &hrs, &min, &sec);
|
||||
if (fields == 3)
|
||||
{
|
||||
_eina_hamsters = (hrs * 60) + min;
|
||||
fields = sscanf(_eina_hamster_date, "%s %i %i", mon, &day, &year);
|
||||
if (fields == 3)
|
||||
{
|
||||
int i;
|
||||
const char *mons[] =
|
||||
{
|
||||
"Jan",
|
||||
"Feb",
|
||||
"Mar",
|
||||
"Apr",
|
||||
"May",
|
||||
"Jun",
|
||||
"Jul",
|
||||
"Aug",
|
||||
"Sep",
|
||||
"Oct",
|
||||
"Nov",
|
||||
"Dec"
|
||||
};
|
||||
|
||||
for (i = 0; i < 12; i++)
|
||||
{
|
||||
if (!strcmp(mon, mons[i]))
|
||||
{
|
||||
monnum = i + 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
// alloc 60 for mins, 24 for hrs
|
||||
// alloc 1-31 (32) for days, 1-12 (13) for months
|
||||
// use year as-is, for 31 bits (signed) this gives us up to
|
||||
// 3584 years, which is good enough imho. - 1500 years from
|
||||
// now or so. :)
|
||||
_eina_hamsters +=
|
||||
(day + (monnum * 32) + (13 * 32 * year)) * (24 * 60);
|
||||
}
|
||||
}
|
||||
}
|
||||
// format: [rest - year][0-12 - month][0-31 - day][0-23 - hrs][0-59 - sec]
|
||||
return _eina_hamsters;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue