cleaner handling of optional features

SVN revision: 26084
This commit is contained in:
rephorm 2006-09-24 07:53:47 +00:00 committed by rephorm
parent 64386aa44c
commit feeca8301b
4 changed files with 19 additions and 30 deletions

View File

@ -74,8 +74,8 @@ extern "C" {
ECORE_CON_LOCAL_USER, ECORE_CON_LOCAL_USER,
ECORE_CON_LOCAL_SYSTEM, ECORE_CON_LOCAL_SYSTEM,
ECORE_CON_LOCAL_ABSTRACT, ECORE_CON_LOCAL_ABSTRACT,
ECORE_CON_REMOTE_SYSTEM ECORE_CON_REMOTE_SYSTEM,
,ECORE_CON_USE_SSL = 16 ECORE_CON_USE_SSL = 16
} Ecore_Con_Type; } Ecore_Con_Type;
#endif #endif

View File

@ -171,11 +171,8 @@ ecore_con_server_add(Ecore_Con_Type compl_type,
#endif #endif
if ((type == ECORE_CON_LOCAL_USER) || if ((type == ECORE_CON_LOCAL_USER) ||
(type == ECORE_CON_LOCAL_SYSTEM) (type == ECORE_CON_LOCAL_SYSTEM) ||
#ifdef HAVE_ABSTRACT_SOCKETS (type == ECORE_CON_LOCAL_ABSTRACT))
|| (type == ECORE_CON_LOCAL_ABSTRACT)
#endif
)
{ {
const char *homedir; const char *homedir;
struct stat st; struct stat st;
@ -236,24 +233,25 @@ ecore_con_server_add(Ecore_Con_Type compl_type,
goto error; goto error;
} }
socket_unix.sun_family = AF_UNIX; socket_unix.sun_family = AF_UNIX;
#ifdef HAVE_ABSTRACT_SOCKET
if (type == ECORE_CON_LOCAL_ABSTRACT) if (type == ECORE_CON_LOCAL_ABSTRACT)
{ {
#ifdef HAVE_ABSTRACT_SOCKET
/* . is a placeholder */ /* . is a placeholder */
snprintf(socket_unix.sun_path, sizeof(socket_unix.sun_path), ".%s", name); snprintf(socket_unix.sun_path, sizeof(socket_unix.sun_path), ".%s", name);
/* first char null indicates abstract namespace */ /* first char null indicates abstract namespace */
socket_unix.sun_path[0] = '\0'; socket_unix.sun_path[0] = '\0';
socket_unix_len = LENGTH_OF_ABSTRACT_SOCKADDR_UN(&socket_unix, name); socket_unix_len = LENGTH_OF_ABSTRACT_SOCKADDR_UN(&socket_unix, name);
#else
fprintf(stderr, "Your system does not support abstract sockets!\n");
umask(pmode);
goto error;
#endif
} }
else else
{ {
strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path)); strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix); socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
} }
#else
strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
#endif
if (bind(svr->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) if (bind(svr->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0)
{ {
if (connect(svr->fd, (struct sockaddr *)&socket_unix, if (connect(svr->fd, (struct sockaddr *)&socket_unix,
@ -425,11 +423,8 @@ ecore_con_server_connect(Ecore_Con_Type compl_type,
if ((type == ECORE_CON_REMOTE_SYSTEM) && (port < 0)) return NULL; if ((type == ECORE_CON_REMOTE_SYSTEM) && (port < 0)) return NULL;
if ((type == ECORE_CON_LOCAL_USER) || if ((type == ECORE_CON_LOCAL_USER) ||
(type == ECORE_CON_LOCAL_SYSTEM) (type == ECORE_CON_LOCAL_SYSTEM) ||
#ifdef HAVE_ABSTRACT_SOCKETS (type == ECORE_CON_LOCAL_ABSTRACT))
|| (type == ECORE_CON_LOCAL_ABSTRACT)
#endif
)
{ {
const char *homedir; const char *homedir;
int socket_unix_len; int socket_unix_len;
@ -465,23 +460,23 @@ ecore_con_server_connect(Ecore_Con_Type compl_type,
if (setsockopt(svr->fd, SOL_SOCKET, SO_REUSEADDR, &curstate, sizeof(curstate)) < 0) goto error; if (setsockopt(svr->fd, SOL_SOCKET, SO_REUSEADDR, &curstate, sizeof(curstate)) < 0) goto error;
socket_unix.sun_family = AF_UNIX; socket_unix.sun_family = AF_UNIX;
#ifdef HAVE_ABSTRACT_SOCKETS
if (type == ECORE_CON_LOCAL_ABSTRACT) if (type == ECORE_CON_LOCAL_ABSTRACT)
{ {
#ifdef HAVE_ABSTRACT_SOCKETS
/* copy name insto sun_path, prefixed by null to indicate abstract namespace */ /* copy name insto sun_path, prefixed by null to indicate abstract namespace */
snprintf(socket_unix.sun_path, sizeof(socket_unix.sun_path), ".%s", name); snprintf(socket_unix.sun_path, sizeof(socket_unix.sun_path), ".%s", name);
socket_unix.sun_path[0] = '\0'; socket_unix.sun_path[0] = '\0';
socket_unix_len = LENGTH_OF_ABSTRACT_SOCKADDR_UN(&socket_unix, name); socket_unix_len = LENGTH_OF_ABSTRACT_SOCKADDR_UN(&socket_unix, name);
#else
fprintf(stderr, "Your system does not support abstract sockets!\n");
goto error;
#endif
} }
else else
{ {
strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path)); strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix); socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
} }
#else
strncpy(socket_unix.sun_path, buf, sizeof(socket_unix.sun_path));
socket_unix_len = LENGTH_OF_SOCKADDR_UN(&socket_unix);
#endif
if (connect(svr->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) goto error; if (connect(svr->fd, (struct sockaddr *)&socket_unix, socket_unix_len) < 0) goto error;
svr->path = strdup(buf); svr->path = strdup(buf);

View File

@ -27,13 +27,9 @@ typedef enum _Ecore_Con_Type
{ {
ECORE_CON_LOCAL_USER, ECORE_CON_LOCAL_USER,
ECORE_CON_LOCAL_SYSTEM, ECORE_CON_LOCAL_SYSTEM,
#ifdef HAVE_ABSTRACT_SOCKETS
ECORE_CON_LOCAL_ABSTRACT, ECORE_CON_LOCAL_ABSTRACT,
#endif ECORE_CON_REMOTE_SYSTEM,
ECORE_CON_REMOTE_SYSTEM ECORE_CON_USE_SSL = 16
#if USE_OPENSSL
,ECORE_CON_USE_SSL = 16
#endif
} Ecore_Con_Type; } Ecore_Con_Type;
struct _Ecore_Con_Client struct _Ecore_Con_Client

View File

@ -184,13 +184,11 @@ ecore_dbus_address_connect(Ecore_DBus_Address *addr, const void *data)
type = ECORE_CON_LOCAL_SYSTEM; type = ECORE_CON_LOCAL_SYSTEM;
name = ecore_dbus_address_value_get(addr, "path"); name = ecore_dbus_address_value_get(addr, "path");
#ifdef HAVE_ABSTRACT_SOCKETS
if (!name) if (!name)
{ {
name = ecore_dbus_address_value_get(addr, "abstract"); name = ecore_dbus_address_value_get(addr, "abstract");
type = ECORE_CON_LOCAL_ABSTRACT; type = ECORE_CON_LOCAL_ABSTRACT;
} }
#endif
if (!name) return NULL; if (!name) return NULL;
port = -1; port = -1;