#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

#define WAIT_TIME 1
#define STRING_SIZE 5

const char *make_size(off_t);

int main(int argc, char **argv)
{
	struct stat info;
	if(argc<2)
	{
		printf("usage: %s: <name of file>\n",argv[0]);
		return EXIT_SUCCESS;
	}
	for(;;)
	{
		if(stat(argv[1],&info)==-1)
		{
			perror("error reading file");
			return EXIT_FAILURE;
		}
		printf("%s: %s\r",argv[1],make_size(info.st_size));
		fflush(stdout);
		sleep(WAIT_TIME);
	}
	return EXIT_SUCCESS;
}

const char *make_size(off_t size)
{
	char *str;
	str = malloc(STRING_SIZE);
	if(size<1024)
		snprintf(str,STRING_SIZE,"%dB",size);
	else if(size>1024 && size<(1024*1024))
		snprintf(str,STRING_SIZE,"%dK",size/1024);
	else if(size>1024 && size<(1024*1024*1024))
		snprintf(str,STRING_SIZE,"%dM",size/(1024*1024));
	return str;
}

