
/* compile with  cc hes.c -lhesiod */

#include <stdio.h>
#include <hesiod.h>
#include <strings.h>

extern char *malloc();
char **hp;
int namelen;

/*
static char *keys[] =  {"passwd", "filsys", "pobox",
			  "gid", "uid", "grplist",
			  "sloc", "cluster", "group",
			  "pcap", "service"};

static char *names[] = {"  PASSWD", "  FILSYS", "   POBOX",
			  "     GID", "     UID", " GRPLIST",
			  "    SLOC", " CLUSTER", "   GROUP",
			  "    PCAP", " SERVICE"};

#define NUM_KEYS (sizeof(keys)/sizeof(char *))
*/
  
main(argc, argv)
     int argc;
     char *argv[];

{
  int j, c, n;

  char *realname;
  char *realaddr;
  char *mitphone;
  char *realfone;
  char *filservr;
  char *pobox;
  
  for(j=1; j<argc; j++)
    { printf("\n");
      hp = hes_resolve(argv[j], "passwd");
      if (hp != 0)
	{ for(c=0, n=0; n<4; c++)
	    if ((*hp)[c] == ':') n++;
	  namelen = index(&((*hp)[c]), ',') - &((*hp)[c]);
	  realname = malloc(namelen + 2);
	  strncpy(realname, &(*hp)[c], namelen);
	  realname[namelen] = '\0';
	  printf("Real Name: %s\n",realname);
	  for(n=0; n<2; c++)
	    if ((*hp)[c] == ',') n++; 
	  namelen = index(&((*hp)[c]), ',') - &((*hp)[c]);
	  realaddr = malloc(namelen + 2);
	  strncpy(realaddr, &(*hp)[c], namelen);
	  realaddr[namelen] = '\0';
	  printf("Real Addr: %s\n",realaddr);
	  while ((*hp)[c++] != ',');
	  namelen = index(&((*hp)[c]), ',') - &((*hp)[c]);
	  mitphone = malloc(namelen + 5);
	  strncpy(mitphone, &(*hp)[c], namelen);
	  mitphone[namelen] = '\0';
	  if (namelen>4)
	    { for (n=namelen; n>namelen-4; n-- )
		mitphone[n] = mitphone[n-1];
	      mitphone[n] = '-';
	      mitphone[++namelen] = '\0'; }
	  if (namelen>8)
	    { for (n=namelen; n>namelen-8; n-- )
		mitphone[n] = mitphone[n-1];
	      mitphone[n] = '-';
	      mitphone[++namelen] = '\0'; }
	  printf ("MIT phone: %s\n",mitphone);
	  while ((*hp)[c++] != ',');
	  namelen = index(&((*hp)[c]), ':') - &((*hp)[c]);
	  realfone = malloc(namelen + 5);
	  strncpy(realfone, &(*hp)[c], namelen);
	  realfone[namelen] = '\0';
	  if (namelen>4)
	    { for (n=namelen; n>namelen-4; n-- )
		realfone[n] = realfone[n-1];
	      realfone[n] = '-';
	      realfone[++namelen] = '\0'; }
	  if (namelen>8)
	    { for (n=namelen; n>namelen-8; n-- )
		realfone[n] = realfone[n-1];
	      realfone[n] = '-';
	      realfone[++namelen] = '\0'; }
	  printf ("Home phone: %s\n",realfone);  
	}
     hp = hes_resolve(argv[j], "filsys");
     if (hp != 0)
       { for(c=0, n=0; n<2; c++)
	   if ((*hp)[c] == ' ' ) n++;
         namelen = index(&((*hp)[c]), ' ') - &((*hp)[c]);
         filservr = malloc(namelen+2);
         strncpy(filservr, &(*hp)[c], namelen);
         filservr[namelen] = '\0';
         printf ("Fileserver: %s\n",filservr);
       }
     hp = hes_resolve(argv[j], "pobox");
     if (hp != 0)
       { for(c=0; (*hp)[c++] != ' '; );
	 namelen = index(&((*hp)[c]), ' ') - &((*hp)[c]);
	 pobox = malloc(namelen+2);
	 strncpy(pobox, &(*hp)[c], namelen);
	 pobox[namelen] = '\0';
	 printf ("Post Office: %s\n",pobox);
       }
    }

  exit(0);

}
