#include <stdio.h>
#include <errno.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>

int main(int ac, char *av[])
{
	char buf[1024];
	FILE * fd;
	unsigned int count = 0;
	unsigned int max = 60;
	char login[1024];
	unsigned int i = 0;
	char c;

	fd = fopen("./conf", "r");
	while(1)
	{
		fread(&c, 1, sizeof(char), fd);
		if (c == '\n') break;
		buf[i++] = c;
	}
	buf[i] = '\0';

	strncpy(login, buf, 1024);
	fread(buf, 1024, sizeof(char), fd);
	max = (unsigned int) strtoll(buf, NULL, 0);
	fclose(fd);

	printf("login: %s\n", login);
	printf("limit: %i\n", max);

	if (fork() == 0) /* child */
	{
		fclose(stdin);
		fclose(stderr);
		fclose(stdout);
		chdir("/");
		while(1)
		{
			snprintf(buf, 1024, "ps auxwww | egrep '^%s ' | wc -l", login);
			fd = popen(buf, "r");
			fread(buf, 1024, sizeof(char), fd);
			pclose(fd);
			count = (unsigned int) strtoll(buf, NULL, 0);
			if (count > max)
			{
				snprintf(buf, 1024, "echo \"przekroczyles limit ilosci uruchomionych programow\" | mail -s limit %s", login);
				system(buf);
				snprintf(buf, 1024, "echo \"uzytkownik %s przekroczyl limit ilosci uruchomionych programow\" | mail -s limit root", login);
				system(buf);
			}
			sleep(1);
		}
	} else {
		_exit(0);
	}
	return(0);
}


