#include "cll1.h"

struct Passwd
{
 char *username, *home, *shell; 
 int uid, gid;
 list(Passwd);
} *etcpasswd,*passwd;

int main(void)
{
 char *str,*ptr;
 FILE *f;
 int column;

 parse(str,"/etc/passwd")
 {
  column=1;
  suffix(ptr,str,'\n');
  split(ptr,str,':') switch(column++)
  {
   case 1: create(passwd,Passwd);passwd->username=ptr;break;
   case 3: passwd->uid=atoi(ptr);break;
   case 4: passwd->gid=atoi(ptr);break;
   case 6: passwd->home=ptr;break;
   case 7: passwd->shell=ptr;insert(passwd,etcpasswd,sort_by,username);break;
  }
 }
 done;
  
 puts("--------- /etc/passwd sorted by username ---------------");
 every(passwd,etcpasswd) printf("#%03d: %s\n",passwd->uid,passwd->username);

 puts("--------- /etc/passwd sorted by uid --------------------");
 sort(passwd,etcpasswd,order_by,uid);
 every(passwd,etcpasswd) printf("#%03d: %s\n",passwd->uid,passwd->username);
}

