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 /* 00019 * Common definitions 00020 */ 00021 00022 const char *drizzle_con_uds(drizzle_con_st *con) 00023 { 00024 return con->uds_sockaddr.sun_path; 00025 } 00026 00027 void drizzle_con_set_uds(drizzle_con_st *con, const char *uds) 00028 { 00029 drizzle_con_reset_addrinfo(con); 00030 00031 if (uds == NULL || uds[0] == 0) 00032 uds= DRIZZLE_DEFAULT_UDS; 00033 00034 con->uds_sockaddr.sun_family= AF_UNIX; 00035 strncpy(con->uds_sockaddr.sun_path, uds, sizeof(con->uds_sockaddr.sun_path)); 00036 con->uds_sockaddr.sun_path[sizeof(con->uds_sockaddr.sun_path) - 1]= 0; 00037 con->uds_addrinfo.ai_family= AF_UNIX; 00038 con->uds_addrinfo.ai_socktype= SOCK_STREAM; 00039 con->uds_addrinfo.ai_protocol= 0; 00040 con->uds_addrinfo.ai_addrlen= sizeof(struct sockaddr_un); 00041 con->uds_addrinfo.ai_addr= (struct sockaddr *)&(con->uds_sockaddr); 00042 } 00043 00044 /* 00045 * Private definitions 00046 */ 00047 00048 bool drizzle_con_uses_uds(drizzle_con_st *con) 00049 { 00050 return con->uds_addrinfo.ai_addr != NULL; 00051 } 00052 00053 void drizzle_con_clone_uds(drizzle_con_st *con, drizzle_con_st *from) 00054 { 00055 memcpy(&(con->uds_addrinfo), &(from->uds_addrinfo), 00056 sizeof(struct addrinfo)); 00057 memcpy(&(con->uds_sockaddr), &(from->uds_sockaddr), 00058 sizeof(struct sockaddr_un)); 00059 con->uds_addrinfo.ai_addr= (struct sockaddr *)&(con->uds_sockaddr); 00060 }
1.6.1