/* Возвращает time_t для строки в формате: Mon, 07 Apr 2003 12:58:39 GMT */
unsigned long stimegm(char *dt) {
	if (!dt) return(0);

	char weekday[4],month[4];
	unsigned long DD=0,YY=0,MM=0,hh=0,mm=0,ss=0;

	sscanf(dt,"%3s, %u %3s %u %u:%u:%u GMT",&weekday,&DD,&month,&YY,&hh,&mm,&ss);

	if (strcmp(month,"Jan")==0) MM=1;
	if (strcmp(month,"Feb")==0) MM=2;
	if (strcmp(month,"Mar")==0) MM=3;
	if (strcmp(month,"Apr")==0) MM=4;
	if (strcmp(month,"May")==0) MM=5;
	if (strcmp(month,"Jun")==0) MM=6;
	if (strcmp(month,"Jul")==0) MM=7;
	if (strcmp(month,"Aug")==0) MM=8;
	if (strcmp(month,"Sep")==0) MM=9;
	if (strcmp(month,"Oct")==0) MM=10;
	if (strcmp(month,"Nov")==0) MM=11;
	if (strcmp(month,"Dec")==0) MM=12;
	
	// Далее идет код Сергея Сидорина
	unsigned long days = ((YY-1970)*(365+365+366+365)+1)/4 + DD - 1;
	switch (MM) {
		case 2: days += 31; break;
		case 3: days += 31+28; break;
		case 4: days += 31+28+31; break;
		case 5: days += 31+28+31+30; break;
		case 6: days += 31+28+31+30+31; break;
		case 7: days += 31+28+31+30+31+30; break;
		case 8: days += 31+28+31+30+31+30+31; break;
		case 9: days += 31+28+31+30+31+30+31+31; break;
		case 10: days += 31+28+31+30+31+30+31+31+30; break;
		case 11: days += 31+28+31+30+31+30+31+31+30+31; break;
		case 12: days += 31+28+31+30+31+30+31+31+30+31+30; break;
	}
	if ( (MM >= 3) && (YY%4 == 0) )
		days ++;
	return days*24*3600 + hh*3600 + mm*60 + ss;
	}

