view toys/posix/who.c @ 1189:95ae2805622f draft

Add Szabolcs Nagy's deflate/inflate code from git://git.suckless.org/flate Confirmed with him on IRC it's ok to use under toybox license, glued the files together and hammered square peg into round hole, no other changes yet.
author Rob Landley <rob@landley.net>
date Fri, 31 Jan 2014 06:01:30 -0600
parents 53f165466f3b
children 685a0da6ca59
line wrap: on
line source

/* who.c - display who is on the system
 *
 * Copyright 2012 ProFUSION Embedded Systems
 *
 * by Luis Felipe Strano Moraes <lfelipe@profusion.mobi>
 *
 * See http://opengroup.org/onlinepubs/9699919799/utilities/who.html
 *
 * Posix says to support many options (-abdHlmpqrstTu) but this
 * isn't aimed at minicomputers with modem pools.

USE_WHO(NEWTOY(who, "a", TOYFLAG_BIN))

config WHO
  bool "who"
  default y
  help
    usage: who

    Print logged user information on system
*/

#define FOR_who
#include "toys.h"

void who_main(void)
{
  struct utmpx *entry;

  setutxent();

  while ((entry = getutxent())) {
    if ((toys.optflags & FLAG_a) || entry->ut_type == USER_PROCESS) {
      time_t time;
      int time_size;
      char *times;

      time = entry->ut_tv.tv_sec;
      times = ctime(&time);
      time_size = strlen(times) - 2;
      printf("%s\t%s\t%*.*s\t(%s)\n", entry->ut_user, entry->ut_line,
        time_size, time_size, ctime(&time), entry->ut_host);
    }
  }

  endutxent();
}