Example #1
0
/*---------------------------------------------------------------------------*/
int *__c6xabi_errno_addr()
{
   return __TI_TLS_DATA_PTR(__errno);
}
Example #2
0
_CODE_ACCESS struct tm *localtime(const time_t *timer)
{
    struct tm *local_tm_ptr = __TI_TLS_DATA_PTR(local_tm);
    time_t ltime  = timer ? *timer : 0;
 
    local_tm_ptr->tm_sec  = 0;
    local_tm_ptr->tm_min  = 0;
    local_tm_ptr->tm_hour = 0;
    local_tm_ptr->tm_mday = 1;
    local_tm_ptr->tm_mon  = 0;
    local_tm_ptr->tm_year = 0;
 
    if (timer == 0 || ltime == (time_t)-1) return local_tm_ptr;
 
#if INT_MAX <= 32767
    /*------------------------------------------------------------------*/
    /* MAKE SURE THE NUMBER OF SECONDS SINCE Jan 1, 1900 CAN BE         */
    /* REPRESENTED IN SIGNED INTS.                                      */
    /*------------------------------------------------------------------*/
    local_tm_ptr->tm_sec   =  ltime % SECS_IN_MIN;
    local_tm_ptr->tm_min   = (ltime / SECS_IN_MIN) % MINS_IN_HR;
    local_tm_ptr->tm_hour  = (ltime / SECS_IN_HR)  % HRS_IN_DAY;
 
    /*------------------------------------------------------------------*/
    /* CONVERT ltime TO NUMBER OF DAYS                                  */
    /*------------------------------------------------------------------*/
    ltime /= SECS_IN_DAY;
 
    /*------------------------------------------------------------------*/
    /* TO DETERMINE THE YEAR, INSTEAD OF DIVIDING BY 365, DO A SUBTRACT */
    /* LOOP THAT ACCOUNTS FOR LEAP YEARS.                               */
    /*------------------------------------------------------------------*/
    {
	int year = 0;
	while (ltime >= DAYS_IN_YR(year))
	{
	    ltime -= DAYS_IN_YR(year);
	    ++year;
	}
     
	local_tm_ptr->tm_year  = year;
	local_tm_ptr->tm_mday += ltime;
    }
 
#else
    /*------------------------------------------------------------------*/
    /* MAKE SURE THE NUMBER OF SECONDS SINCE Jan 1, 1900 CAN BE         */
    /* REPRESENTED IN SIGNED INTS.                                      */
    /*------------------------------------------------------------------*/
    if ((int)ltime < 0)
    {
	local_tm_ptr->tm_sec  = ltime % 60; 
	local_tm_ptr->tm_min  = ltime / 60; 
    }
    else local_tm_ptr->tm_sec = ltime;
#endif
 
    /*------------------------------------------------------------------*/
    /* MAKE VALUES IN local INTO A VALID TIME.                          */
    /*------------------------------------------------------------------*/
    mktime(local_tm_ptr);
    return local_tm_ptr;
}