#include <stdio.h>
#include <math.h>
#include <stdlib.h>
 
int update_srt (fp, time)
FILE *fp; int time;
{
	int hour, minute, second, test = 1;
	char p1 = 0,  p2 = 0, p3 = 0, p4 = 0;
	
	while (getc (fp) != EOF)
	{
		fseek (fp, -1, 1);
		
		
		fscanf (fp, "%*d");
		fscanf (fp, "%d:%d:%d", &hour, &minute, &second);
		
		if (time >= 0)
			test = psync (&hour, &minute, &second, time);
		else
			test = nsync (&hour, &minute, &second, -time);
		
		if (test == 0)  		// Requested sync request is illegal...
			return (2);
				
		fseek (fp, -8, 1);
		fprintf (fp, "%02d:%02d:%02d", hour, minute, second);
		
		
		fscanf (fp, ",%*d --> ");
		fscanf (fp, "%d:%d:%d", &hour, &minute, &second);
		
		if (time >= 0)
			test = psync (&hour, &minute, &second, time);
		else
			test = nsync (&hour, &minute, &second, -time);
		
		if (test == 0)  		// Requested sync request is illegal...
			return (2);
		
		fseek (fp, -8, 1);
		fprintf (fp, "%02d:%02d:%02d", hour, minute, second);
		
		
		while (!(p1 == '\r' && p2 == '\n' && p3 == '\r' && p4 == '\n'))
		{
			p1 = p2; p2 = p3; p3 = p4;
			p4 = getc (fp);
			if (p4 == EOF)
				break;
		}
		p1 = 0; p2 = 0, p3 = 0, p4 = 0;
	}
	return (100);
}

int psync (hourp, minutep, secondp, time)
int *hourp, *minutep, *secondp, time;
{
	*secondp = *secondp + time;
	*minutep = *minutep + (*secondp / 60);
	*secondp = *secondp % 60;
	*hourp = *hourp + (*minutep / 60);
	*minutep = *minutep % 60;
	
	return 1;
}

int nsync (hourp, minutep, secondp, time)
int *hourp, *minutep, *secondp, time;
{
	int borrow1, borrow2, borrow3, result = 1;
	
	borrow1 = borrow (*secondp, time);
	*secondp = (60 * borrow1) + *secondp - time;
	
	borrow2 = borrow (*minutep, borrow1);
	*minutep = (60 * borrow2) + *minutep - borrow1;
	
	borrow3 = borrow (*hourp, borrow2);
	*hourp = (60 * borrow3) + *hourp - borrow2;

	if (borrow3 > 0)
		result = 0;
	
	return result;
}

int borrow (sub, min)
int sub, min;
{
	int k = 0;
	
	while (!((sub + (k * 60)) >= min))
		k++;
	
	return k;
}
