#include <stdio.h>
#include <utmp.h>
#include <unistd.h>
#include <string.h>

void main(void)
{
  FILE *file;
  char *lname,*ptr,*thetty=NULL;
  struct utmp item;
  int found=0,len;

  lname=getlogin();
  if(lname==NULL || (file=fopen("/etc/utmp","rb"))==NULL) {
    printf(":0.0\n");
    exit(0);
  }
  len=strlen(lname);
  if(isatty(STDIN_FILENO)) {
    thetty=ttyname(STDIN_FILENO);
    if((thetty=strrchr(thetty,'/'))!=NULL) thetty++;
  }
  if(thetty==NULL) {
    while(fread(&item,sizeof(item),1,file)==1)
      if(item.ut_type==USER_PROCESS && 
strncmp(lname,item.ut_name,len)==0) 
	{ found=1; break; }
  } else {
    while(fread(&item,sizeof(item),1,file)==1)
      if(item.ut_type==USER_PROCESS && 
strncmp(lname,item.ut_name,len)==0 &&
	 strcmp(thetty,item.ut_line)==0) { found=1; break; } 
  }
  if(found) {
#ifdef GETIP
    if(item.ut_host[0]!=':')
      
printf("%d.%d.%d.%d:0.0\n",(item.ut_addr&0xff),(item.ut_addr&0xff00)
>>8,
	     
(item.ut_addr&0xff0000)>>16,(item.ut_addr&0xff000000)>>24);
    else
      printf(":0.0\n");
#else
    item.ut_host[15]='\0';
    if((ptr=strchr(item.ut_host,':'))!=NULL) *ptr='\0';
    if((ptr=strchr(item.ut_host,'.'))!=NULL) *ptr='\0';
    ptr=item.ut_host;
    while(*ptr==' ')
      ptr++;
    printf("%s:0.0\n",ptr);
#endif
  }
  else
    printf(":0.0\n");
  fclose(file);
  exit(0);
}

