utmp w



  • guten morgen erst mal. Hoffe ihr habt alle gut geschlafen.

    Also ich hab folgende schleife:

    while(u = getutent())
    {
       if(u == USER_PROCESS)
       {
          printf("%s", u->ut->user)
          printf("%s", u->ut_line)
          printf("%s", u->ut_host)
       }
    }
    

    und würde die gern erweitern um die Ausgabe, was der jeweilige user gerade macht, also so wie bei w die letzte Spalte (nicht nur das der user n terminal auf hat, sondern was der darauf macht) aber mit dem Quellcode von W
    werd ich grad net glücklich. Und einfach nur abschreiben macht mer net.
    Wer super nett wenns mir einer von euch erklären würd.



  • So schwer ist doch der Quellcode von w.c nicht zu verstehen. Die Version von w.c sind ja grade mal so 9KB.

    http://ghi.slacker.se/linux/src/procps-010114/w.c

    ... viele viele includierte Header ...
    
    /***** showinfo */
    static void showinfo(utmp_t *u, int formtype, int maxcmd, int from)
    {
      proc_t *best;
    ...
      best = getproc(u, tty + 5, &jcpu, &ut_pid_found);
    ...
      if (best)
        {
          if (best->cmdline)
            print_strlist(stdout, best->cmdline, " ", maxcmd);
          else
            printf("%*.*s", -maxcmd, maxcmd, best->cmd);
        }
      else
        {
          printf("-");
        }
      fputc('\n', stdout);
    }
    
    int main()
    {
      char* user = NULL;
      utmp_t* u;
      int longform=1;
      int maxcmd=80;
      int from=1;
    ...
      while( (u=getutent()) )
        {
          if (u->ut_type == USER_PROCESS
              && (user ? !strncmp(u->ut_user, user, USERSZ) : *u->ut_user))
            {
         showinfo(u, longform, maxcmd, from);
            }
        }
    
      showinfo(u, longform, maxcmd, from);
    ...
      return 0;
    }
    


  • Ja den hab ich auch, aber des müsst doch einfacher gehen. weil verfolg mal alle vars zurück wo die gefüllt werden. Mega aufwand.



  • Der Quellcode zu "w" ist ja FreeSoftware und wenn es einfacher/eleganter gelöst hätte werden können, wäre es sicher in der Zwischenzeit von jemandem auch schon entsprechend (um-)programmiert worden.



  • Jo 1:0 für dich trotzdem danke.


Anmelden zum Antworten