libdrizzle Developer Documentation

libdrizzle/conn_uds.c
Go to the documentation of this file.
00001 /*
00002  * Drizzle Client & Protocol Library
00003  *
00004  * Copyright (C) 2008 Eric Day (eday@oddments.org)
00005  * All rights reserved.
00006  *
00007  * Use and distribution licensed under the BSD license.  See
00008  * the COPYING file in this directory for full text.
00009  */
00010 
00016 #include "common.h"
00017 
00018 const char *drizzle_con_uds(const drizzle_con_st *con)
00019 {
00020   if (con->socket_type == DRIZZLE_CON_SOCKET_UDS)
00021   {
00022     if (con->socket.uds.sockaddr.sun_path[0] != 0)
00023       return con->socket.uds.sockaddr.sun_path;
00024 
00025     if (con->options & DRIZZLE_CON_MYSQL)
00026       return DRIZZLE_DEFAULT_UDS_MYSQL;
00027 
00028     return DRIZZLE_DEFAULT_UDS;
00029   }
00030 
00031   return NULL;
00032 }
00033 
00034 void drizzle_con_set_uds(drizzle_con_st *con, const char *uds)
00035 {
00036   drizzle_con_reset_addrinfo(con);
00037 
00038   con->socket_type= DRIZZLE_CON_SOCKET_UDS;
00039 
00040   if (uds == NULL)
00041     uds= "";
00042 
00043   con->socket.uds.sockaddr.sun_family= AF_UNIX;
00044   strncpy(con->socket.uds.sockaddr.sun_path, uds,
00045           sizeof(con->socket.uds.sockaddr.sun_path));
00046   con->socket.uds.sockaddr.sun_path[sizeof(con->socket.uds.sockaddr.sun_path) - 1]= 0;
00047 
00048   con->socket.uds.addrinfo.ai_family= AF_UNIX;
00049   con->socket.uds.addrinfo.ai_socktype= SOCK_STREAM;
00050   con->socket.uds.addrinfo.ai_protocol= 0;
00051   con->socket.uds.addrinfo.ai_addrlen= sizeof(struct sockaddr_un);
00052   con->socket.uds.addrinfo.ai_addr= (struct sockaddr *)&(con->socket.uds.sockaddr);
00053 }