int e_plugin_lib_enable(EPlugin *ep, int enable) { EShell *shell = e_shell_get_default(); if (shell) { g_signal_handlers_disconnect_by_func(shell, G_CALLBACK (eee_calendar_state_changed), NULL); if (enable) g_signal_connect(shell, "notify::online", G_CALLBACK (eee_calendar_state_changed), NULL); } xr_init(); g_type_class_ref(EEE_TYPE_ACCOUNT); g_type_class_ref(EEE_TYPE_ACCOUNTS_MANAGER); if (getenv("EEE_EVO_DEBUG")) { xr_debug_enabled = XR_DEBUG_CALL; } g_debug("** EEE ** Starting 3e Evolution Plugin %s", PACKAGE_VERSION); g_debug("** EEE ** Please report bugs to <%s>", PACKAGE_BUGREPORT); bindtextdomain(GETTEXT_PACKAGE, PROGRAMNAME_LOCALEDIR); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); textdomain(GETTEXT_PACKAGE); return 0; }
int main(int argc, char **argv) { xr_init(); bool eval = false; bool verbose = false; int c; while ((c = getopt(argc, argv, "ev")) != -1) { switch (c) { case 'e': eval = true; break; case 'v': verbose = true; break; } } XR obj_list; if (optind < argc) { char *file = argv[optind]; obj_list = xr_parse_dump_file(file); } else { obj_list = xr_parse_dump_from_stdin(); } if (verbose) log("# Objs: %ld\n", xrListLen(obj_list)); XR root_mt = xrMTable(root); assert(root_mt); /* Lookup the "init" method */ XR init_m = xrClosureAt(send(root_mt, s_at, xr_sym("init")), 0); if (verbose) qsend(init_m, "show"); if (!eval) { FILE *fp = fopen("blahtestsymfile", "w"); qsend(root, "pack", fp); fclose(fp); return 0; } if (verbose) log("##############\nRunning VM\n##############\n"); xr_run_method(init_m); return 0; }
xr_client_conn* xr_client_new(GError** err) { g_return_val_if_fail(err == NULL || *err == NULL, NULL); xr_trace(XR_DEBUG_CLIENT_TRACE, "(err=%p)", err); xr_init(); xr_client_conn* conn = g_new0(xr_client_conn, 1); conn->client = g_socket_client_new(); conn->headers = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); conn->transport = XR_CALL_XML_RPC; return conn; }
xr_server* xr_server_new(const char* cert, const char* privkey, int threads, GError** err) { xr_trace(XR_DEBUG_SERVER_TRACE, "(cert=%s, threads=%d, err=%p)", cert, threads, err); GError* local_err = NULL; g_return_val_if_fail(threads > 0 && threads < 1000, NULL); g_return_val_if_fail (err == NULL || *err == NULL, NULL); xr_init(); xr_server* server = g_new0(xr_server, 1); server->secure = !!cert; server->service = g_threaded_socket_service_new(threads); g_signal_connect(server->service, "run", (GCallback)_xr_server_service_run, server); if (cert) { gchar *cert_and_privkey = g_strconcat(cert, privkey, NULL); server->cert = g_tls_certificate_new_from_pem(cert_and_privkey, -1, &local_err); g_free(cert_and_privkey); if (local_err) { g_propagate_prefixed_error(err, local_err, "Certificate load failed: "); goto err0; } } server->sessions = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, (GDestroyNotify)xr_servlet_free_fini); g_static_rw_lock_init(&server->sessions_lock); server->sessions_cleaner = g_thread_create((GThreadFunc)sessions_cleaner_func, server, TRUE, NULL); if (server->sessions_cleaner == NULL) goto err1; return server; err1: g_hash_table_destroy(server->sessions); g_static_rw_lock_free(&server->sessions_lock); if (server->cert) g_object_unref(server->cert); err0: g_object_unref(server->service); g_free(server); return NULL; }