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