@ -18,6 +18,8 @@
* License along with Libav ; if not , write to the Free Software
* Foundation , Inc . , 51 Franklin Street , Fifth Floor , Boston , MA 02110 - 1301 USA
*/
# include "libavutil/time_internal.h"
# include "avformat.h"
# include "internal.h"
@ -49,30 +51,10 @@ void ff_dynarray_add(intptr_t **tab_ptr, int *nb_ptr, intptr_t elem)
couple of places , though . */
struct tm * ff_brktimegm ( time_t secs , struct tm * tm )
{
int days , y , ny , m ;
int md [ ] = { 31 , 28 , 31 , 30 , 31 , 30 , 31 , 31 , 30 , 31 , 30 , 31 } ;
days = secs / 86400 ;
secs % = 86400 ;
tm - > tm_hour = secs / 3600 ;
tm - > tm_min = ( secs % 3600 ) / 60 ;
tm - > tm_sec = secs % 60 ;
/* oh well, may be someone some day will invent a formula for this stuff */
y = 1970 ; /* start "guessing" */
while ( days > 365 ) {
ny = ( y + days / 366 ) ;
days - = ( ny - y ) * 365 + LEAPS_COUNT ( ny - 1 ) - LEAPS_COUNT ( y - 1 ) ;
y = ny ;
}
if ( days = = 365 & & ! ISLEAP ( y ) ) { days = 0 ; y + + ; }
md [ 1 ] = ISLEAP ( y ) ? 29 : 28 ;
for ( m = 0 ; days > = md [ m ] ; m + + )
days - = md [ m ] ;
tm = gmtime_r ( & secs , tm ) ;
tm - > tm_year = y ; /* unlike gmtime_r we store complete year here */
tm - > tm_mon = m + 1 ; /* unlike gmtime_r tm_mon is from 1 to 12 */
tm - > tm_mday = days + 1 ;
tm - > tm_year + = 1900 ; /* unlike gmtime_r we store complete year here */
tm - > tm_mon + = 1 ; /* unlike gmtime_r tm_mon is from 1 to 12 */
return tm ;
}