#include <stdio.h>
#include <sys/stat.h>

#define MAX_SAMPLES 3

int main(int argc, char *argv []) {
	long tot_len = -1;
	char *filename;
	struct stat st;
	long start_len, end_len;
	long tot_transferred=0;
	long tot_secs = 0;
	int bits_per_byte = 8;
	int update = 10;
	
	filename=argv[1];
	tot_len = atol(argv[2]);

	while(1) {
		stat(filename,&st);
		start_len = st.st_size;
		printf("%8ld ", start_len); fflush(stdout);
		sleep(update);
		stat(filename,&st);
		end_len = st.st_size;

		tot_transferred += (end_len - start_len);
		tot_secs+=update;

		if(end_len - start_len)
			printf("%8.2f kbits/sec. ",
				(float) (end_len - start_len) / 1024.0 * bits_per_byte / update);
		else
			printf("    STALLED         ");

		printf("%8.2f avg. kbits/sec. %.1f min. remain\n",
			(float) (tot_transferred / tot_secs) / 1024.0 * bits_per_byte / update,
			(float) (tot_len-end_len)/(tot_transferred/tot_secs) / 60.0 );
	}
	
	return 0;
}

