/* 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 #include 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); }