#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include "byte.h"
#include "ipc.h"

int ipc_local(int s,char *p,int l,int *trunc)
{
  struct sockaddr_un sa;
  int dummy = sizeof sa;

  byte_zero((char *) &sa,sizeof sa);
  if (getsockname(s,(struct sockaddr *) &sa,&dummy) == -1) return -1;

  dummy = byte_chr(sa.sun_path,dummy,0);

  *trunc = 1;
  if (!l) return 0;

  if (l < (dummy + 1))
    dummy = l - 1;
  else
    *trunc = 0;

  byte_copy(p,dummy,sa.sun_path);
  p[dummy] = 0;

  return 0;
}


syntax highlighted by Code2HTML, v. 0.9.1