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 }