/* dumpwtmp.c by Michael Thorpe 2008-12-12 */ #include #include #include int main(int argc,char **argv) { FILE *f; struct utmp ut; int i; unsigned char *ctmp; unsigned short *stmp; f=fopen((2==argc)?argv[1]:"/var/log/wtmp","rb"); if(!f) { perror("open"); return(1); } while(1==fread((void *)&ut,sizeof(ut),1,f)) { switch(ut.ut_type) { case UT_UNKNOWN: fputs("UT_UNKNOWN",stdout); break; case RUN_LVL: fputs("RUN_LVL",stdout); break; case BOOT_TIME: fputs("BOOT_TIME",stdout); break; case NEW_TIME: fputs("NEW_TIME",stdout); break; case OLD_TIME: fputs("OLD_TIME",stdout); break; case INIT_PROCESS: fputs("INIT_PROCESS",stdout); break; case LOGIN_PROCESS: fputs("LOGIN_PROCESS",stdout); break; case USER_PROCESS: fputs("login",stdout); break; case DEAD_PROCESS: fputs("logout",stdout); break; case ACCOUNTING: fputs("ACCOUNTING",stdout); break; default: printf("%d",ut.ut_type); break; } printf("\t%u\t",ut.ut_pid); for(i=0;i