Back to index

openldap  2.4.31
Functions
opensock.c File Reference
#include "portable.h"
#include <stdio.h>
#include <ac/errno.h>
#include <ac/string.h>
#include <ac/socket.h>
#include <ac/unistd.h>
#include "slap.h"
#include "back-sock.h"

Go to the source code of this file.

Functions

FILE * opensock (const char *sockpath)

Function Documentation

FILE* opensock ( const char *  sockpath)

Definition at line 40 of file opensock.c.

{
       int    fd;
       FILE   *fp;
       struct sockaddr_un sockun;

       fd = socket(PF_UNIX, SOCK_STREAM, 0);
       if ( fd < 0 ) {
              Debug( LDAP_DEBUG_ANY, "socket create failed\n", 0, 0, 0 );
              return( NULL );
       }

       sockun.sun_family = AF_UNIX;
       sprintf(sockun.sun_path, "%.*s", (int)(sizeof(sockun.sun_path)-1),
              sockpath);
       if ( connect( fd, (struct sockaddr *)&sockun, sizeof(sockun) ) < 0 ) {
              Debug( LDAP_DEBUG_ANY, "socket connect(%s) failed\n",
                     sockpath ? sockpath : "<null>", 0, 0 );
              close( fd );
              return( NULL );
       }

       if ( ( fp = fdopen( fd, "r+" ) ) == NULL ) {
              Debug( LDAP_DEBUG_ANY, "fdopen failed\n", 0, 0, 0 );
              close( fd );
              return( NULL );
       }

       return( fp );
}

Here is the caller graph for this function: