/* vlastni who, ktere cte /var/run/utmp po znacich
 * 
 *   	                      -( trace@dump.cz )-
 */

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <utmp.h>

int main() {
	FILE *fd;
	struct utmp record;
	char *ptr;
	char ch;
	int i = 0;
	int index = 0;
	
	if (!(fd = fopen("/var/run/utmp", "r"))) {
		fprintf(stderr, "Nelze otevrit soubor /var/run/utmp\n");
		exit(1);
	}
	
	memset(&record, 0, sizeof(record));
	ptr = (char *)&record;
	
	while ((ch = fgetc(fd)) != EOF) {
		ptr[index] = ch;
		i++;	

		index = i % sizeof(record);
		
		if ((i % sizeof(record)) == 0) {
			if (record.ut_type == USER_PROCESS)
				printf("%s\t%s\n", record.ut_user, record.ut_line);
			memset(&record, 0, sizeof(record));
		}
	}

	fclose(fd);
	return 0;
}

