/* mwho.c -- eventually, show a constantly updated list of logged-in users
 * by Moss Collum
 * usage : mwho [interesting users...]
 * right now, of course, it does much less than that
 * and the source is stolen from a radically different program
 * but we'll see what happens in the long run.
 */
#include <stdio.h>
#include <utmp.h>

int main()
{
	int fp, open(), folkn;
	struct utmp user;
	char folks[12][8], nfolks[12][8];

	if ((fp = open(_PATH_UTMP,0)) == -1) {
		printf("fatal error!  cannot open %s.\n",_PATH_UTMP);
		exit(-1);
		}
        
	printf("\r\n\007");
	folkn = 0;
	while (read(fp, &user, sizeof user) > 0) {
		if (strlen(user.ut_line) > 0) {
			folkn++;
			nfolks[folkn] = user.ut_name;
			}
		}
	
	for (folkn=1;folkn<13;folkn++) {
		if (!(nfolks[folkn] == folks[folkn])) {
			if (strlen(folks[folkn]) == 0) {
				printf("%s has logged on.\n",nfolks[folkn]);
				} else if (strlen(nfolks[folkn]) == 0) {
				printf("%s has logged off.\n",nfolks[folkn]);
				} else {
				printf("%s has logged on.\n",nfolks[folkn]);
				printf("%s has logged off.\n",nfolks[folkn]);
				}
			folks[folkn] = nfolks[folkn];
			}
		}
	close(fp);
}
