#include <unistd.h>
#include <errno.h>
#include "ad_func.h"

extern int errno;

int
main(int argc,char **argv)
{
  char *login, *password;
  int r, i;
	
	char up[CHAR_MAX];
	int uplen;
	ad_pwd *ad;
	
  if (!argv[1]) _exit(2);
 
  uplen = 0;
  for (;;) {
    do
      r = read(3,up + uplen,sizeof(up) - uplen);
    while ((r == -1) && (errno == EINTR));
    if (r == -1) _exit(111);
    if (r == 0) break;
    uplen += r;
    if (uplen >= sizeof(up)) _exit(1);
  }
  close(3);

  i = 0;
  if (i >= uplen) _exit(2);
  login = up + i;
  while (up[i++]) if (i >= uplen) _exit(2);
  password = up + i;
  if (i >= uplen) _exit(2);
  while (up[i++]) if (i >= uplen) _exit(2);

	if(ad_verify_user(login, password)!=AD_SUCCESS) _exit(111);
	
	ad=getdefault_mailuser(login);
	if(!ad->is_complete) _exit(111);
  
	if(!setup_identity(ad)) _exit(111);
	
	execvp(argv[1],argv + 1);
	_exit(111);
}


syntax highlighted by Code2HTML, v. 0.9.1