@ -2,8 +2,6 @@
# undef ERR
# define ERR(...) do { printf(__VA_ARGS__); putc('\n', stdout); } while(0)
char * e_ipc_socket = NULL ;
# ifdef USE_IPC
/* local subsystem functions */
static Eina_Bool _e_ipc_cb_client_del ( void * data EINA_UNUSED , int type EINA_UNUSED , void * event ) ;
@ -17,53 +15,19 @@ static Ecore_Ipc_Server *_e_ipc_server = NULL;
int
e_ipc_init ( void )
{
char buf [ 4096 ] , buf3 [ 4096 ] ;
const char * tmp , * user , * base = NULL ;
int pid , trynum = 0 , id1 = 0 ;
tmp = eina_environment_tmp_get ( ) ;
if ( ecore_file_is_dir ( tmp ) & & ecore_file_can_write ( tmp ) )
base = tmp ;
else
ERR ( " Temp dir could not be accessed " ) ;
# ifdef _WIN32
user = getenv ( " USERNAME " ) ;
# else
user = getenv ( " USER " ) ;
# endif
setenv ( " EPHOTO_IPC_SOCKET " , " " , 1 ) ;
pid = ( int ) getpid ( ) ;
for ( trynum = 0 ; trynum < = 4096 ; trynum + + )
{
snprintf ( buf , sizeof ( buf ) , " %s/e-%s@%x " ,
base , user , id1 ) ;
if ( ! mkdir ( buf , S_IRWXU ) )
{
# ifdef USE_IPC
snprintf ( buf3 , sizeof ( buf3 ) , " %s/%i " ,
buf , pid ) ;
_e_ipc_server = ecore_ipc_server_add
( ECORE_IPC_LOCAL_SYSTEM , buf3 , 0 , NULL ) ;
if ( _e_ipc_server )
# endif
{
e_ipc_socket = strdup ( ecore_file_file_get ( buf ) ) ;
break ;
}
}
id1 = rand ( ) ;
}
# ifdef USE_IPC
int port = getpid ( ) ;
/* NOTE: windows has no getppid(), so use an envvar */
char port_str [ sizeof ( " 2147483648 " ) ] = " " ;
snprintf ( port_str , sizeof ( port_str ) , " %d " , port ) ;
setenv ( " EPHOTO_IPC_PORT " , port_str , 1 ) ;
_e_ipc_server = ecore_ipc_server_add
( ECORE_IPC_LOCAL_SYSTEM , " ephoto " , port , NULL ) ;
if ( ! _e_ipc_server )
{
ERR ( " Gave up after 4096 sockets in '%s'. All failed " , base ) ;
ERR ( " Couldn't create Ephoto IPC server port=%d " , port ) ;
return 0 ;
}
setenv ( " EPHOTO_IPC_SOCKET " , " " , 1 ) ;
setenv ( " EPHOTO_IPC_SOCKET " , buf3 , 1 ) ;
ecore_event_handler_add ( ECORE_IPC_EVENT_CLIENT_DEL ,
_e_ipc_cb_client_del , NULL ) ;
ecore_event_handler_add ( ECORE_IPC_EVENT_CLIENT_DATA ,
@ -82,7 +46,6 @@ e_ipc_shutdown(void)
_e_ipc_server = NULL ;
}
# endif
free ( e_ipc_socket ) ;
return 1 ;
}