who.c revision 7aa651a6a4496d848f86de9b1e6b3a003256a01f
17aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley/* who.c - display who is on the system 25232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes * 35232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes * Copyright 2012 ProFUSION Embedded Systems 45232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes * 55232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes * by Luis Felipe Strano Moraes <lfelipe@profusion.mobi> 65232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes * 7f91b7c89bc852868692b9518185421ebb52d67b3Rob Landley * See http://opengroup.org/onlinepubs/9699919799/utilities/who.html 85232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes 95232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano MoraesUSE_WHO(NEWTOY(who, NULL, TOYFLAG_BIN)) 105232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes 115232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraesconfig WHO 127aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley bool "who" 137aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley default n 147aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley help 157aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley usage: who 165232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes 177aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley Print logged user information on system 185232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes*/ 195232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes 205232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes#include "toys.h" 215232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes 225232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraesvoid who_main(void) 235232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes{ 247aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley struct utmpx *entry; 255232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes 267aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley setutxent(); 270352f4257da11908b211d704a9ef38e0055711e5Luis Felipe Strano Moraes 287aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley while ((entry = getutxent())) { 297aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley if (entry->ut_type == USER_PROCESS) { 307aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley time_t time; 317aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley int time_size; 327aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley char * times; 330352f4257da11908b211d704a9ef38e0055711e5Luis Felipe Strano Moraes 347aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley time = entry->ut_tv.tv_sec; 357aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley times = ctime(&time); 367aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley time_size = strlen(times) - 2; 377aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley printf("%s\t%s\t%*.*s\t(%s)\n", entry->ut_user, entry->ut_line, 387aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley time_size, time_size, ctime(&time), entry->ut_host); 395232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes } 407aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley } 415232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes 427aa651a6a4496d848f86de9b1e6b3a003256a01fRob Landley endutxent(); 435232ac079353fb3779e480b74e87c714af6ee707Luis Felipe Strano Moraes} 44