FNIN(); struct IPC_CHANNEL *ch; GHashTable * attrs; static char 	path[] = IPC_PATH_ATTR;
FNIN(); IPC_Channel *ch; GHashTable * attrs; GCHSource *the_source = NULL; void *callback_data = client_data; static char 	path[] = IPC_PATH_ATTR;
init_client_ipc_comms(const char *child,					  gboolean (*dispatch)(IPC_Channel* source_data										   ,gpointer    user_data)){    FNIN();    struct IPC_CHANNEL *ch;    GHashTable * attrs;    static char 	path[] = IPC_PATH_ATTR;    int local_fifo_len = 2; // 2 = '/' + '\0'    local_fifo_len += strlen(child);    local_fifo_len += strlen(WORKING_DIR);    char           *commpath = (char*)ha_malloc(sizeof(char)*local_fifo_len);    sprintf(commpath, WORKING_DIR "/%s", child);    commpath[local_fifo_len - 1] = '\0';        cl_log(LOG_DEBUG, "Attempting to talk on: %s", commpath);    attrs = g_hash_table_new(g_str_hash,g_str_equal);    g_hash_table_insert(attrs, path, commpath);    ch = ipc_channel_constructor(IPC_ANYTYPE, attrs);    g_hash_table_destroy(attrs);    if (ch == NULL) {		cl_log(LOG_CRIT, "Could not access channel on: %s", commpath);    } else if (ch->ops->initiate_connection(ch) != IPC_OK) {		cl_log(LOG_CRIT, "Could not init comms on: %s", commpath);		FNRET(NULL);    }    G_main_add_IPC_Channel(G_PRIORITY_LOW,						   ch,						   FALSE, 						   dispatch,						   ch, 						   default_ipc_input_destroy);        // do some error reporting    FNRET(ch);}